WordPress Hooks

Esta es una de esas entradas del megatutorial de WordPress desde cero, quizá más avanzada de lo que eran las últimas entradas que he redactado, pero necesario igualmente. Poco a poco va estando completado y da igual el orden que sigamos, lo importante es aprender.

Antes de ponerte a desarrollar plugins, temas e incluso modificar una plantilla, deberías entender los Hooks (o ganchos, aunque nadie los llama así).

Hook

¿Qué son los Hooks?

Técnicamente son eventos, por ejemplo invocado por la llamada de do_action() o de apply_filters() que ejecutan después todas las llamadas a las funciones enganchadas a ese evento.

Básicamente, intentando simplificarlo, el proceso sería el siguiente:

  1. El hook invoca un observador, que se encarga de recoger una serie de funciones «enganchadas» al evento.
  2. Ejecuta las funciones utilizando call_user_func() de php.
  3. El código de dichas funciones son implementadas en el proceso del core sin modificarlo.

Lo sé, es una explicación un tanto simplista, pero vamos a ir poco a poco, prefiero que lo entiendas de forma sencilla.

Action Hooks y Filter Hooks

Como los Actions y Filters requieren del uso de Hooks para funcionar, lo más frecuente es que oigas hablar de Action Hooks y Filter Hooks. Y yo, que quiero facilitarte la vida, los llamaré así también (sin traducir) para que puedas buscar más facilmente documentación sobre ellos.

Su implementación es similar pero, como veremos a continuación, sus funciones y aplicaciones son totalmente diferentes.

Los Filter Hooks

Los Filter Hooks están diseñados para modificar contenido. Generalmente se enganchan a hooks de procesamiento de contenido; por ejemplo cuando lo guardamos o cuando lo representamos.

Un ejemplo básico de Filter Hook sería el siguiente, con el que modificamos todos los «wordpress» por «WordPress» en nuestros artículos.

<?php 
   add_filter('the_content', ‘guorpres_vs_wordpress’);
   function guorpres_vs_wordpress($content) {
      return str_replace('wordpress', 'WordPress', $content);
} 
?>

Atención:
No utilices los filter hooks para realizar shortcodes, para esto existe la función add_shortcode(), cuya utilización es muy sencilla.

Además, los filtros pueden ser reutilizados tantas veces como queramos, podemos utilizarlo múltiples veces y en diferentes tipos de contenido.

Como decía anteriormente, pueden modificar el contenido bien antes de guardarlo en la base de datos o bien más adelante, en la fase de renderizado del contenido.

Pero ojo, cuando hablamos de contenidos no hablamos sólo del contenido de artículos y páginas, sino también de autores, comentarios, widgets, enlaces del blogroll, fechas y horas, elementos del escritorio, etc. Todo de forma dinámica sin tocar el código del núcleo de WordPress.

Cómo crear Filter Hooks
Si quieres añadir un filter Hook tendremos que utilizar la función add_filter().

<?php add_filter( $tag, $function, $priority, $accepted_args ); ?>

Su uso es sencillo:

Mi consejo es que os centréis en los dos primeros parámetros, la prioridad dependerá de otros factores.

A tener en cuenta, que la función será la que marque nuestro control sobre el contenido.

Los Action Hooks

Aunque similares en implementación, son completamente diferentes en funcionamiento.

Mientras que los Filter Hooks están enfocados a modificar y actualizar contenidos, los Action Hooks están diseñados para proporcionar una mayor flexibilidad en cómo se procesan los elementos, así como la posibilidad de añadir nuevas funciones al sistema (campos de texto, hojas de estilo, otros tipos de contenido, Custom Post Types, Metaboxes…).

Todo, como siempre, sin alterar el código original del core de WordPress.

Empecemos con un ejemplo:

<?php
   add_action(‘admin_menu', ‘mi_plugin_extraordinario’);
   function mi_plugin_extraordinario() {
      if(function_exists('add_submenu_page')) {
         add_submenu_page(‘plugins.php','Extraordinario', ‘Extraordinario’, 10, ‘my_new_plugin', 'my_new_plugin_admin_page_function');
      }
   }
?>

Digamos que todo Action Hook se ejecuta en tres fases (según el ejemplo anterior, obtendríamos):

  1. El Action: Obtiene el menú de administración.
  2. La petición: Cuando estés generando el Menú de administración, ejecuta esta función que añade un elemento bajo la sección de plugins.
  3. El Resultado: El menú es generado con nuestro enlace, justo debajo de la sección de plugins.

Cómo crear Action Hooks
Al igual que con los filter hooks tenemos una función que se encarga de esto, ¿Adivinas cuál es? En efecto, add_action().

<?php 
   add_action($tag, $function, [$priority], [$accepted_args]); 
?>

Y, una vez más, los parámetros:

Al igual que en los Filter Hooks, lo mejor es que te centres en las dos primeras. Ten en cuenta, de nuevo, que la función es la que marca el control sobre el hook. Vamos, que es con la que controlamos lo que queremos hacer.

Uso de Hooks de forma avanzada (Advance Hooking)

Además, podemos tener control sobre los hooks, conociendo y preguntando a WordPress en todo momento sobre su uso e implementación.

Para ello tenemos estas funciones:

Como ves, no profundizo en exceso en estas funciones, ya que tienes toda la información sobre ellas en el Codex y, realmente su explicación no es el propósito de esta entrada.

También puedes añadir tus propios Hooks en tu tema (funcions.php) o tu plugin, pero como da para otra entrada… Te lo explicaré más adelante.

¡MANTENME INFORMADO!

¡Gracias por tu interés en estar informado del próximo lanzamiento de mis cursos! 😎

¡No hago spam! Lee la política de privacidad para tener más información.

Deja una respuesta

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

*

*

DARÍO BALBONTÍN FERNÁNDEZ es el Responsable del tratamiento de los datos personales del usuario y le informa que estos datos serán tratados de conformidad con lo dispuesto en el Reglamento (UE) 2016/679 de 27 de abril (GDPR) y la Ley Orgánica 3/2018 de 5 de diciembre (LOPDGDD), por lo que se le facilita la siguiente información del tratamiento: Fin del tratamiento: mantener una relación comercial y el envío de comunicaciones sobre nuestros productos y servicios. Criterios de conservación de los datos: se conservarán mientras exista un interés mutuo para mantener el fin del tratamiento y cuando ya no sea necesario para tal fin, se suprimirán con medidas de seguridad adecuadas para garantizar la seudonimización de los datos o la destrucción total de los mismos.Comunicación de los datos: No se comunicarán los datos a terceros, salvo obligación legal. Derechos que asisten al usuario: Derecho a retirar el consentimiento en cualquier momento. Derecho de acceso, rectificación, portabilidad y supresión de sus datos y a la limitación u oposición al su tratamiento. Derecho a presentar una reclamación ante la Autoridad de control (agpd.es) si considera que el tratamiento no se ajusta a la normativa vigente. Datos de contacto para ejercer sus derechos: contacto@dariobf.com.