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
< ?php
add_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
< ?php
add_action( 'send_headers', 'send_headers_example' );
function send_headers_example() {
header( 'X-UA-Compatible: IE=edge, chrome=1' );
}
? >

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
< ?php
add_action( 'after_switch_theme', 'after_switch_theme_example' );
function after_switch_theme_example() {
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
< ?php
add_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;
}
}
}
? >

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
< ?php
add_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" /> ';
}
? >

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
< ?php
add_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} --> ";
}
}
? >

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
< ?php
add_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
< ?php
add_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> ';
}
? >

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
< ?php
add_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.

Advertisement

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
< ?php
add_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 );
}
? >

Si quieres, puedes reemplazar las variables $subject y $message con mensajes mas formales.