Qué son las acciones en WordPress y cómo usar add_action()

WordPress es una plataforma muy flexible que permite ampliar su funcionalidad con distintos ganchos y funciones. Entre ellas, una de las más utilizadas es add_action(), que te permite añadir comportamientos personalizados sin tocar los archivos del núcleo de WordPress.

En este artículo verás cómo usar add_action() de WordPress para conectar tu código con las acciones predefinidas dentro de la plataforma. Cuando entiendas bien cómo funciona, podrás ampliar las posibilidades de tu web y adaptarla mejor a lo que necesitas.

Las acciones de WordPress son ganchos que ejecutan código personalizado en momentos específicos durante la ejecución de WordPress. Estos ganchos de acción activan funciones cuando ocurren ciertos eventos, como cargar el encabezado o publicar una entrada.

Los ganchos de WordPress se dividen en dos tipos: acciones y filtros. Las acciones permiten añadir o modificar comportamientos al asociar funciones a eventos concretos, mientras que los filtros sirven para modificar los datos mientras WordPress los procesa.

Por ejemplo, con add_action() puedes hacer que tu código se ejecute justo cuando ocurre un evento, como al publicar una entrada. En cambio, con add_filter() puedes modificar el contenido de esa entrada antes de que se muestre en pantalla.

Cómo funcionan las acciones de WordPress

Las acciones de WordPress permiten ejecutar funciones personalizadas en momentos concretos del ciclo de carga de la plataforma. Con add_action(), puedes conectar tu código a esos eventos para que se ejecute justo cuando corresponde.

Por ejemplo, si quieres añadir un script a la cabecera de tu sitio, puedes usar el gancho wp_head. Al asociar tu función a este evento, WordPress ejecutará tu código automáticamente cada vez que se cargue la cabecera de la página.

Añadir acciones en WordPress

Puedes añadir acciones en WordPress de varias formas, según dónde quieras colocar tu código personalizado:

  • Archivo functions.php del tema: es la opción más habitual si los cambios dependen del tema. Solo tienes que abrir el archivo functions.php del tema activo y añadir ahí tu código con add_action().
  • Archivo functions.php del tema hijo: si creaste un tema hijo, puedes añadir tus acciones en su archivo functions.php. Es una buena opción si quieres mantener los cambios separados del tema principal y evitar que se pierdan al actualizarlo.
  • Plugin personalizado: si quieres que tu código funcione independientemente del tema, lo mejor es crear un plugin propio para que siga funcionando aunque cambies de tema. Para hacerlo, crea un archivo PHP en la carpeta wp-content/plugins/, añade el código con add_action() y activa el plugin.

Parámetros de add_action() en WordPress

La función add_action() permite controlar cómo y cuándo se ejecuta tu código personalizado mediante varios parámetros. Vamos a verlos uno a uno:

  • $hook_name: indica el nombre del gancho de acción al que quieres asociar tu función. Este gancho define en qué momento se ejecutará. WordPress incluye muchos ganchos predefinidos, como init, que ejecuta código una vez que WordPress ha terminado de cargarse, o wp_footer, que permite añadir código al pie de página.
  • $callback: es el nombre de la función que se ejecutará cuando se dispare el gancho indicado. Aquí es donde defines el código personalizado que quieres ejecutar en el momento adecuado dentro de WordPress.
  • $priority (opcional): el parámetro $priority define el orden en el que WordPress ejecuta las funciones asociadas al mismo gancho. Por defecto, su valor es 10, pero puedes ajustarlo para que tu función se ejecute antes o después que otras. Cuanto más bajo sea el número, antes se ejecutará.
  • $accepted_args (opcional): indica cuántos argumentos puede recibir tu función. Por defecto es 1, pero puedes aumentarlo si necesitas trabajar con más parámetros.

Aquí tienes un ejemplo de una función add_action() completa:

function my_custom_script() {

echo 'alert("Hola, mundo");';

}

