Spanish (Español) translation by Eva Collados Pascual (you can also view the original English article)
Si te acabas de unir a nosotros, actualmente estamos revisando 50 acciones de WordPress, de entre las muchas existentes. En el último artículo vimos de la 21 a la 30, así que en esta entrada continuaremos explorando la siguiente ronda de acciones.
Si no lo has hecho todavía, te recomiendo que vuelvas atrás te leas nuestra introducción y después leas el siguiente artículo de manera que te pongas rápidamente al día de todo lo que hemos visto hasta la fecha.
Dicho esto, ¡avancemos!
Controlar el código JavaScript predeterminado
WordPress tiene muchos scripts en su núcleo que podemos cargar. La acción wp_default_scripts nos permite interactuar con los archivos JavaScript predeterminados.
Eliminar "jQuery Migrate" en un sitio web WordPress
Si usas código jQuery y estás totalmente seguro de que tu código es compatible con la versión jQuery 1.9 o posterior, no necesitarás el plugin jQuery Migrate para dar soporte a código jQuery obsoleto. Aquí tienes cómo puedes eliminar su registro:
1 |
<?php
|
2 |
|
3 |
add_action( 'wp_default_scripts', 'wp_default_scripts_example' ); |
4 |
function wp_default_scripts_example( &$scripts ) { |
5 |
|
6 |
if ( ! is_admin() ) { |
7 |
|
8 |
$scripts->remove( 'jquery' ); |
9 |
$scripts->add( 'jquery', false, array( 'jquery-core' ) ); |
10 |
|
11 |
}
|
12 |
|
13 |
}
|
14 |
|
15 |
// Example Source: https://aahacreative.com/2013/08/05/remove-jquery-migrate-wordpress-36/
|
16 |
|
17 |
?>
|
Pero para asegurarte, comprueba cualquier salida en tu frontend relacionada con jQuery y asegúrate de que todavía funcionan. Porque no querrás romper tu sitio web, ¿no?
El <head> de tu front-end
Esta acción se dispara en la función wp_head() para que puedas insertar "cosas" en el elemento <head> del front-end de las páginas de tu sitio.
Utilizar Open Graph en tu sitio web
Open Graph es un importante protocolo que ayuda a que chicos grandes como Facebook, Google, y Twitter entiendan tus páginas. Si proporcionas información mediante el protocolo Open Graph, podrás definir las imágenes destacadas, los títulos, los extracto y similares para tus publicaciones en redes sociales, y ayudarles a crear datos estructurados y válidos para tus páginas.
Veamos cómo podemos utilizar este protocolo e inyectar metadatos relacionados con Open Graph en el <head> de las páginas de nuestro sitio:
1 |
<?php
|
2 |
|
3 |
add_action( 'wp_head', 'wp_head_example' ); |
4 |
|
5 |
function wp_head_example() { |
6 |
global $post; |
7 |
|
8 |
// default image
|
9 |
$site_logo = get_stylesheet_directory_uri() . '/images/logo.png'; |
10 |
|
11 |
// homepage
|
12 |
if ( is_home() ) { |
13 |
echo '<meta property="og:type" content="website" />'; |
14 |
echo '<meta property="og:url" content="' . get_bloginfo( 'url' ) . '" />'; |
15 |
echo '<meta property="og:title" content="' . esc_attr( get_bloginfo( 'name' ) ) . '" />'; |
16 |
echo '<meta property="og:image" content="' . $site_logo . '" />'; |
17 |
echo '<meta property="og:description" content="' . esc_attr( get_bloginfo( 'description' ) ) . '" />'; |
18 |
}
|
19 |
|
20 |
// single post or page
|
21 |
elseif ( is_singular() ) { |
22 |
echo '<meta property="og:type" content="article" />'; |
23 |
echo '<meta property="og:url" content="' . get_permalink() . '" />'; |
24 |
echo '<meta property="og:title" content="' . esc_attr( get_the_title() ) . '" />'; |
25 |
if ( has_post_thumbnail( $post->ID ) ) { |
26 |
$image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'large' ); |
27 |
echo '<meta property="og:image" content="' . esc_attr( $image[0] ) . '" />'; |
28 |
} else |
29 |
echo '<meta property="og:image" content="' . $site_logo . '" />'; |
30 |
echo '<meta property="og:description" content="' . esc_attr( get_the_excerpt() ) . '" />'; |
31 |
}
|
32 |
}
|
33 |
|
34 |
// Example Source: http://wpdevsnippets.com/set-opengraph-meta-tags-fix-facebook-share/
|
35 |
|
36 |
?>
|
Inicializando el tema
Cada vez que los archivos de un tema han sido cargados para una página de WordPress, la acción after_setup_theme es disparada. Como es invocada en cada solicitud de página, puedes enganchar funciones relacionadas con el tema en esta acción.
Configurar características WordPress específicas del tema
Existen formas para habilitar características de WordPress para temas como puedan ser los formatos de entrada o las imágenes destacadas, pero la forma correcta sería crear una función para ellas y enganchar la función a la acción after_setup_theme.
1 |
<?php
|
2 |
|
3 |
add_action( 'after_setup_theme', 'after_setup_theme_example' ); |
4 |
|
5 |
function after_setup_theme_example() { |
6 |
|
7 |
add_editor_style(); |
8 |
add_theme_support( 'post-formats', array( 'video', 'gallery' ) ); |
9 |
add_theme_support( 'post-thumbnails' ); |
10 |
|
11 |
}
|
12 |
|
13 |
?>
|
Ahora nuestro tema puede tener imágenes destacadas, podemos publicar vídeos o galerías, y nuestro "Editor visual" puede tener su propio archivo para los estilos para que tenga un aspecto similar al front-end.
Añadir columnas personalizadas en el listado de la biblioteca de medios
La acción manage_media_custom_column nos ayuda a añadir columnas personalizadas al listado de archivos subidos a la Biblioteca de medios.
Mostrar el ID de cada archivo cargado en una columna
Yo odio el proceso de tener que buscar el ID de una imagen destacada que debe ser excluida de una galería en la misma entrada. Lo detesto realmente. Por fortuna, encontré este fragmento de código que me mostraba los IDs de los archivos cargados en la Biblioteca de medios:
1 |
<?php
|
2 |
|
3 |
add_filter( 'manage_media_columns', 'manage_media_columns_example' ); |
4 |
add_action( 'manage_media_custom_column', 'manage_media_custom_column_example', 10, 2 ); |
5 |
|
6 |
function manage_media_columns_example( $columns ) { |
7 |
$columns[ 'wps_post_attachments_id' ] = __( 'ID', 'theme-name' ); |
8 |
return $columns; |
9 |
}
|
10 |
|
11 |
function manage_media_custom_column_example( $column_name, $attachment_id ){ |
12 |
|
13 |
if ( 'wps_post_attachments_id' === $column_name ) { |
14 |
echo $attachment_id; |
15 |
}
|
16 |
}
|
17 |
|
18 |
// Example Source: http://wpsnipp.com/index.php/functions-php/media-library-admin-columns-with-attachment-id/
|
19 |
|
20 |
?>
|
¡Espero que te guste!
Transición del estado de los comentarios
Cada vez que cambia el estado de un comentario ('aprobado', 'no aprobado', 'spam' o 'eliminar'), se disparará un action hook denominado transition_comment_status. Después de esto, se invocará otra acción con variables en su nombre: comment_(old_status)_to_(new_status). Veamos cómo funciona la segunda acción.
Enviar el comentario por email tras aprobar el comentario
Imagina que evitas publicar comentarios antes de aprobarlos manualmente; pero también necesitas informar a tus usuarios en el momento en que sus comentarios sean aprobados. Puedes enviarles un email con la buena noticia usando estas líneas de código en forma de plugin:
1 |
<?php
|
2 |
|
3 |
add_action( 'comment_unapproved_to_approved', 'comment_unapproved_to_approved_example' ); |
4 |
|
5 |
function comment_unapproved_to_approved_example( $comment ) { |
6 |
|
7 |
$commenter_email = $comment->comment_author_email; |
8 |
$commenter_name = $comment->comment_author; |
9 |
$post_url = get_comment_link( $comment ); |
10 |
$subject = "Your comment is up!"; |
11 |
$message = "Hello $commenter_name,\n\nYour comment has been approved!You can view it below:\n\n$post_url\n\nThank you for sharing your ideas with us!"; |
12 |
|
13 |
wp_mail( $commenter_email, $subject, $message ); |
14 |
}
|
15 |
|
16 |
?>
|
Ahora los usuarios que hayan realizado un comentario serán informados en cuanto este sea publicado. A partir de ese momento, es posible que vuelvan a visitar tu blog para ver su comentario y leer los de otros usuarios. Una forma fantástica (y sencilla) de obtener una nueva visita de estos usuarios.
Gestionar la carga de las plantillas de página
WordPress usa lo que llamamos "plantillas de página" para mostrar los distintos tipos de página, por ejemplo, los artículos, la página de inicio, la página de error 404, los resultados de búsqueda, la página de archivos, etc. Y la acción template_redirect se dispara cuando WordPress decide qué plantilla se usará.
Redireccionar el permalink del post si sólo existe un resultado
¿Quieres ahorrarle a tus usuarios un clic? El siguiente código te ayudará de una forma singular: si solo existe un post o entrada en los resultados de búsqueda, el usuario verá la página de la entrada en lugar de una página de resultados.
Un truco muy aseado en mi opinión:
1 |
<?php
|
2 |
|
3 |
add_action( 'template_redirect', 'template_redirect_example' ); |
4 |
function template_redirect_example() { |
5 |
|
6 |
if ( is_search() ) { |
7 |
|
8 |
global $wp_query; |
9 |
|
10 |
if ( 1 == $wp_query->post_count && 1 == $wp_query->max_num_pages ) { |
11 |
wp_redirect( get_permalink( $wp_query->posts['0']->ID ) ); |
12 |
exit; |
13 |
}
|
14 |
|
15 |
}
|
16 |
|
17 |
}
|
18 |
|
19 |
// Example Source: http://www.elegantthemes.com/blog/tips-tricks/eight-useful-code-snippets-for-wordpress
|
20 |
|
21 |
?>
|
Ahora, si alguien busca "guacamole" y sólo hay una entrada que menciona guacamole, el usuario será redirigido automáticamente hacia esa entrada.
Fantástico, ¿eh?
Gestionar los feeds de WordPress
Los feeds son una de las características más antiguas de WordPress y todavía funcionan como un reloj. Con la acción do_feed (y otras acciones relevantes), puedes controlar cómo se gestionan los feeds.
Eliminar por completo los feeds WordPress
Eliminar los enlaces del feed hace que los feeds sean inaccesibles casi para todo el mundo, pero si una visita sabe que estás usando WordPress y conocen cómo funcionan los feeds en WordPress, podrían simplemente intentar añadir /feed/ al final de tu URL y acceder a él. ¿Y si tuvieses que deshabilitar los feeds? Este fragmento de código te ayudará a deshabilitar por completo los feeds:
1 |
<?php
|
2 |
|
3 |
add_action( 'do_feed', 'do_feed_example', 1 ); |
4 |
add_action( 'do_feed_atom', 'do_feed_example', 1 ); |
5 |
add_action( 'do_feed_rdf', 'do_feed_example', 1 ); |
6 |
add_action( 'do_feed_rss2', 'do_feed_example', 1 ); |
7 |
add_action( 'do_feed_rss', 'do_feed_example', 1 ); |
8 |
|
9 |
function do_feed_example() { |
10 |
wp_die( __( '<h1>Feed not available, please visit our <a href="' . get_bloginfo( 'url' ) . '">Home Page</a>!</h1>' ) ); |
11 |
}
|
12 |
|
13 |
// Example Source: http://wpdevsnippets.com/disable-rss-feed/
|
14 |
|
15 |
?>
|
Fácil, ¿no?
Manipular la barra de herramientas
La barra de herramientas (conocida como Admin Bar) fué introducida en la versión 3.1 de WordPress y ha sido diana tanto de odio como amor – algunos quieren eliminarla por completo, y otros no pueden vivir sin ella. Sea como sea, la acción admin_menu_bar es el gancho principal para la barra y se encarga de cargar en ella los elementos necesarios.
Mostrar siempre la barra de herramientas a todo el mundo
La barra de herramientas es muy útil a no ser que desmerezca mucho el diseño de tu sitio web – puedes usar el campo de búsqueda que integra y añadir un nuevo elemento de menú como un enlace para iniciar sesión o un enlace hacia la página de contacto.
El siguiente fragmento de código muestra una barra de herramientas que se muestra siempre, con independencia de que el usuario haya iniciado sesión o no.
1 |
<?php
|
2 |
|
3 |
add_action( 'admin_bar_menu', 'admin_bar_menu_example' ); |
4 |
add_filter( 'show_admin_bar', '__return_true' , 1000 ); |
5 |
|
6 |
function admin_bar_menu_example( $wp_admin_bar ) { |
7 |
|
8 |
if ( ! is_user_logged_in() ) { |
9 |
|
10 |
$wp_admin_bar->add_menu( array( 'title' => __( 'Log In' ), 'href' => wp_login_url() ) ); |
11 |
$wp_admin_bar->add_menu( array( 'title' => __( 'Contact' ), 'href' => 'http://www.mywebsite.com/contact/' ) ); |
12 |
|
13 |
}
|
14 |
|
15 |
}
|
16 |
|
17 |
// Example source: http://blog.ftwr.co.uk/archives/2011/01/05/always-show-admin-bar/
|
18 |
|
19 |
?>
|
¿Has visto qué fácil es? Ahora tus visitas podrán ver los enlaces "Iniciar sesión" y "Contacto" junto con el campo de búsqueda.
Controlar el widget predeterminado "Categorías"
Puedes mostar una lista de categorías con la función wp_list_categories(). Y esta acción (que tiene el mismo nombre que la función) nos ayuda a personalizar la salida del widget.
Eliminar el atributo title de los enlaces de categoría
Si crees que no necesitas el atributo title en los enlaces de categoría del widget; puedes eliminarlos usando estas líneas de código en tu proyecto:
1 |
<?php
|
2 |
|
3 |
add_action( 'wp_list_categories', 'wp_list_categories_example' ); |
4 |
|
5 |
function wp_list_categories_example() { |
6 |
return preg_replace( '` title="(.+)"`', '', $output ); |
7 |
}
|
8 |
|
9 |
// Example Source: http://wpsnipp.com/index.php/cat/remove-title-attribute-from-wp_list_categories/
|
10 |
|
11 |
?>
|
Gestionar el formulario de búsqueda antes de que sea procesado
Para usar la funcionalidad de búsqueda nativa, tienes que usar la función get_search_form(). Si quieres jugar con esta función antes de que muestre su salida, la función pre_get_search_form() en tu tipo.
Anteponer texto informativo antes del campo de búsqueda
Imagina que tienes un blog en el que valoras cientos o miles de productos comerciales. Para informar a tus usuarios de que pueden introducir códigos de producto para localizar más rápidamente aquel producto que buscan, usa el siguiente código para añadir texto informativo antes del campo de búsqueda.
1 |
<?php
|
2 |
|
3 |
add_action( 'pre_get_search_form', 'pre_get_search_form_example' ); |
4 |
function pre_get_search_form_example( $form ) { |
5 |
echo '<div class="search-info">Enter your barcode number below to access the item you want.</div>'; |
6 |
}
|
7 |
|
8 |
?>
|
Observa que puedes usar este ejemplo junto con el anterior ejemplo sobre la acción template_redirect de manera que los usuarios introduzcan un número de código, y automáticamente sean dirigidos a su página.
Fin de la cuarta parte
Acabamos de revisar en este artículo nuestra cuarta ronda del total de las 50 acciones que vamos a ver en esta serie. Espero que te haya gustado y que hayas aprendido algo nuevo. Juega con lo que hemos visto y nos vemos en el siguiente artículo.
También me gustaría conocer tu opinión. ¿Qué te han parecido estas acciones? Envíanos tu comentario aquí abajo. ¡Si te ha gustado el artículo, no olvides compartirlo!



