50 Actions (acciones) de WordPress – 50 ejemplos (del 1 al 10)
Manejar la Inicialización de WordPress
Este action, en resumen, se dispara justo después de que todo está listo excepto los encabezados. Y es por esto por lo que este action es probablemente el action más popular de WordPress de todos los tiempos – porque puedes enganchar (hook) casi todo a el.
Cambiar un Poco las Rewrite Rules por Defecto
Como usuario Turco de WordPress, me parece extraño (y un poco frustrante) que que WordPress no nos permita cambiar la base de la URL para las páginas de autor, resultados de búsquedas, o páginas de archivo paginadas e el panel de administración.
El fragmento de código siguiente, me ayudó con este asunto:
|
01
02
03
04
05
06
07
08
09
10
11
12
|
<?phpadd_action( 'init', 'init_example' );function init_example() { global $wp_rewrite; $wp_rewrite->author_base = 'profile'; $wp_rewrite->search_base = 'find'; $wp_rewrite->pagination_base = 'p';}?> |
Guay, ¿he? (por supuesto, reemplacé las palabras Turcas por ‘profile’, ‘find’ y ‘p’ para hacerlo más claro).
Enviando los Encabezados HTTP
Esto no necesita una introducción ya que su nombre se explica por si mismo: Este pequeño action nos permite establecer los encabezados HTTP a enviar!
Hacer que Internet Explorer Use el Último Entorno de Renderizado
El meta tag X-UA-Compatible hace que Internet Explorer use el entorno de renderizado específico para la página web. Si lo estableces a "edge", Internet Explorer utilizará el último entorno de renderizado; sin embargo, rompe la validación HTML si se usa con el Frame de Google Chome.
Afortunadamente, no estamos limitados al uso de la etiqueta <meta>: También podemos usar los encabezados HTTP. Y el action send_headers es perfecto para esta labor:
|
01
02
03
04
05
06
07
08
09
10
11
|
<?phpadd_action( 'send_headers', 'send_headers_example' );function send_headers_example() { header( 'X-UA-Compatible: IE=edge,chrome=1' );}// Example Source: http://codex.wordpress.org/Plugin_API/Action_Reference/send_headers?> |
Cambio de Temas
Si quieres ejecutar algunos mandatos después de cambiar de tema in WordPress, puedes contar con el action after_switch_theme.
Recargar las Rewrite Rules Después de Cambiar un Tema
Vamos a hacerlo de una manera fácil: ¿Cómo recargas las rewrite rules después de cambiar a un nuevo tema, ya que el nuevo tema tiene nuevos tipos de post personalizados?
Bien, usa el siguiente código:
|
01
02
03
04
05
06
07
08
09
10
11
|
<?phpadd_action( 'after_switch_theme', 'after_switch_theme_example' );function after_switch_theme_example() { flush_rewrite_rules();}// Example Source: http://wpdevsnippets.com/flush-rewrite-rules/?> |
Fácil, ¿verdad?
Por alguna razón, no puedo puedo hacerlo funcionar enganchando la función flush_rewrite_rules() al action after_switch_theme y no se porqué – si tu tienes la respuesta, dímelo en los comentarios.
Añadir Columnas Personalizadas a la Lista de Posts
Este action nos permite crear columnas adicionales a la lista de entradas en la página de administración «Todas las entradas».
Mostrar el Número de Adjuntos de Cada Entrada en una Columna
Imagina que necesitas ver cuántos ficheros has adjuntado a cada una de las entradas porque, digo yo, quieres hacer una doble comprobación de que has adjuntado 10 imágenes de galería a cada artículo. En lugar de contar uno a uno in la librería de medios, puedes añadir una columna extra al listado en la página «Todas la entradas» así:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?phpadd_filter( 'manage_posts_columns', 'manage_posts_columns_example', 5 );add_action( 'manage_posts_custom_column', 'manage_posts_custom_column_example', 5, 2 );function manage_posts_columns_example( $columns ) { $columns['post_attachments'] = __( 'Attached', 'theme-name' ); return $columns;}function manage_posts_custom_column_example( $column_name, $post_id ) { if( 'post_attachments' == $column_name ) { $attachments = get_children( array( 'post_parent' => $post_id ) ); $count = count( $attachments ); if( $count != 0 ) { echo $count; } }}// Example Source: http://wpsnipp.com/index.php/functions-php/display-post-attachment-count-in-admin-column/?> |
Este es un ejemplo para un escenario muy específico. Pero recuerda lo que has visto en Tus+ Code – ¡nunca sabes lo que vas a necesitar!
Trabajando con el <head> de las Páginas de Administración
De vez en cuando podríamos necesitar inyectar cosas dentro del <head> de las páginas de nuestro panel de administración. Y el action admin_head ¡hace exactamente eso!
Mostrar un Favicon Diferente en el Back End
Este sencillo y rápido ejemplo demuestra cómo inyectar el código HTML necesario para insertar un «favicon» en el <head> de tu panel de administración fácilmente.
|
01
02
03
04
05
06
07
08
09
10
11
|
<?phpadd_action( 'admin_head', 'admin_head_example' );function admin_head_example() { echo '<link rel="shortcut icon" type="image/x-icon" href="' . get_bloginfo('template_directory') . '/images/admin-favicon.ico" />';}// Example Source: http://wpdevsnippets.com/wp-admin-custom-favicon/?> |
Pon un fichero admin-favicon.ico en el directorio /images/ de tu tema y ¡ya está listo!
Inyectar Código en la Función wp_footer()
Este action se llama cundo la función con el mismo nombre wp_footer() se ejecuta. Puedes usarla para personalizar la salida de la función.
Mostrar un Informe de Rendimiento Ligero para los Administradores
¿Quieres ver un informe rápido de cuántas consultas ejecuta tus páginas y cuánta memoria usan? Este código te ayudará con eso:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
<?phpadd_action( 'wp_footer', 'wp_footer_example' );function wp_footer_example() { $stat = sprintf( '%d queries in %.3f seconds, using %.2fMB memory', get_num_queries(), timer_stop( 0, 3 ), memory_get_peak_usage() / 1024 / 1024 ); if( current_user_can( 'manage_options' ) ) { echo "<!-- {$stat} -->"; }}// Example Source: http://wordpress.stackexchange.com/a/1866?> |
Ahora verás algo de información sobre tus consultas en el código fuente de tus páginas web. No te preocupes: Los que no son administradores no verán esto.
Manejando la cola de los Script de Frontend
Esta es una de las acciones que es necesario saber si estás trabajando con temas: La acción wp_enqueue_scripts maneja el proceso de la cola de scripts y estilos en el font-end.
Uso Correcto de la Función wp_enqueue_script()
Hay varias formas de encolar scripts y estilos en el font-end, pero solo hay una forma correcta de hacerlo.
|
01
02
03
04
05
06
07
08
09
10
11
12
|
<?phpadd_action( 'wp_enqueue_scripts', 'wp_enqueue_scripts_example' );function wp_enqueue_scripts_example() { // you can enqueue scripts... wp_enqueue_script( 'my-script', get_stylesheet_directory_uri() . '/scripts/my-script.js' ); // ...and styles, too! wp_enqueue_style( 'my-style', get_stylesheet_directory_uri() . '/styles/my-style.css' );}?> |
Crear Avisos en el Panel de Administración
La acción admin_notices es la responsable de todos los avisos, errores y otros menajes que se muestran en la cabecera de las páginas de administración. Puedes utilizarla para mostrar tus propios mensajes también.
Avisar a los Usuarios que han Accedido Sobre el Mantenimiento de la Web
Suponte que estás trasladando de servidor y necesitas informar a tus autores sobre esta situación: ¡No podrán crear artículos! Puedes bloquear el panel de administración completo a los usuario que no son administradores, o puedes mostrar un mensaje como este:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
<?phpadd_action( 'admin_notices', 'admin_notices_example' );function admin_notices_example() { echo '<div class="error"> <p>We are performing website maintenance. Please don\'t make any changes in your posts until further notice!</p> </div>';}// Example Source: http://wpsnippy.com/show-notification-message-wordpress-admin-pages/?> |
Aqui hemos utilizado la clase «error». Si quieres un borde verde (que se parecerá más a un mensaje de validación), puedes usar la clase «updated».
Manejar la Inicialización de Widgets
Los widgets WordPress son un sistema excelente que nos permite a los desarrolladores crear y editar partes de nuestras webs. Y la acción widgets_init nos permite modificar el comportamiento del widget si es necesario.
Prevenir la Carga de los Widgets por Defecto de WordPress
Por alguna razón, puedes querer deshabilitar completamente el uso de los widgets por defecto de WordPress. Si este es el caso, el código de abajo te ayudará a eliminar completamente esos widgets de tu instalación de WordPress:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
<?phpadd_action( 'widgets_init', 'widgets_init_example' );function widgets_init_example() { unregister_widget( 'WP_Widget_Pages' ); unregister_widget( 'WP_Widget_Calendar' ); unregister_widget( 'WP_Widget_Archives' ); unregister_widget( 'WP_Widget_Links' ); unregister_widget( 'WP_Widget_Meta' ); unregister_widget( 'WP_Widget_Search' ); unregister_widget( 'WP_Widget_Text' ); unregister_widget( 'WP_Widget_Categories' ); unregister_widget( 'WP_Widget_Recent_Posts' ); unregister_widget( 'WP_Widget_Recent_Comments' ); unregister_widget( 'WP_Widget_RSS' ); unregister_widget( 'WP_Widget_Tag_Cloud' );}?> |
Por supuesto, puedes comentar o eliminar las lineas que permiten que se carguen algunos widgets.
Eliminar Usuarios WordPress
¿Necesitas hacer cosas cada vez que se elimina un usuario? El delete_useres tu chicho: se lanza después de que es eliminado un usuario.
Enviar un mail al pobre chico después de eliminar su cuenta
Si tienes una web que ocasionalmente atrae a mala gente y necesitas eliminar usuarios frecuentemente, podrías considerar que sepan que sus cuentas han sido borradas. El siguiente código te ayudará:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
<?phpadd_action( 'delete_user', 'delete_user_example' );function delete_user_example( $user_id ) { global $wpdb; $user_obj = get_userdata( $user_id ); $email = $user_obj->user_email; $headers = 'From: ' . get_bloginfo( 'name' ) . ' <' . get_bloginfo( 'admin_email' ) . '>' . "\r\n"; $subject = 'You are being deleted, brah'; $message = 'Your account at ' . get_bloginfo( 'name' ) . ' has been deleted because of your totally uncool behaviors.'; wp_mail( $email, $subject, $message, $headers );}// Example Source: http://codex.wordpress.org/Plugin_API/Action_Reference/delete_user?> |
Si quieres, puedes reemplazar las variables $subject y $message con mensajes mas formales.
