Aprendiendo a usar ganchos de WordPress

Una de las cosas que hace que WordPress sea tan poderoso es que le facilita modificar el comportamiento de un complemento o un tema, o incluso el mismo WordPress desde otro complemento o tema. Esto le permite modificar el comportamiento del código que no es suyo sin modificarlo. Esto es gracias al sistema de «ganchos» de WordPress que es la columna vertebral de cómo funcionan los complementos de WordPress. Puede pensar en los ganchos, que vienen en dos variaciones: acciones y filtros, como lugares en WordPress donde se detiene y verifica si alguien más quiere hacer algo antes de continuar.

Este es un tema enorme y en este artículo cubriré los conceptos básicos con algunos ejemplos prácticos. A través de esto, aprenderá algunos conceptos básicos para modificar el comportamiento de su sitio a medida que genera su contenido. Más importante aún, espero desmitificar esta parte tan importante de WordPress para ti, para que puedas entender mejor cómo funciona este sistema y dar sentido a la gran cantidad de artículos que te muestran cómo usar ganchos específicos.

Acciones vs Filtros

Hay dos tipos de ganchos: filtros y acciones. Por convención, la distinción más importante es que los filtros devuelven una variable, mientras que las acciones no. Las acciones pueden exponerle variables que puede usar para realizar pruebas de lógica condicional, pero no se devuelven.

Piense en una acción como un lugar en el código donde puede «realizar una acción» o «hacer algo». Las acciones son como hitos en la ejecución de su sitio, donde puede ejecutar parte de su propio código. Por otro lado, como generar CSS en línea o JavaScript en el encabezado, usando la acción «wp_head» o en el pie de página usando «wp_footer». Cuando se conecte a cualquiera de estas acciones, WordPress ejecutará la función que conectó antes de continuar.

Debe pensar en los filtros como una oportunidad para modificar algún dato, en un punto específico de la ejecución de su sitio, antes de que se use para otra cosa. Por ejemplo, cada vez que WordPress genera el título de una publicación, pasa por el filtro «the_title». Eso brinda una oportunidad para que cualquier complemento o tema enganche ese filtro y cambie la forma en que aparece el título.

Dónde poner este código

Antes de comenzar a explicar con más profundidad, es importante discutir dónde colocar el código que estamos discutiendo. El objetivo de usar acciones y filtros es que no tiene que modificar archivos que no controla directamente, por lo que modificar esos archivos no tiene sentido.

Para el tipo de código del que estamos hablando en esta publicación, tiene dos opciones. Puede agregarlo al archivo functions.php de su tema secundario o a un complemento personalizado que cree. Tenga en cuenta que no dije las funciones de su tema.php. Nuevamente, el punto es cambiar el comportamiento de otra parte de WordPress sin modificarla directamente.

Escribir su propio complemento puede sonar intimidante, si nunca lo ha hecho antes, pero no debería ser así. Personalmente, me gusta escribir varios complementos pequeños para cada sitio en el que trabajo, cada uno para un objetivo específico que debo lograr. Este enfoque tiene varias ventajas sobre la modificación del tema hijo.

Me permite deshabilitar los complementos individualmente para fines de prueba, también me permite reutilizarlos fácilmente entre sitios y, lo que es más importante, me permite probar qué sucede cuando cambio a otro tema. Si hubiera agregado el código al tema secundario, perdería uno de los pasos de solución de problemas más importantes: cambiar al tema predeterminado.

Crear su propio complemento es tan simple como agregar un archivo php al directorio de complementos en el directorio de contenido de su sitio (generalmente llamado wp-content). En ese archivo, simplemente agregue un encabezado de complemento válido , que puede ser tan simple como:

01
02
03
04
<?php
/*
Plugin Name: My Plugin
*/

También hay un complemento para crear otros complementos desde el administrador de WordPress. Se llama Pluginception y crea el encabezado por ti.

Además, las funciones en cada uno de estos ejemplos de código tienen el prefijo «slug». Debe cambiar eso a la slug única para el complemento o tema en el que está trabajando. Esto es importante para evitar conflictos con otros complementos o temas, ya que solo puede tener una función con el mismo nombre o causará un error fatal.

Uso de acciones