add_action( 'wp_footer', 'my_custom_script', 10, 1 );
  • $hook_name: ‘wp_footer’. Esto indica que la función debe ejecutarse cuando se dispare el gancho de acción wp_footer, lo cual ocurre cuando WordPress está a punto de cerrar la etiqueta body en cada página.
  • $callback: ‘my_custom_script’. El nombre de la función que se ejecutará cuando se llame al hook wp_footer.
  • Prioridad: 10. Esta es la prioridad predeterminada, lo que significa que la función se ejecutará en el orden estándar con respecto a otras funciones vinculadas a wp_footer.
  • $accepted_args: 1. Aunque esta función no requiere argumentos, WordPress la configura para aceptar un argumento de forma predeterminada.

Cuando WordPress carga el pie de página, se ejecuta la función my_custom_script, que inserta un script para mostrar un mensaje de alerta con el texto “¡Hola, mundo!” antes de que la página se cierre.

Ejemplo de add_action() en WordPress

Aquí tienes algunos usos prácticos de la función add_action(). Si alojas tu sitio de WordPress en Hostinger y quieres probar estos ejemplos, pruébalos primero en un entorno de pruebas.

Esto te permite experimentar con seguridad sin afectar tu web en producción. Puedes seguir nuestra guía para configurar un entorno de pruebas de WordPress con la herramienta de staging de Hostinger.

Añadir un script personalizado al frontend de WordPress

Con add_action() puedes añadir scripts personalizados en el frontend de tu sitio. Esto viene bien cuando necesitas incorporar archivos JavaScript o pequeños scripts que mejoren la funcionalidad o el diseño.

Por ejemplo, puedes añadir un archivo JavaScript a la cabecera para crear elementos interactivos o analizar el comportamiento de los usuarios. Para hacerlo, vincula tu código al gancho wp_enqueue_scripts, que se encarga de cargar scripts y estilos en WordPress.

Así es como puedes hacerlo:

function add_custom_script() {

wp_enqueue_script( 'custom-js', get_template_directory_uri() . '/js/custom-script.js', array(), null, true );

}

add_action( 'wp_enqueue_scripts', 'add_custom_script' );

En este ejemplo, se llama a la función wp_enqueue_script con varios parámetros:

  • ‘custom-js’: es el identificador único de tu script.
  • get_template_directory_uri() . ‘/js/custom-script.js’: indica la ubicación del archivo JavaScript dentro del directorio de tu tema.
  • array(): es la lista de dependencias del script. Puedes dejarla vacía si no hay ninguna.
  • null (opcional): corresponde a la versión del script.
  • true: define si el script se carga en el pie de página (true) o en la cabecera (false).

La línea add_action(‘wp_enqueue_scripts’, ‘add_custom_script’) vincula la función add_custom_script a la acción wp_enqueue_scripts. Este enfoque evita conflictos con otros temas o plugins que también puedan estar cargando sus propios scripts.

También puedes usar la función add_action() para personalizar el pie de página de tu sitio. Si quieres mostrar un mensaje personalizado, agregar un aviso de derechos de autor o incluir HTML o scripts adicionales, wp_footer es ideal.

Este gancho se ejecuta justo antes de la etiqueta de cierre </body> en todas las páginas del sitio. Por eso, es ideal para añadir contenido que quieres que aparezca en toda la web, como en el siguiente ejemplo::

function add_custom_footer_message() {

echo '¡Gracias por visitar nuestro sitio web!';

}

add_action( 'wp_footer', 'add_custom_footer_message' );

Aquí agregas un párrafo HTML sencillo con un mensaje de texto centrado. Luego, add_action() vincula la función add_custom_footer_message a la acción wp_footer.

Como resultado, cada vez que WordPress llega al gancho wp_footer, el mensaje personalizado se muestra en el pie de página del sitio.

Agregar un aviso de administrador personalizado

En WordPress, los avisos del panel de administración permiten comunicar información importante a quien gestiona el sitio. Pueden incluir advertencias, actualizaciones u otros mensajes relevantes.

