WordPress para desarrollo de aplicaciones web eventos, acciones y filtros

A lo largo de esta serie, hemos analizado cómo se puede usar WordPress para crear aplicaciones web..

Hasta este punto, hemos establecido que WordPress es una base, en lugar de un marco, y hemos hablado un poco sobre cómo debemos evitar tratar de hacer que WordPress se adapte a otro tipo de patrón de diseño que el de su tipo nativo..

Con ese fin, hemos establecido que WordPress utiliza un patrón de diseño dirigido por eventos, y que esto se representa mejor con su sistema de acciones y filtros..

Aunque el propósito general de esta serie es proporcionar una encuesta de cómo WordPress puede usarse para el desarrollo de aplicaciones web, creo que es importante echar un vistazo a algunos ejemplos prácticos de cuán poderoso es realmente el sistema de gancho para entender cómo tanto nosotros como desarrolladores podemos personalizar WordPress para que se ajuste a nuestras necesidades.

Entonces, en este artículo, vamos a echar un vistazo a algunos códigos que representan algunas acciones comunes que pueden lograrse con los enganches de WordPress, así como algunas funcionalidades poco estándar..

En última instancia, al final del artículo, debe tener un claro entendimiento de por qué aprovechar la naturaleza impulsada por eventos de WordPress es clave en la creación de aplicaciones, y por qué no deberíamos tratar de hacer de WordPress y sus patrones subyacentes algo que no.


Ganchos: Acciones y Filtros

En el artículo anterior, dimos dos definiciones, una específicamente para acciones y otra específicamente para enlaces:

Las acciones son eventos en el ciclo de vida de la página de WordPress cuando ciertas cosas han ocurrido: ciertos recursos están cargados, ciertas instalaciones están disponibles y, dependiendo de qué tan temprano haya ocurrido la acción, algunas cosas aún tienen que cargarse..

Los filtros son funciones por las que WordPress pasa los datos durante ciertos puntos del ciclo de vida de la página. Son los principales responsables de interceptar, administrar y devolver datos antes de representarlos en el navegador o guardar los datos del navegador en la base de datos..

Esta es la clave para entender los dos tipos de eventos de WordPress porque habrá momentos en los que desee anticiparse a un proceso, seguir un proceso o manipular la información antes de representarla en la pantalla..

Conocer la diferencia en acciones y filtros es clave para crear aplicaciones, complementos y temas en WordPress.

Para ello, vamos a pausar la discusión sobre por qué WordPress se puede usar para aplicaciones web, y analiza de forma práctica varias acciones y filtros para asegurarnos de que todos comprendemos cómo funciona el sistema de eventos, los tipos de cosas que podemos hacer con él y, con suerte, la creatividad fluirá en cuanto a cómo Estos pueden ser utilizados para crear una experiencia más personalizada..

Acciones comunes

Primero, analizaremos varias acciones, cada una de las cuales aumenta su complejidad con respecto a la anterior para ayudar a demostrar cómo las acciones poderosas pueden llegar a ser..

1. Agregar un archivo de JavaScript a la cabecera

Esta acción es tan común que probablemente está incluida incluso entre los desarrolladores más intermedios. Aún así, el punto sigue siendo: este es un ejemplo de una acción clásica de WordPress que se usa en casi todos los tipos de temas que hay por ahí.

En definitiva, aprovecha la wp_enqueue_scripts gancho. Esto se dispara durante la secuencia de carga de la página y le permite decirle a WordPress qué archivos de origen debería incluir, así como dónde debe incluirlo (como en, en el encabezado o en el pie de página).

function example_add_theme_scripts () wp_enqueue_script ('re-example-script', get_stylesheet_directory_uri (). '/js/example.js', array ('jquery'), '1.0.0', FALSE);  add_action ('wp_enqueue_scripts', 're_add_theme_scripts');

Esto es bastante fácil de entender, ¿verdad??

