¿No te parece que algunos plugins de WordPress ¿son afortunados? WooCommerce, Fácil de dígitos Descargar, Formas de gravedad : cada uno de estos complementos está impulsado por una empresa completa, con docenas de extensiones de terceros y cada vez más características agregadas por ellos que aumentan el potencial del complemento. Durante este tiempo, la mayoría de los otros complementos no progresan.

¿Cómo puede un solo complemento convertirse en la base de un ecosistema tecnológico próspero? Hay muchas respuestas: ser el primero en comercializar, crear un gran producto, tener perspicacia para el marketing y todo lo demás. Pero hoy nos vamos a centrar en una parte importante de la respuesta técnica, a saber: extensibilidad, a través del sistema de enlaces de WordPress.

Hoy vamos a usar un ejemplo de Plugin de WordPress para cubrir las dos funciones clave que confieren estado de extensibilidad a un complemento, a saber: apply_filters() y do_action().

Extensiones: Las extensiones para los plugins

Por tanto, está claro que cuando hablamos de "extensiones", nos referimos a plugins que están hechos para otros. Tomemos un ejemplo: " Stripe para WooCommerce ".

Esta extensión no hace nada si aún no lo has hecho WooCommerce. si instalas WooCommerce, luego compre e instale “ raya para WooCommerce Como un complemento separado, y ampliará la funcionalidad de WooCommerce para que pueda comenzar a aceptar pagos a través de la pasarela de pago Stripe.

Entonces tienes un complemento que mejora otro complemento de una manera específica. Es una extensión. Estos son adverbios del ecosistema de WordPress.

¿Cómo funcionan las funciones: apply_filters () y do_action ()?

La siguiente pregunta: ¿cómo llega WooCommerce a ver su funcionalidad extendida? Después de todo, es fácil imaginarse escribiendo un complemento de comercio electrónico que " sólo funciona con algunas pasarelas de pago ". Luego, si realmente quiere Stripe, tendrá que modificar completamente WooCommerce, y probablemente termine creando su propia herramienta llamada StripeCommerce, que se convierte en un competidor de WooCommerce o simplemente vive en el sitio de uno de sus clientes que podría pagar Asistencia personalizada.

Es un desastre contemplar, pero afortunadamente WooCommerce está haciendo algo mucho mejor. Utiliza dos funciones: apply_filters () y do_action (). Estas dos funciones le permiten crear corchetes en WordPress, y esta es una parte fundamental del sistema WordPress Hooks en general.

apply_filters () y do_action () Una diferencia bastante simple:

  • apply_filters () le permite conectar filtros a funciones.
  • do_action () le permite conectar acciones a funciones.

Veamos un ejemplo para ver cómo funcionan.

Ejemplo de uso de ganchos WooPress.

Para nuestro ejemplo, usaremos un complemento "Cita del día", además de una extensión que modifica este complemento de una manera específica. Para seguir y ver el código completo, descargue los complementos como un archivo ZIP https://wpshout.com/media/2016/10/plugins.zip.

El plug-in originales

Este complemento utiliza la API expuesta por una biblioteca de cotizaciones externa y almacena la cotización resultante como datos transitorios de WordPress que se actualizan cada 24 horas. Regrese a este artículo en cualquier momento y verá una cita aleatoria de este día sobre el tema de la "vida", que debería ser lo suficientemente amplia.

extensión del complemento

Como sabemos, el problema con la mayoría de las citas es que "Carl Sagan" no las dice. Nuestra extensión corrige este problema utilizando una serie de herramientas:

  • Un membrete grande que muestra la fecha de hoy y la cita es de Carl Sagan,
  • Algunos reemplazos de palabras específicos para convertir una cita en lo que Carl Sagan podría haber dicho
  • Los autores de las citas originales cambian y las citas ahora se atribuyen correctamente a Carl Sagan.

Aquí está el complemento y la extensión, en acción:

citación en acción

el código