Al usar add_action() con la acción admin_notices, el aviso se muestra en un punto específico cada vez que se carga el área de administración. El siguiente fragmento de código muestra cómo agregar un aviso personalizado:

function custom_admin_notice() {

echo '<div class="notice notice-success is-dismissible">

<p>¡Este es un aviso de administración personalizado!</p>

</div>';

}

add_action( 'admin_notices', 'custom_admin_notice' );

Esta función personalizada de WordPress genera el HTML del aviso del área de administración. El elemento <div> incluye varias clases:

  • notice: es necesaria para aplicar el estilo de aviso.
  • notice-success: define el aviso como un mensaje de éxito. Si quieres mostrar otros tipos de mensajes, puedes usar notice-warning, notice-error o notice-info.
  • is-dismissible: esta clase añade un botón para cerrar el aviso.

Además, puedes añadir lógica a tu función para que el aviso solo se muestre en determinadas situaciones, por ejemplo, al editar un tipo de contenido específico o después de actualizar un plugin.

A continuación, tienes un ejemplo en el que el aviso solo aparece al editar un tipo de contenido concreto:

function conditional_admin_notice() {

global $post;

if ( $post->post_type == 'your_post_type' ) {

echo '

Este es un aviso personalizado para tu tipo de publicación.

';

}

}

add_action( 'admin_notices', 'conditional_admin_notice' );

Agregar un widget personalizado a la barra lateral

Un widget es un bloque pequeño que cumple una función específica, como mostrar entradas recientes, una barra de búsqueda o HTML personalizado. Si usas el gancho de acción widgets_init, puedes registrar y mostrar tu propio widget en la barra lateral o en cualquier otra área de widgets.

Para empezar, tienes que definir una clase que extienda WP_Widget. En ella se incluye la lógica del widget, cómo se muestra y los campos de formulario para personalizar su contenido.

class My_Custom_Widget extends WP_Widget

{
// Constructor para configurar el nombre, la descripción y más del widget


public function __construct() {


parent:__construct(


'my_custom_widget', // ID

base
__( 'Mi widget personalizado', 'text_domain' ), // Nombre del widget en el administr

ador
array( 'description' => __( 'Un widget personalizado que muestra un mensaje.', 'text_domain' ) ) // Descripción del





widget
);
}

// Mostrar el contenido del widget en el fron

tend
public function widget( $args, $instance ) {


echo $args['before_widget'];


echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args[

'after_title'];


echo '<p>' . __( '¡Hola, este es mi widget personalizado!', 'text_domain' ) . '</



p>'



;




echo $args['after_widget'];
}

// Mostrar el formulario de opciones del widget en el administrador
public function form( $instance ) {
$title = !

empty( $instance['title'] ) ? $instance['title'] : __( 'Nuevo título', 'text_domain' );
?>
<p>
<label for="<?php echo esc_attr( $this->get_field_id(

'title' ) ); ?>"><?php _e( 'Título:', 'text_domain' ); ?>



</label>
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php





echo esc_attr( $this->g

et_field_name( 'title' ) ); ?>" type="text" value="<?

php echo esc_attr( $title ); ?>">
</p>
<?php
}

// Procesar las opciones del widget para

guardar
public function update( $new_instance



, $old_instance ) {
$instance = array();
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? sanitize_text_field( $new_instance['title'] ) : '';
return $instance;
}
}

En el fragmento anterior, My_Custom_Widget extiende la clase WP_Widget e incluye los métodos necesarios para mostrar el widget (widget), generar el formulario de administración (form) y guardar sus opciones (update).

Una vez definida la clase, solo queda registrarla con el gancho de acción widgets_init. Aquí es donde entra en juego add_action():

function register_my_custom_widget() {

register_widget( 'My_Custom_Widget' );

}

add_action( 'widgets_init', 'register_my_custom_widget' );

Al vincular la función register_my_custom_widget al gancho widgets_init, WordPress registrará tu widget personalizado durante la inicialización de los widgets. Después, podrás añadirlo a la barra lateral o a cualquier otra área disponible.

