Interactuar con Worpdress: hooks, acciones y filtros

Hooks en WordPress

Los hooks (o ganchos) son la manera estándar de conectar (to hook) con WordPress desde un código propio. Con los hooks puedes ejecutar funciones en momentos específicos. Es la manera de hacer plugins o de interactuar con el Core de WordPress. Es importante mantener intacto el Core de WordPress, ya que, si no, en futuras actualizaciones podríamos perder toda nuestra funcionalidad.
fish_hook_248329_l
Hay dos tipos de hook: acciones y filtros.

Filtros

Se usan para modificar contenido de WordPress antes de guardarlo en la base de datos o mostrarlo en la pantalla (por ejemplo, puede alterarse un contenido tras ser recibido de la base de datos pero antes de mostrarlo en el navegador).

Un ejemplo claro sería filtrar contenido sensible. En este caso, aplica el hook de filtro add_filter() para contenido de entradas, le diremos a WordPress que cada vez que el contenido se muestre pase antes por nuestra función prowp_funcion():

<?php add_filter( 'the_content', 'prowp_funcion' ); ?>

El hook add_filter() acepta 4 parámetros:

  1. filter_action (string): el contenido a filtrar
  2. custom_filter_function (string): la función por la que pasar el filtro
  3. priority (integer): la prioridad de este filtro
  4. accepted args (integer): el número de argumentos que la función acepta

Ejemplo:

<?php
add_filter( 'the_content', 'prowp_filtro_infantil' );
function prowp_profanity_filter( $contenido ) {
    $evitar = array( 'culo', 'teta' );
    $contenido= str_ireplace( $evitar, '[censurado]', $contenido );
    return $contenido;
}
?>

Acciones

Las inician eventos en WordPress (por ejemplo, cuando un nuevo post se publica). El Core de WordPress notifica a nuestro código que un evento ha tenido lugar, y nosotros aprovechamos esa notificación para ejecutar una acción. La acción se estructura como un filtro:

<?php add_action( 'hook_name', 'prowp_function' ); ?>

Acepta los mismos 4 parámetros que el filtro.

Por ejemplo, si queremos recibir un correo electrónico cuando alguien haga un comentario en nuestro blog:

<?php
add_action( 'comment_post', 'prowp_email_new_comment' );
function prowp_email_new_comment() {
    wp_mail( 'me@example.com', 'New blog comment', 'There is a new     comment on your website: http://example.com' );
}
?>

 

Hay más de 1500 hooks y filtros diferentes, pero algunos de ellos se usan más a menudo que otros.

Filtros comunes:

  • the_content — el contenido del post o la página antes de ser mostrada
  • the_title — el tíotulo del post o página antes de ser mostrada
  • comment_text — el comentario antes de ser mostrado
  • wp_title — El <title> de la página antes de ser mostrado
  • the_permalink — el permalink de la url

Acciones comunes:

  • publish_post — se lanza cuando se publica un nuevo post
  • switch_theme — se lanza cuando se cambian temas
  • admin_head — se lanza en la sección <head> del dashoboard admin
  • user_register: se lanza cuando se crea un usuario
  • comment_post: se lanza cuando se crea un comentario

 

Podéis consultar más información y un listado de filtros y acciones en el Codex de Worpdress http://codex.wordpress.org/es:Plugin_API. También en el libro, muy recomendable y de donde hemos sacado esta información: Professional WordPress: Design and Development, de Brad Williams, David Damstra y Hal Stern.

 

 

One thought on “Interactuar con Worpdress: hooks, acciones y filtros

Leave a Reply