Agarra el guión en el tema de example.js archivo del directorio JavaScript, asegúrese de que esté marcado como dependiente de que jQuery se cargue primero, tenga en cuenta que es la versión 1.0.0 del script, y lo hacemos no querer cargarlo en el pie de página.

2. Personaliza el Lee mas Enlazar

Fuera de la caja, WordPress ofrece la posibilidad de agregar un enlace "Leer más ..." o "Continuar leyendo ..." que se logra mediante el uso de etiqueta en el editor de post.

Puede diseñarlo utilizando estilos nativos, pero supongamos que desea agregar un código adicional que lo haga encajar mejor con su tema, que sea más fácil de integrar con un diseño sensible o algo similar..

A continuación, puede utilizar la siguiente acción:

function example_add_more_link_class ($ link, $ text) $ html = '
'; $ html. = '
'. $ enlace. '
'; $ html. = '
'; devuelve $ html; add_action ('the_content_more_link', 'example_add_more_link_class', 10, 2);

Note que estamos enganchando a the_content_more_link que acepta el ancla y el texto del ancla para el enlace más.

Dentro de la función, envolvemos el enlace real dentro de su propia div contenedor para que podamos tener un mayor control sobre el estilo del enlace.

3. Recuperar el nombre de una persona a través de Ajax

Este ejemplo particular asume que está utilizando Ajax en su proyecto y que ya ha configurado las instalaciones adecuadas para asegurarse de que puede realizar solicitudes asíncronas.

Esto también supone que los datos que se envían desde el lado del cliente al lado del servidor son la ID de un usuario para el que desea devolver su nombre.

function example_get_user_name () $ user = null; if (isset ($ _GET ['user_id']) && 0 < strlen( trim( $_GET['user_id'] ) ) )  $user = get_user_by( 'id', $_GET['user_id'] ); if ( FALSE == $user )  echo $user->nombre de pila;  else echo '-1';  // termina si muere;  // fin re_get_employee_by_name add_action ('wp_ajax_example_get_user_name', 'example_get_user_name'); add_action ('wp_ajax_nopriv_example_get_user_name', 'example_get_user_name');

Así que en el ejemplo anterior, primero verificamos que la user_id se establece en el $ _GET recopilación y, si es así, intentará recuperar al usuario desde esa ID.

Si el usuario existe, entonces el nombre del usuario volverá al cliente; de lo contrario, se hará eco de un-1'. Esto nos da la flexibilidad de responder adecuadamente en el lado del cliente..

Filtros comunes

Al igual que hicimos con las acciones mencionadas anteriormente, analizaremos varios filtros, cada uno de los cuales aumentará ligeramente la complejidad, de modo que podamos ver algunas de las cosas que podemos hacer con los filtros que nos otorgan Mayor flexibilidad dentro de nuestros proyectos de WordPress..

1. Anexar contenido a una sola publicación

Aunque el título de esta acción en particular debe ser lo suficientemente claro, digamos que desea agregar una oración al final de cada publicación en su blog, pero solamente quiero hacerlo en publicaciones individuales.

Esto se puede lograr con el siguiente código:

function example_append_post_content ($ content) if (is_single ()) $ html = '
'; $ html. = 'Este contenido aparecerá al final de una publicación.'; $ html. = '
'; $ content. = $ html; devolver $ contenido; add_filter ('the_content', 'example_append_post_content');

Esto es bastante fácil de entender, ¿verdad??

el contenido El filtro pasa el contenido real de la publicación a la función enganchada. A partir de ahí, somos libres de manipular los datos de cualquier forma que consideremos adecuada..

En nuestro caso, primero verificamos si es una sola página. Si es así, entonces añadiremos una post-sufijo contenedor con una sola frase, adjúntelo al contenido y luego devuélvalo.

Si no se trata de una sola publicación, el contenido se devolverá normalmente..

2. Redirigir a los usuarios después de iniciar sesión

Otro tipo de filtro que puede aprovechar es redirigir a los usuarios después de que hayan iniciado sesión en la aplicación.

