¿Qué son los wordpress hooks o ganchos de Wordpress? Aprende a utilizar acciones

¿Quieres saber qué son los ganchos de WordPress? En este post te enseño qué son los WordPress hooks y cómo utilizar acciones, una de las herramientas más poderosas que brinda WordPress a los desarrolladores web. Gracias a ellos podrás extender las funcionalidades de tu sitio web a niveles insospechados.

¡Empecemos!

Qué son los WordPress Hooks

Los WordPress Hooks, también llamados ganchos de WordPress, son elementos que permiten modificar o expandir las funcionalidades y comportamiento que tiene WordPress por defecto. El nombre de gancho no es casual, ya que los hooks nos permiten «engancharnos» a algún punto de la ejecución del sitio web para ejecutar nuestro código personalizado.

Pongamos un ejemplo. Imaginemos que queremos llevar un registro de todas las veces que se guarda una entrada en nuestro sitio web. El objetivo es que, cada vez que un usuario está editando una entrada y pulsa el botón de guardar, se almacene un registro con el título del post guardado y un mensaje. Pues bien, podríamos resolver este problema empleando un hook.

Qué son los hooks o ganchos de WordPress

Tipos de hooks en WordPress: acciones y filtros

Existen dos tipos de ganchos o hooks en WordPress, las acciones y los filtros. Por un lado, las acciones, también denominadas WordPress actions, permiten ejecutar un código determinado cuando ocurre algún tipo de evento en nuestro sitio web. Es decir, nos permiten definir una función PHP que será ejecutada cuando ocurra el evento que nosotros le indiquemos. Si no sabes qué es PHP, te recomendamos familiarizarte con él con nuestro siguiente artículo.

Por otro lado, los filtros hacen posible la modificación de los datos que WordPress recoge de su base de datos y muestra en pantalla. Esto es, gracias a los filtros podemos realizar acciones como modificar un texto mostrado o evitar que un determinado contenido se visualice en pantalla.

Qué son las acciones o actions de WordPress y cómo se utilizan

Acciones de WordPress – WordPress Actions

Como hemos mencionado, las acciones de WordPress sirven para definir un código a ejecutar cuando ocurra un determinado suceso (evento) en nuestro sitio web. Dicho evento puede ser o bien un suceso personalizado definido por el programador, o bien un evento ya definido en WordPress. Por ejemplo, el evento deleted_comment viene predefinido en WordPress y se ejecuta inmediatamente después de que un comentario haya sido eliminado de la base de datos.

En este sentido, cuando trabajamos con acciones, vamos a emplear dos funciones de WordPress:

  • add_action(‘evento’, ‘función’): define una función que se va a ejecutar cuando ocurra un evento que ya está definido en WordPress. Esta función recibe dos parámetros, el nombre del evento y la llamada a la función.
  • do_action(): se utiliza cuando estamos creando nuestras propias acciones personalizadas.

Al trabajar con hooks, añadiremos estas funciones en el archivo functions.php que podrás encontrar en el directorio del tema que estés utilizando en tu sitio web. Normalmente, la ruta es la siguiente: /wp-content/themes/nombre-tema/functions.php.

Como se utilizan los action en WordPress

La función add_action() en WordPress

Retomemos nuestro ejemplo anterior, en el que deseamos automatizar el registro de las veces que se guardan las entradas de nuestro sitio web. Para resolver el problema, por un lado estableceremos un action hook en el que definiremos el evento del gancho y la llamada a la función a ejecutar, y por otro lado crearemos la propia función. La sintaxis sería la siguiente:

add_action('nombre_evento', 'nombre_funcion'); 
function nombre_funcion () {
     //code
}

Siguiendo con nuestro ejemplo, vamos a aclarar algunas cuestiones antes de programar el código que necesitamos:

  • El nombre del evento que necesitamos es save_post. Si quieres conocer el listado completo de acciones predefinidas en WordPress, las puedes consultar en su documentación oficial.
  • Vamos a almacenar los registros en un fichero, por lo que previamente deberemos crearlo. En nuestro caso, lo llamaremos registro.txt y lo almacenaremos directamente en nuestra carpeta del tema.
  • Emplearemos funciones de WordPress como file_exists(), fopen(), get_template_directory(), etc. Aprender estas funciones no es el objetivo principal de este post, pero conocerlas puede serte de gran ayuda.
Funciones add_action WordPress Hooks

Una vez aclarados los aspectos anteriores, a continuación se muestra el código necesario para resolver el problema:

/*Definimos la acción*/
add_action('save_post', 'registrar');

/*Creamos la función*/
function registrar ($post_id){

  /*Almacenamos en una variable la ruta del fichero*/
  $ruta = get_template_directory() . '/registro.txt';

  /*Almacenamos en una variable el texto de cada registro*/
  $mensaje = get_the_title($post_id) . 'fue guardado!';

  /*Definimos las funciones para abrir el fichero, escribir los registros y cerrarlo*/
  if (file_exists($ruta)){
    $fichero = fopen ($ruta, 'a');
    fwrite ($fichero, $mensaje."\n");
  } else {
    $fichero = fopen ($ruta, "w");
    fwrite ($fichero, $mensaje."\n");

  }
  fclose($fichero);
}

Si realizamos la prueba de guardar entradas y después abrir nuestro fichero, veremos que se han escrito más líneas de las necesarias. Esto se debe a que la acción ‘save_post’ es peculiar, ya que no se ejecuta únicamente cuando se guarda una entrada, sino también cuando un post ha sido revisado y cuando WordPress ha creado un autoguardado. Si queremos evitar que esto ocurra, nos bastará con añadir el siguiente código al inicio de la función ‘registrar’:

if ( ! ( wp_is_post_revision ( $post_id ) ) || wp_is_post_autosave ( $post_id) ) {
		return; 
	}

Conclusiones

Hemos aprendido qué son los WordPress hooks y cómo utilizar acciones. De esta manera, podemos emplear las múltiples acciones que tiene WordPress predefinidas para ejecutar nuestro código personalizado cuando ocurra un evento.

Próximamente veremos cómo construir acciones con eventos personalizados y cómo utilizar filtros o WordPress filters. Si quieres saber más sobre WordPress, te recomiendo que te pases por la sección que tenemos dedicada a esta temática, donde podrás aprender un montón de cosas sobre este magnífico CRM.

Espero que te haya servido de ayuda. Si quieres aportar algo, por favor, no dudes en dejarme un comentario en esta publicación.

¡Te espero en el siguiente artículo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Índice