¿Que son los hooks en WordPress?

article-image

WordPress, a diferencia de otros gestores de contenido, utiliza una arquitectura basada en eventos y procedimientos. Si quieres desarrollar tanto temas como plugins en este CMS, es esencial que aprendas a utilizar el sistema de hooks o ganchos.

Los ganchos o hooks en WordPress son puntos concretos y estratégicos dentro del core de WordPress que permiten añadir funcionalidades o modificar un comportamiento. Cuando la secuencia de carga llegue a ese punto concreto, se ejecuta la función que has “enganchado”.

orden carga action hook wordpress

De esta manera, podrás modificar el funcionamiento del código de WordPress sin ni siquiera tocarlo. Sin embargo, tienes que ser consciente de que los hooks no se ejecutan aleatoriamente, sino que siguen un orden. La siguiente imagen pertenece a Rarst.net, concretamente a un artículo que se llama “Make sense of WordPress core load”:

orden carga hooks

Me gusta mucho porque ilustra muy bien parte del orden de carga de una petición típica de WordPress (aunque no está completo, pero no importa). La idea es que entiendas cómo funciona y con esto es suficiente. He marcado con un cuadro rojo los action hooks (un tipo concreto de gancho, ahora te explico) para que puedas ver cómo se van ejecutando desde arriba hasta abajo.

En WordPress existen dos tipos de hooks: acciones (actions hooks) y filtros (filters hooks). Aunque se utilizan de la misma manera, el valor que devuelve cada uno es diferente.

Action hooks o acciones

Las acciones o action hooks ejecutan una función propia en un lugar preciso en un momento determinado de la línea de ejecución de WordPress. Cuando llega a un punto concreto, realiza la acción que quieras además de las que ya se van a ejecutar por defecto. En resumen, los action hooks añaden código adicional a tu WordPress.

Si te fijas en el código que aparece en la primera imagen de este post, todos los hooks se llaman con la función do_action(‘nombre_hook’).

funcion do_action

Así es como puedes localizar en qué puntos de WordPress están los action hooks. Para verlo más claro, te voy a poner un ejemplo sencillo: imagina que necesitas agregar código CSS personalizado dentro de la cabecera de tu web.

En el código de WordPress existe una función que se llama wp_head() que se define en el archivo /wp-includes/general-template.php. Esta función utiliza do_action() para crear un punto con el que puedas trabajar con el gancho wp_head.

Si abres el archivo header.php de tu theme principal, verás que entre las etiquetas <head></head> se llama a la función wp_head().

action hook wp head

Cuando la ejecución de tu WordPress llega a ese punto, el código que realmente ejecuta wp_head(); es do_action(‘wp_head’);, creando así un punto de anclaje justo antes del cierre de la etiqueta <head>. De esta manera, cuando tú enganches tu función al hook wp_head, se añadirá el código CSS que tienes preparado al header.php de tu theme.

Pero la función do_action(); no solo se utiliza en el core de WordPress y esto es MUY INTERESANTE. Por ejemplo, si estás desarrollando un plugin o tema para WordPress puedes “preparar” hooks para que otra persona “enganche” a tu plugin o theme sus funciones personalizadas.

Ahora, lo que me falta por enseñarte es cómo usar un action hook de WordPress. Para “engancharte” a un hook vas a utilizar la función add_action();. Para aprender a usarla, lo primero que debes conocer es la sintaxis o estructura de un action hook:

1

add_action( string $nombre_accion, callable $nombre_tu_funcion, int $prioridad, int $numero_parametros=1);

    • $nombre_acción (requerido): El nombre de la acción a la que se va a enganchar la función que añadas en $nombre_funcion.
    • $nombre_funcion (requerido): El nombre de la función que creaste para utilizar con este action hook.
    • $prioridad (opcional):  Se especifica el orden en el que se ejecutan las funciones que están asociadas a ese gancho. Su valor por defecto es 10. Cuanto más pequeño es el número, antes se ejecuta esa función. Si el valor es igual entre dos funciones, se ejecutará antes la que se haya agregado primero al action hook.

    • $numero_parametros (opcional): Un número que indica la cantidad de parámetros que vas a pasar a la función. Por defecto, es 1.