Otra forma de pensar en las acciones es como un lugar donde una parte del código se toma un descanso y deja que se ejecute otro código. Echemos un vistazo a un uso común de una acción en WordPress y luego lo desglosaré:

01
02
03
04
05
06
add_action( 'wp_head', 'slug_change_h3_color'' );
function slug_change_h3_color() {
  if ( is_category( 'news' ) || is_tag( 'important-updates') ) {
    echo '<style>h3, h3 a { color: red;}</style>';
  }
}

Esto generará algo de CSS en línea en el encabezado, si la página actual es el archivo para una categoría o etiqueta en particular. Analicemos paso a paso lo que está sucediendo en este código.

La primera línea usa la función add_action()para enlazar una función, que sigue, a la acción. La función add_action()tiene dos parámetros obligatorios y dos opcionales. Por ahora, echemos un vistazo a los necesarios.

El primer parámetro es el nombre de la acción a la que queremos enlazar esta acción. En este ejemplo, estamos conectando la acción “wp_head”, que está dentro de la función wp_head()que todos los temas de WordPress deberían tener en su archivo header.php.

Ese primer parámetro le dice a WordPress cuándo ejecutar, el segundo parámetro, la devolución de llamada, le dice a WordPress qué ejecutar, cuando llega a esa acción. El segundo parámetro es el nombre de una función a ejecutar. Notarás que sigo add_action(), con la función real que se especifica como devolución de llamada para add_action().

No todos funcionan de esta manera, algunos usan add_action() después de la devolución de llamada, algunas personas los colocan en lugares totalmente diferentes. Siempre que la función de devolución de llamada esté en algún lugar donde se pueda ejecutar, funciona. Lo hago de esta manera ya que creo que es la más legible.

Hay muchas acciones en el núcleo de WordPress, y los complementos y temas agregarán más. No puedo cubrirlos todos aquí. Los más comunes que se usan para personalizar temas son wp_head , que se ejecuta en el encabezado del tema, wp_footer , que se ejecuta en el pie de página del tema y wp_enqueue_scripts , que es la mejor manera de agregar archivos JavaScript y CSS adicionales a su sitio. Lo animo a que lea las entradas del códice para cada uno y aplique el conocimiento que obtenga de este artículo para que pueda ver cómo utilizarlos en su sitio.

Uso de filtros

Los filtros son como acciones, pero se utilizan para modificar algunos datos en un lugar específico, antes de que se ejecuten. Un filtro muy común es «the_content» que expone el contenido de una publicación y le permite modificarlo antes de que se muestre en el navegador. La mayoría de los complementos para compartir en redes sociales usan este filtro para agregar botones para compartir en redes sociales antes o después de publicar contenido (como nuestro propio complemento para compartir en redes sociales Monarch ).

Otro uso simple de «the_content» es agregar una fecha de copyright para publicar contenido. Aquí hay un filtro simple y devolución de llamada

01
02
03
04
05
06
07
08
09
10
11
12
13
14
add_filter( 'the_content', 'slug_add_copyright' );
function slug_add_copyright( $content ) {
//get current post
global $post;
 
//create copyright notice using post date and site name
$date = get_the_date( 'y', $post->ID );
$copyright = '<p>Copyright '.$date.' by '.get_bloginfo( 'name' );'.</p>';
 
//append copyright notice to post content and return
$content = $content.$copyright;
return $content;
 
}

Esto es muy similar al código que mostré arriba para las acciones. La diferencia aquí es que el filtro proporciona algunos datos para que los manipulemos. En la función de devolución de llamada, esos datos se utilizan como parámetro de la función. En la última línea de la función de devolución de llamada devolvemos la variable. Si no lo devolviéramos, no habría contenido de la publicación.

Engancharme

En este artículo he arañado la superficie de lo que te permite hacer el sistema de enlaces de WordPress. Este es un tema enorme, y la única forma de aprender es ensuciarse las manos y probarlo. Espero que este artículo le haya brindado los conocimientos básicos que necesita para aplicar la información del códice, otros tutoriales y otros recursos para aprovechar al máximo este componente increíblemente poderoso de WordPress.

Imagen en miniatura del artículo de jesadaphorn / shutterstock.com