Blog

HOOKS – wordpress
julio 2, 2013 | en Php, Wordpress

HOOKS – wordpress

El término hooks se refiere a un evento que ocurre en wordpress. Nosotros podemos hacer ejecutar una función cuando ocurre ese evento. Un evento puede ser por ejemplo cuando se despliaga el contenido de un post o cuando se despliega el pie de página, solo por mencionar un par de ejemplos de eventos.

Hay dos tipos de hooks en wordpress:

Action Hooks: Se usa comúnmente cuando se quiere ejecutar alguna función luego que ocurre un evento específico.

Filter Hooks: Cuando ocurre un evento te permite pasar algún contenido a través de una función y retornarla a wordpress, generalmente se usa para modificar texto, como por ejemplo poner en negrita ciertas palabras en el contenido del post.

En ambos casos se deberá escribir una función y vincularla a un evento con add_action() o add_filter() segun sea el caso.

Ejemplo de uso action hooks: Agregar un favicon.

Existe un action hooks llamado wp_head que se ejecuta dentro de los tags <head></head> . Podemos uitlizar este hook para agregar nuestro favicon.

Primero localizamos la carpeta de nuestro template instalado en wordpress y luego abrimos el archivo functions.php. Luego creamos una función que imprime el link a la localización del favicon.

function inkuba_favicon() {
      echo '<link rel="shortcut icon" href="' . get_bloginfo('stylesheet_directory') . '/images/favicon.ico" />';
}

Por último necesitamos vincular esa función con el wp_head action hook, lo hacemos con esta simple linea de código:

// el primer parámetro es el nombre del action hook y el segundo el nombre de la función.
add_action("wp_head", "inkuba_favicon");

De esta forma aparecerá nuestro link al favicon dentro de los tag <head></head>.

Podemos ver una lista de action hooks disponibles en wordpress aquí: http://codex.wordpress.org/Plugin_API/Action_Reference

Ejemplo de uso filter hooks: Modificar el contenido de un post.

Existe un filter hooks llamado the_content el cual nos permite obtener el contenido de un post para poder modificarlo antes de desplegarlo en la página.

En este ejemplo vamos a poner en negrita todas las palabras que sean “wordpress” dentro del post.

function inkuba_negrita_wordpress($content) {
      $content = preg_replace("/(wordpress)/i", "<b>$1</b>", $content);
      return $content;
}

Como vemos en la función, existe un parámetro llamdo “$content” por el cual worpress nos pasa el contenido del post para que nosotros podamos modificarlo. Luego simplemente utilizamos la función preg_replace para agregar los tags <b></b> a cada palabra que sea “wordpress”.

Por último necesitamos vincular esa función con el the_content filter hook, lo hacemos con esta simple linea de código:

// el primer parámetro es el nombre del filter hook y el segundo el nombre de la función.
   add_filter("the_content", "inkuba_negrita_wordpress");

Podemos ver una lista de filter hooks disponibles en wordpress aquí: http://codex.wordpress.org/Plugin_API/Filter_Reference

comments powered by Disqus