ccc

Wordpress: Hooks

Esta web es muy interesante para localizar todos los Hooks que existen: www.hookr.io
Para buscar en la web todos los hooks darle arriba del todo a "Core" y luego ya buscar filtrando.

Desde code snippets creas uno nuevo:
// con esta funcion añado un nuevo meta al head
function add_new_meta_al_head() {
echo "<meta name='lsg' content='lsg'>";
}

add_action("wp_head", "add_new_meta_al_head", 10,0);

Otro Ejemplo: function lsg_add_coletilla_to_post( $post_object ) {
$post_object->post_title = $post_object->post_title." COLETILLA AL TITULO";
}
add_action( 'the_post', 'lsg_add_coletilla_to_post' );


Ejemplo para filtrar contenido y poder modificarlo.

Desde Code snippets creamos uno nuevo:
// este ejemplo add más texto a cada uno de los post de la web
function filter_the_content( $post_post_content ) {
    return $post_post_content." y esto lo añado yo por mi cuenta";
};
add_filter( 'the_content', 'filter_the_content', 10, 1 );

Otro ejemplo de add_filter:
function modifica_texto($contenido) {
    return str_replace("hola", "adios", $contenido);
}
add_filter('the_content','modifica_texto');

Una forma sencilla de entender la diferencia entre add_action y add_filter es que add_filter devuelven siempre un valor, que es el resultado de modificar el argumento que han recibido.

Luego está do_action que la principal diferencia con add_action es que se lanza una vez se haya ejecutado la acción, por ejemplo:
// Se ejecuta una vez que un post haya sido actualizado
do_action( 'post_updated', $post_ID, $post_after, $post_before);
// Se ejecuta una vez que un post haya sido salvado
do_action( 'save_post', $post_ID, $post, $update );
// Se ejecuta una vez que un nuevo post haya sido dado de alta
do_action( 'wp_insert_post', $post_ID, $post, $update );

También gracias a la combinación de add_action con do_action podemos crear nuestras propias funciones personalizadas, por ejemplo si ponemos:
add_action('funcionLSG', 'ejecutarLSG');
function ejecutarLSG(){
    echo 'Hola mundo';
}

No se ejecutará nunca pues esta acción no está asociada a ningún hook del wordpress.

Pero si añadimos:
do_action('funcionLSG');

Ya sí que se ejecutará justo en el sitio dónde hayamos puesto ese do_action.

Incluso hasta se le pueden pasar parámetros:
add_action('funcionLSG', 'ejecutarLSG');
function ejecutarLSG($varAux){
    echo 'Hola mundo '.$varAux;
}

do_action('funcionLSG', "pepe");

Listado de todas las acciones y filtros que hay en Wordpress:
https://codex.wordpress.org/Plugin_API/Action_Reference
https://codex.wordpress.org/Plugin_API/Filter_Reference

Ejemplos de acciones y filtros con hooks:
https://blog.teamtreehouse.com/hooks-wordpress-actions-filters-examples
https://www.smashingmagazine.com/2009/08/10-useful-wordpress-hook-hacks/

No hay comentarios:

Publicar un comentario