Esta pregunta puede estar equivocada, no estoy seguro. Porque no tengo claro esto.
Sé add_action
que está acostumbrado a enganchar nuestra función a la función especificada. Por ejemplo, add_action('wp_head'.'myfunc');
ahora cualquier código myfunc
que se ejecute en el archivo wp_head()
. Esto está claro pero tengo dudas sobre do_action
lo que hace.
Creo que se usa para crear nuestro propio gancho como ganchos ya disponibles (wp_head, wp_footer, etc.). Si estoy en lo correcto, ¿alguien puede mostrarme una respuesta simple y comprensible con un ejemplo simple?
He intentado la diferencia en internet pero todos apuntan a la diferencia entre add_action y add_filter. No quiero ir allí porque primero quiero aclarar esto y luego me mudaré allí.
Alguien puede ayudarme?
EDITAR después de la pregunta POST
function custom_register()
{
echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';
}
do_action('custom');
add_action('custom','custom_register');
Intenté esto en el complemento pero no recibí el mensaje de alerta.
Pero cuando engancho la misma función, wp_head
entonces funciona bien
/******************working****************/
add_action('wp_head','custom_register');
do_action('custom');
después de registrar la devolución de llamada? Y asegúrese de que jQuery esté cargado.wp_head
, funciona bien pero no con elcustom
Respuestas:
Úselo
do_action( 'unique_name' )
para crear sus propias acciones.Puede usar eso para ofrecer una API para su complemento , de modo que otros complementos puedan registrar devoluciones de llamada para su acción personalizada. Ejemplo: ¿Necesito llamar a do_action en mi complemento?
Pero también puede usar acciones personalizadas (o filtros) en un tema. Ejemplo: la mejor forma de implementar secciones personalizadas en un tema de WordPress
Y puede combinar ambos para hacer un complemento y un tema trabajando juntos. Ejemplo: ¿Cómo hacer que el método desde el complemento esté disponible en el tema?
Resumen:
add_action( 'foo' )
registra una devolución de llamada,do_action( 'foo' )
ejecuta esa devolución de llamada registrada.fuente
Esta es mi suposición, así que si lo sabes mejor, haz un comentario para que pueda actualizar mi suposición.
Su código de complemento se ejecuta antes
wp_head()
(lo que podemos suponer que invocará las acciones que se le agreguen). Cuando ustedadd_action('wp_head','custom_register')
, le está diciendo a PHP que cuando (en el futuro)do_action('wp_head')
se llama, para llamarcustom_register()
también. Lo mismo ocurre con su llamada a,add_action('custom','custom_register')
pero como puede ver en su código, la llamada ado_action('custom')
ya se ha realizado, y cuando se llamó, no había (todavía) ninguna acción agregada. Es por eso que Toscho le preguntó qué sucede cuando llamado_action('custom')
después de registrar la devolución de llamada. Su respuesta sobre back end y front end es ambigua. Si intercambia las dos últimas líneas en el siguiente código, creo que funcionará:fuente
do_action
: Registra un enlace de acción mientrasadd_action
: agrega una función de devolución de llamada al enlace registrado.Ejemplo
Considere que desea imprimir algo antes de la barra lateral en su plantilla.
index.php
través de<?php add_action('bp_sidebar_left'); ?>
.functions.php
archivo puede agregar una función de devolución de llamada a ese gancho para imprimir lo que desee.add_action('bp_sidebar_left', 'bp_sidebar_left_cb'); function bp_sidebar_left_cb() { echo 'Hello World !'; }
fuente
Tienes que usar como a continuación:
fuente