21Ago 2012 2 Comments */?>

Como usar Filtros y Acciones en WordPress

Categorías: Recursos, Tips de wordpress, Wordpress - Tags: ,

En este pequeño artículo les voy a intentar explicar para que sirven los filtros y acciones en wordpress y en que se diferencian.

Para empezar decir que NUNCA debemos cambiar el core de WordPress, por lo que nuestros desarrollos se deben centrar siempre dentro de la carpeta wp-content/, además de algún archivo suelto de nuestro root como pueden ser .htaccess y wp-config.php

Por esto mismo existen los filtros y acciones, ya que gracias a ellos vamos a poder “cambiar cosas” o agregar funcionalidades sin tocar el core.

Filtros en WordPress

Veamos esta función inventada como ejemplo:

function imprimir_variable(){

    $mivariable = "Hola soy una variable default del core de WordPress";

    echo apply_filters('imprimir_variable' ,$mivariable);
}

//Imprime "Hola soy una variable default del core de WordPress"

Por defecto si en nuestro theme llamamos a la función imprimir_variable(); por defecto imprime lo mostrado arriba.

Pero si queremos cambiar eso sin tocar la funcíon poder aprovechar apply_filters, que como su nombre indica se encarga de aplicar un filtro.

Para ello en nuestro theme usaremos add_filter. Por ejemplo hariamos lo siguiente:

add_filter('imprimir_variable','nueva_imprimir_variable');
function nueva_imprimir_variable(){
    return 'Esto esta genial!!!';
}

Añadiendo eso a nuestro functions.php, si llamamos a la función :

//Una vez añadido el filtro
imprimir_variable();
//Imprime Esto esta genial!!!

Como ven es muy útil. Veamos un ejemplo real. Si quieren agregar un link o cualquier cosa al final del post usaríamos el siguiente filtro:

function agregar_mi_link($content) {
       
        return $content.'<br>Un montón de tutoriales más en <a href="http://www.masquewordpress.com">Más que WordPress</a>';
}
add_filter('the_content', 'agregar_mi_link');

Para un listado de filtros visiten el codex

Acciones

Las acciones son muy parecidas a los filtros, solo que en lugar de filtrar , añadimos una funcionalidad o función a otras.

Si volvemos a nuestra función de ejemplo y la modificamos de la siguiente manera podremos añadir acciones a ella:

function imprimir_variable(){
    
    global $post
    $mivariable = "Hola soy una variable default del core de WordPress";

    do_action('mi_accion' ,$post);
    echo apply_filters('imprimir_variable' ,$mivariable);
}

//Imprime "Hola soy una variable default del core de WordPress"

Como ven hemos añadido do_action, que es donde vamos a “enganchar” nuestras acciones.

Entonces por ejemplo si hacemos:

add_action('mi_accion' ,'actualizar_meta');

function actualizar_meta($post =""){
    update_post_meta($post->ID, 'imprimir_variable', 'Si!!');
}

Al añadir esta acción cada vez que imprimer_variable sea llamada , se actualiza el post_meta con el valor Si!!. Este ejemplo es solo demostrativo y no tiene sentido alguno. Hay miles de ejemplo en la vida real, por ejemplo en el últimos post agregamos un boton al admin bar mediante una acción.

El listado de acciones también lo encontramos en el codex

Saludos!

Damián Logghe

Programador freelancer y emprendedor en sueños. Contento de ser mi jefe y poder hacer lo que me gusta. WordPress es mi principal fuente de ingreso y me escribo tanto para ayudar como para tener una guia de memoria. Quieres contratarme? Déjame un mensaje.

More Posts - Website

Follow Me:
TwitterFacebookLinkedInGoogle Plus

  • icreative

    Seguro que la primera funcion usada como ejemplo no crea un loop¿?  , la haz probado?

    • Si, funciona perfectamente. Igualmente se podría cambiar el nombre dell filtro si te crea confusión. Saludos