Icono del sitio Imacreste

Crear nuestros propios hooks para WordPress

Los hooks de WordPress son puntos dentro del código fuente de WordPress en donde se muestra información y con la que podemos interactuar. Tenemos 2 formas de hacerlo, creando un funcionamiento mediante las acciones o modificando un Hook en su salida, es decir el resultado será el mismo lo que pasa que podemos recoger ese valor y adaptarlo a nuestras necesidades.

Ejemplo de los 2 tipos de Hooks

En primer lugar vamos a crear una acción nueva, que cuando recibamos un comentario nuevo nos mande un email:

add_action('comment_post','email_nuevo_coment');
function email_nuevo_coment(){
wp_mail('imacreste@gmail.com','nuevo comentario', 'Tienes un nuevo comentario en tu blog')
}

Esta acción no modifica el funcionamiento de WordPress, solo añade una funcionalidad nueva.

Por otro lado vamos a modificar la salida del title de nuestro sitio, añadiéndole al final nuestra marca.

add_filter( 'wp_title', 'anadir_imacreste' );
function anadir_imacreste($title)
{ 
return $title . " | imacreste.com"; 
}

Como podemos observar recogemos $title y le añadimos una coletilla.

Crear nuestros propios Hooks

function prueba_action(){   
do_action('prueba_action');   
}
function texto_salida(){ 
$url=apply_filters( 'mostrar_url', esc_url( home_url( '/' ) ) );  
echo '<p>Creado por: .'.$url.'</p>';    
}
add_action('pre_footer','texto_salida', 5);

En este ejemplo hemos dado de alta un hook de acción:

function prueba_action(){    
do_action('prueba_action');    
}

Y en el siguiente código lo que hacemos es usarlo, haciendo que muestre por pantalla «creado por y la URL del sitio». Solo falta añadir en el tema en qué lugar queremos colocar este Hook de la siguiente forma:

<?php pre_footer(); ?>

Por ejemplo podemos ponerlo en el footer, para que al final tengamos el clásico creado por.

Si nos fijamos en el código fuente anterior, tenemos:

$url=apply_filters( 'mostrar_url', esc_url( home_url( '/' ) ) );

Para obtener el resultado esperado bastaría con: esc_url( home_url( ‘/’ ) ), pero hemos aprovechado a introducir un Hook de tipo filtro, y que permitirá de forma sencilla y sin modificar el funcionamiento general modificar la salida de la URL.

function cambiar_url_salida($url)
{
 $url = "prueba.com";
 return $url;
}
add_filter('mostrar_url', 'cambiar_url_salida');

En este ejemplo modificamos la URl por http://prueba.es pero podríamos no modificar la url y añadirle solo html, como por ejemplo:

function cambiar_url_salida($url)
{
 $url = "<a href='".$url."'>".$url."</a>";
 return $url;
}
add_filter('mostrar_url', 'cambiar_url_salida');

En este ejemplo mostramos la URL por defecto pero modificamos su salida añadiéndole un enlace.

Y esto es todo, si creamos plugins o temas podemos habilitar nuestros propios Hooks para que la edición del código se pueda realizar en el fichero functions.php.

Salir de la versión móvil