Para que esto suceda, son necesarios dos pasos:

El complemento original define ganchos (ganchos de acción y ganchos de filtro) que permiten que el código externo modifique o agregue su propio código en puntos clave. El complemento usa apply_filters () y do_action () para lograr esto.

La extensión define funciones de gancho en la acción y filtros, que modifican el complemento original de una manera necesaria.

Código clave en el complemento original

La parte más importante del código para nosotros es lo que hacemos después de obtener nuestros datos de la API. Estos datos están disponibles como una matriz con dos elementos: texto: el texto de la cita; y autor: la persona que dijo la cita. Por tanto, nuestro código se verá así:

add_shortcode ('extensible_plugin_demo', 'bpc_output_extensible_plugin'); función bpc_output_extensible_plugin () {ob_start (); // ¡Enganche antes de mostrar! do_action ('bpc_before_get_qod_text'); $ qod_data = bpc_get_qod_data (); if (is_array ($ qod_data)) {echo ' '; $ qod_text = $ qod_data ['texto']; $ qod_author = $ qod_data ['autor']; // ¡Filtra el contenido! $ qod_text = apply_filters ('bpc_qod_text', $ qod_text); $ qod_author = apply_filters ('bpc_qod_author', $ qod_author); echo $ qod_text; eco ' '; echo $ qod_author; eco ' '; } // ¡Acción de gancho después del resto de la salida! do_action ('bpc_after_get_qod_text'); return ob_get_clean (); }

Código clave en la extensión

El complemento no consiste en nada más que acciones y filtros para modificar el complemento original. Aquí está el código de la extensión:

add_filter( 'bpc_qod_text', 'bpc_filter_qod_text' );
// Filter: remplacer des mots spécifique
function bpc_filter_qod_text( $text ) {
    $text = str_replace( 
        array( ' I ', ' me ', ' the ', ' is ', ' am ', ' are ' ),
        array( ' I, a descendent of savannah-dwelling hominids that somehow evolved an astounding capacity for self-reflection, ', ' the cooled-off stellar matter I call "me" ', ' the trillions of atoms that make up the ', ' seems, without the mind-boggling perspective of quantum physics, to be ', ' cannot, due to the Heisenberg Uncertainty Principle, be determined not to be ', ' appear to our best scientific instruments to be ' ),
        $text
    );
    return $text;
}

// Filter: barré le texte qui précède le nom de l'auteur et ajouter Carl Sagan à la suite
add_filter( 'bpc_qod_author', 'wpshout_filter_qod_author' );
function wpshout_filter_qod_author( $text ) {
    $text = '<strike>' . $text . '</strike> Carl Sagan';
    return $text;
}

// Action: Ajouter un titre
add_action( 'bpc_before_get_qod_text', 'bpc_set_up_quote' );
function wpshout_set_up_quote() {
    echo '<h4>Carl Sagan Quote of the Day for ' . date( 'F j, Y') . ':</h4>';
}

// Action: Ajouter une image
add_action( 'bpc_after_get_qod_text', 'bpc_add_carl_boom' );
function bpc_add_carl_boom() {

    echo '<div><img class="aligncenter" src="' . plugin_dir_url( __FILE__ ) . 'carl_sagan_mind_blown.gif"></div>';
}

Como puede ver, estos son usos bastante estándar de " add_action () "Y" add_filter () "Y ambas funciones están enganchadas en corchetes que llamamos" bpc_qod_text ".

El resultado final es que nuestro complemento ahora es extensible: un segundo desarrollador puede ver modificar el complemento y decir "Deseo Carl Sagan dice », Y hágalo utilizando el complemento original como base, al igual que los temas para padres e hijos en WordPress.

Este es un truco que hace que un complemento como WooCommerce sea muy popular y le permite agregar nuevas funciones.

Eso es todo por este tutorial. Espero que entiendas mejor los diferentes casos de uso de filtros y acciones de WordPress.