Hola @Sruly :
Casi has respondido tu propia pregunta, pero daré más detalles.
Ganchos de acción
Los ganchos de acciones están destinados a su uso cuando el núcleo de WordPress o algún complemento o tema le brinda la oportunidad de insertar su código en un punto determinado y hacer una o más de las siguientes acciones :
- Úselo
echo
para inyectar algo de HTML u otro contenido en el búfer de respuesta,
- Modificar el estado de la variable global para una o más variables, y / o
- Modifique los parámetros pasados a su función de enlace (suponiendo que se llamó al
do_action_ref_array()
enlace en lugar de do_action()
porque este último no admite el paso de variables por referencia ).
Ganchos de filtro
Los ganchos de filtro se comportan de manera muy similar a los ganchos de acción, pero su uso previsto es recibir un valor y potencialmente devolver una versión modificada del valor. Un gancho de filtro también podría usarse como un gancho de acción, es decir, para modificar una variable global o generar algo de HTML, suponiendo que eso es lo que necesita hacer cuando se llama al gancho. Una cosa que es muy importante acerca de Filter Hooks de la que no debe preocuparse con Action Hooks es que la persona que usa un Filter Hook debe devolver (una versión modificada de) el primer parámetro que se pasó. ¡Un error común de los novatos es olvidarse de devolver ese valor!
Uso de parámetros adicionales para proporcionar contexto en ganchos de filtro
Como comentario aparte , sentí que los ganchos de filtro se vieron obstaculizados en versiones anteriores de WordPress porque recibirían solo un parámetro; es decir, obtendrían un valor para modificar pero no un segundo o tercer parámetro para proporcionar ningún contexto. Últimamente, y positivamente, sin embargo, parece que el equipo central de WordPress ha estado agregando (para mí) con alegría parámetros adicionales a los ganchos de filtro para que pueda descubrir más contexto. Un buen ejemplo es el posts_where
gancho; Creo que algunas versiones anteriores solo aceptaban un parámetro que era la clase SQL "where" de la consulta actual, pero ahora acepta tanto la cláusula where como una referencia a la instancia actual de la WP_Query
clase que invoca el gancho.
Entonces, ¿cuál es la diferencia real?
En realidad, los Filter Hooks son un superconjunto de Action Hooks. El primero puede hacer cualquier cosa que el segundo pueda hacer y un poco más, aunque el desarrollador no tiene la responsabilidad de devolver un valor con el gancho de acción que hace con el gancho de filtro.
Orientación y intención telegráfica
Pero eso probablemente no sea lo importante. Creo que lo importante es que si un desarrollador elige usar un gancho de acción frente a un gancho de filtro o viceversa, está telegrafiando su intención y, por lo tanto, brinda orientación al desarrollador temático o desarrollador de complementos que podría estar usando el gancho. En esencia, dicen "Voy a llamarte, haz lo que sea que tengas que hacer" O "Te voy a pasar este valor para modificarlo, pero asegúrate de que lo devuelvas ".
Así que, en última instancia , creo que la orientación proporcionada por la elección del tipo de gancho es el valor real detrás de la distinción . OMI, de todos modos.
¡Espero que esto ayude!
Si nos fijamos en la fuente de la
add_action()
función principal, es solo un contenedor para laadd_filter()
función ...Y si observa la
do_action()
función central, es muy similar a laapply_filters()
función central, con una diferencia muy clave: no devuelve un valor.Entonces, ¿qué significa esto? Las acciones son como filtros, excepto que una acción no devuelve un valor, por lo que no puede modificar los datos. Muestra que fue simple crear el mecanismo de acción de WordPress simplemente copiando el mecanismo de filtro y no devolviendo un valor. Básicamente, todo lo que puede hacer con una acción es simplemente ejecutar una función sin modificar algún valor.
fuente
En palabras simples.
Actualizado: podemos ampliar cualquier complemento que use las acciones y los filtros sin modificar su código. Al agregar filtros y acciones en nuestro propio tema o complemento.
¿Cómo utilizar?
Acción:
Consulte a continuación ejemplos simples en su
functions.php
archivo de tema .El programa anterior imprime la salida:
[NOTA: Aquí test () simplemente llama a la función. Y ejecute la función de devolución de llamada 'prueba'.]
El programa anterior imprime la salida:
[NOTA: Aquí
do_action('test')
funciona como una función de llamada. Y ejecute la función de devolución de llamada 'prueba1'.]El programa anterior imprime la salida:
[NOTA: Aquí
do_action('test')
funciona como una función de llamada. Y ejecute funciones de devolución de llamada en sus prioridades.La función de devolución de llamada 'prueba1' tiene prioridad 2 y 'prueba2' tiene prioridad 1.]
Si las prioridades cambian como 'prueba1' con prioridad 1 y 'prueba2' con prioridad 2, la salida será:
functions.php
El programa anterior imprime la salida:
Ahora, cree un complemento de muestra para verificar cómo funciona para un desarrollador de terceros.
/wp-content/plugins/
directorio.Ahora, active nuestro complemento simple desde el panel de administración de WordPress.
Vaya al complemento de menú y actívelo.
Después de activar el complemento del programa anterior, imprima la salida:
[NOTA: Si agregamos la prioridad para nuestra acción de complemento del 1 al 9, imprime la salida como:
Porque, WordPress considera el
10 priority by default
para todas las acciones añadidas.]Filtros
Verifique los siguientes ejemplos:
Ejemplo simple de PHP:
El programa anterior imprime la salida:
El programa anterior imprime la salida:
Aquí, hemos añadido filtro
my_filter_name
y cambiar la salida existentearray( 'one', 'two' )
conarray( 'three', 'four' )
sin cambiar el tema / plugin archivos.fuente