Ahora que conoces la estructura de un action hook, te voy a enseñar cómo es el código que tienes que usar. ¡OJO!, este tipo de experimentos tienes que hacerlos en un entorno de pruebas. No lo hagas nunca sobre tu web hasta que estés al 100% seguro de que va a funcionar y no vas a dejar caída tu página.

Para que veas cuál es el código que hay que poner y cómo se usa, vas a crear un action hook que deshabilite el widget de calendario.

Si no tienes un tema hijo en tu web ni sabes lo que es, te sugiero que le eches un ojo al siguiente artículo: Qué es un tema hijo y cómo crearlo

Primero, edita el archivo functions.php del tema hijo del entorno de pruebas y añade el siguiente código dentro de la etiqueta de apertura y cierre de PHP:

En el ejemplo, he nombrado a la función como ‘mi primera funcion’ pero tú la puedes llamar como quieras. Lo único que tienes que tener en cuenta es que en WordPress el nombre de la función tiene que ser exclusivo. No puede llamarse igual que ninguna otra. De lo contrario, tu página podría dejar de funcionar.

Para poder eliminar el widget del panel de control, vas a utilizar un hook de WordPress que se activa justo después de que se hayan registrado todos los widgets: widgets_init. Por lo tanto, deberás cambiar [NOMBRE_HOOK] por widgets_init.

add_action(‘widgets_init’,’miprimerafuncion’);

Ahora solo tienes que añadir el código necesario dentro de tu función. En la documentación oficial de WordPress podrás encontrar una función que realiza la tarea que necesitas: unregister_widget();.

Listo. Como ves en la siguiente imagen, ya no puedes utilizar el widget del calendario.

ejemplo action hook

Si quieres ver todos los action hooks que existen, aprender a utilizarlos y saber en qué orden cargan, te recomiendo que visites la documentación oficial de WordPress sobre Action Hooks.

Filter hooks o filtros

Los filtros o filter hooks de WordPress manipulan la información en un punto concreto de la ejecución antes de que se muestre en la pantalla o se almacene en la base de datos.

Por ejemplo, puedes cambiar el título de una página antes de que salga en la pantalla del usuario, añadir más contenido al título de un post, cambiar el texto de un botón…

Al igual que con los action hooks, te voy a enseñar cuál es la estructura o sintaxis de un filter hook:

1

add_filter( string $nombre_filtro, callable $nombre_tu_funcion, int $prioridad, int $numero_parametros=1);

    • $nombre_filtro (requerido): El nombre de filtro con el que quieras trabajar.
    • $nombre_funcion (requerido): El nombre de la función que se ejecutará cuando el filtro se active.
    • $prioridad (opcional):  Se especifica el orden en el que se ejecutan las funciones que están asociadas a ese gancho. Su valor por defecto es 10. Cuanto más pequeño es el número, antes se ejecuta esa función. Si el valor es igual entre dos funciones, se ejecutará antes la que se haya agregado primero al action hook.
    • $numero_parametros (opcional): Un número que indica la cantidad de parámetros que vas a pasar a la función. Por defecto, es 1.

Seguro que te resulta muy familiar. Realmente los action hooks y los filter hooks son muy similares y se utilizan de la misma forma aunque se usen para cosas diferentes:

    • Los filter hooks reciben un parámetro de entrada que tú vas a modificar y devolver al hook correspondiente.
    • No se llaman con la función do_action(), como en el caso de los action hooks, se utiliza apply_filters(); por lo que tendrás que localizar en el código de WordPress los puntos en los que puedes engancharte al hook con esta función.
    • No se referencia con add_action(); sino que se usa add_filter();

Abre otra vez el archivo functions.php de tu tema hijo. Te voy a enseñar a cambiar el texto del botón de “Leer más” de un blog. Seguro que muchas veces te has encontrado blogs en español con el botón de Leer más en inglés. Pues la verdad es que se cambia de una manera muy rápida y fácil:

function misegundafuncion($texto)

{

//El texto de Read More… se va a sustituir por la cadena que devuelvas en esta función

$texto=”Leer más”;

return $texto;

}

add_filter(‘except_more’,’misegundafuncion’);