Por ejemplo, tal vez si son administradores, deberían dirigirse al panel de entrada; De lo contrario, deberían ser redirigidos a la página de inicio del sitio..

Para lograrlo, podemos aprovechar el filtro login_redirect:

función example_login_redirect ($ redirect_to, $ request, $ usuario) return (isset ($ usuario-> roles) && is_array ($ usuario-> roles) && in_array ('administrador', $ usuario-> roles))? home_url ('/ wp-admin /'): home_url ();  // finalizar soi_login_redirect add_filter ('login_redirect', 'example_login_redirect', 10, 3);

En el código anterior, hemos proporcionado un filtro personalizado en el login_redirect gancho que realiza lo siguiente:

  • Si el usuario es un administrador, redirigirlos al panel de control
  • De lo contrario, diríjalos a la home_url del sitio.

Suficientemente fácil.

Aunque es un ejemplo relativamente simple, debería hacerte pensar en más cosas avanzadas que puedes hacer en función de los roles y / o capacidades del usuario..

Por ejemplo, en lugar de simplemente redirigirlos a ciertos aspectos de la aplicación, podría mostrarles diversos datos basados ​​en, digamos, sus roles..

3. Personalizar correos electrónicos

Este ejemplo particular es un poco más complicado porque el Añadir filtro Las llamadas vienen dentro del contexto de otra función que tiene un llamante de terceros.

Específicamente, vamos a enviar un correo electrónico, pero queremos asegurarnos de que hemos personalizado el tipo de contenido, el contenido del contenido y el nombre del remitente antes de enviar el contenido..

Para hacer esto, primero necesitamos definir una función:

function example_exmail_user ($ input) // Código eliminado de la brevedad. // Supongamos $ mensaje se define como el contenido del correo electrónico add_filter ('wp_mail_content_type', create_function (", 'return" text / html ";')); add_filter ('wp_mail_from', 'example_mail_from'); add_filter ('wp_mail_from_name ',' example_mail_from_name '); if (wp_mail ($ input [' dirección de correo electrónico '],' Su cuenta ha sido creada! ', $ message)) // Redirigir de regreso a casa wp_redirect (home_url ()); else  // Especifique una página a la que dirigir un error exit; function example_mail_from ($ email) return '[email protected]'; function example_mail_from_name ($ name) return 'Example Web App';

Después de eso, debemos definir las funciones que están enganchadas en el filtro que se especificó anteriormente. A saber…

  • wp_mail_content_type
  • wp_mail_from
  • wp_mail_from_name

Como puede ver, los filtros pueden complicarse relativamente rápido, pero son poderoso y si entiendes lo que estás haciendo y cómo encajan todas las piezas, por así decirlo, entonces realmente puedes hacer algunas cosas increíbles.


Solo rascarse la superficie

Al igual que con la mayoría de los tutoriales y ejemplos en este sitio, simplemente estamos rascando la superficie de lo que se puede hacer usando el sistema de gancho de WordPress.

Por supuesto, estos ejemplos son solo eso: ejemplos de cómo pueden ser las acciones y los filtros de gran alcance cuando se trata de personalizar la experiencia de WordPress..

Aunque este artículo en particular y el código de ejemplo están destinados a servir como un ejemplo práctico de algunas de las cosas que puede hacer, no están destinados a ser la guía definitiva para trabajar con ganchos.

En su lugar, están destinados a mostrar cómo podemos comenzar a aprovechar lo que está disponible en la API de WordPress cuando se crea una aplicación web..


Hasta la próxima…

En el próximo artículo, comenzaremos a ver varias instalaciones proporcionadas por WordPress desde el primer momento. Veremos cómo son útiles para crear aplicaciones web, cómo aprovecharlas para nuestro trabajo específico y cómo pueden ser útiles para crear aplicaciones web.

Después de eso, analizaremos cuántas de estas características funcionan bien dentro del contexto de una aplicación web, y cómo podemos usar enlaces para personalizar aún más el comportamiento que proporcionan..