Otras funciones de acción de WordPress

Además de add_action(), WordPress incluye otras funciones para trabajar con ganchos de acción. que permiten ejecutar código personalizado, eliminar acciones o comprobar si ya hay funciones registradas en un gancho concreto.

do_action()

La función do_action() se encarga de activar un gancho de acción, es decir, ejecuta todas las funciones que estén asociadas a él. También puedes usarla en tu propio código para crear nuevos ganchos a los que tú u otros desarrolladores puedan engancharse, lo que facilita crear código más flexible y modular.

do_action( 'mi_accion_personalizada' );

En este ejemplo, la función do_action() dispara el gancho my_custom_action.

remove_action()

En cambio, remove_action() quita una función de un gancho de acción específico. Esto puede ser útil cuando necesitas sobrescribir o impedir que se ejecute una función en particular, especialmente al trabajar con plugins o temas de terceros.

remove_action( 'wp_head', 'wp_generator' );

Aquí usas remove_action() para desvincular wp_generator de wp_head.

has_action()

Usa la función has_action() para comprobar si hay funciones asociadas a un gancho antes de ejecutar cierto código y asegurarte de que la acción que quieres modificar esté realmente registrada.

if ( has_action( 'wp_footer', 'my_custom_footer' ) ) {

// La función de pie de página personalizada está enganchada, así que haz algo

En el ejemplo anterior, has_action() comprueba si la función my_custom_footer está asociada al gancho wp_footer. Si es así, puedes usar una condición para ejecutar lógica adicional en función de ese resultado.

Conclusión

Este artículo explicó cómo la función add_action() de WordPress te permite ampliar y personalizar tu sitio web. Desde agregar scripts personalizados y mensajes en el pie de página hasta crear widgets únicos para la barra lateral, puedes personalizar rápidamente la funcionalidad de tu sitio sin alterar los archivos principales.

También hemos analizado otras funciones relacionadas con acciones como do_action(), remove_action() y has_action(), lo que te da aún más control sobre cómo y cuándo WordPress ejecuta tu código personalizado. Dominar estas herramientas te permite crear un sitio web de WordPress más dinámico y personalizado.

Preguntas frecuentes sobre add_action() en WordPress

¿Cuál es la diferencia entre add_action() y add_filter()?u003cbru003e

u003cstrongu003eadd_action()u003c/strongu003e permite ejecutar funciones personalizadas en momentos concretos del flujo de WordPress, mientras que u003cstrongu003eadd_filter()u003c/strongu003e se usa para modificar datos antes de que se muestren.u003cbru003eAmbas funciones son clave para ampliar y adaptar el funcionamiento de WordPress a tus necesidades.

¿Es seguro usar add_action() en el archivo functions.php?u003cbru003e

Sí, puedes usar u003cstrongu003eadd_action()u003c/strongu003e en el archivo functions.php sin problema. Aun así, si el código es complejo o quieres reutilizarlo, lo más recomendable es crear un plugin personalizado para mantener tu proyecto organizado y fácil de mantener.

¿Cuál es la diferencia entre do_action() y add_action()?u003cbru003e

u003cstrongu003eadd_action()u003c/strongu003e registra una función para que se ejecute cuando se active un gancho de acción, mientras que u003cstrongu003edo_action()u003c/strongu003e activa ese gancho y ejecuta todas las funciones asociadas.u003cbru003eJuntas permiten ejecutar código de forma flexible y modular en WordPress.

All of the tutorial content on this website is subject to Hostinger's rigorous editorial standards and values.

Author
El autor

Federico Foscarini

Trabaja en comunicación y marketing digital, y se especializa en traducción y localización de contenidos. Disfruta de los proyectos que le permiten estar en contacto con diferentes culturas y contextos.

Lo que dicen nuestros clientes

Agregá un comentario

Llena los campos obligatorios, por favor.Acepta la casilla de verificación Privacidad, por favor.Llena los campos requeridos y acepta la casilla de verificación de privacidad, por favor.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.