Listo. Como ves en la siguiente imagen, el nombre del botón antes era Read More y ahora pone Leer más.

ejemplo filter hook

Si quieres ver todos los filter hooks que existen y aprender a utilizarlos correctamente, te recomiendo que visites la documentación oficial de WordPress sobre Filter Hooks.

Sobre el Autor
Comentarios
  1. Ana Iris

    11 / 12 / 2018 6:24 pm

    La clase de hoy esta confusa no entiendo. Facebook parece que se cayo, no se que le pasa, a cada rato con problemas. Se supone que no se equivocan.

    Reply

  2. Adela Noriega

    11 / 12 / 2018 6:56 pm

    No entiendo me estas hablando en jeroglifico!!!!!

    Reply

  3. Mildred Garcia

    11 / 12 / 2018 7:02 pm

    Esta hiijaa miaaa esta insoportaableee que mujercitaaa mas inquieetaaaa es en serioooo la voy amaarraarrrrr!!!!…no puedo entrar de nuevo a mi correeooooo enviamee lo de la red CPA POR FAVORRR POR ESTA VIAAAA

    Reply

    • 11 / 12 / 2018 10:06 pm

      Yo no sé qué pasa con ese correo tuyo, parece que habrá algún tipo de bloqueo después veré que hago…continuando lo que hablamos por skype, tienes que primero dar confianza y comunicarte de manera fluida y sincera con la persona que te está entrevistando en Skype, ahora está más complicado ser aceptado en las redes CPA, a ti te conviene más ingresar por referencia y no por la vía normal. Mientras tanto como ya te dije en Skype sobre Adjal y las capturas que te envié de otras redes, MOBIDEA es de las pocas donde puedes ingresar sin conocimientos y experiencia previa. Observa esta captura de ganancias https://goo.gl/q55k7b son “generales” no son las detalladas que te envié por skype. Toma en cuenta también que actualmente las redes CPA viven cancelando cuentas, a mí me han cancelado muchas. Este es el procedimiento normal para ser aceptado: primero tienes que llenar el formulario en la web, luego te contactarán por correo o por Skype donde tendrás que hacer una entrevista para probar tú capacidad y enviarles esas capturas de ganancias https://goo.gl/EHrEyX luego al final de terminada la entrevista te van a brindar los accesos por correo para que puedas trabajar e ingresar a tu cuenta https://goo.gl/rpsNzg sin problemas, pero vuelvo y te repito no hay forma de que te acepten en las mejores redes si no envías pruebas de ganancias. Ingresa a MOBIDEA y ahórrate ese trabajo.

      Reply

  4. Amelia Vargas

    11 / 12 / 2018 7:25 pm

    Mi espositoo belloooo antes trabajabaaa muy bien en un gran puesto de trabajo y devengaba un buen sueldo el es muy preparado, pero ahora tiene otro trabajo y no le pagan muy bien y yo tengo que ganar dinerooo como seaaa para que podamos mantener nuestros hermosos hijosss, pero por diossss no entiendoooo esa basuraaaa que escribeessss!!!!!! y siiii tengooo unaa grann bocoootaaaa!!!!!

    Reply

  5. alejandro27

    11 / 12 / 2018 7:32 pm

    Se ve interesante voy a leer y revisar toda la documentación de wordpress para aprender

    Reply

  6. Jessica50shades

    11 / 12 / 2018 7:41 pm

    Amarrameeeee hasmeeeee tuuyaaaaaa

    Reply

  7. Mario Arenal Cespedes

    11 / 12 / 2018 7:58 pm

    Lo entiendo pero creo que debería de ir a los documentos de WordPress

    Reply

  8. Armando75

    11 / 12 / 2018 8:13 pm

    Si, realmente es una técnica ventajosa, todo conocedor de la materia debería dominar la temática de los “hooks” en el entorno wordpress.

    Reply

  9. Jose Rosello

    11 / 12 / 2018 8:42 pm

    La programación HTML se aprende fácilmente a la perfección, la dificultad mayor está en el lenguaje PHP, pero ya estoy aprendiendo…

    Reply

Nickname:

E-mail:

Homepage:

Su comentario:

Agregar Comentario