Filtros en Plugins para WordPress

Más de una vez habremos querido modificar la funcionalidad de WordPress a nuestro antojo. El problema de esto es que tenemos que tocar directamente el código de WordPress, el core, y con cada actualización del sistema, nuestros cambios se pierden.

Esto no es práctico, lo suyo es tener un sistema que permita modificar la funcionalidad del sistema sin echarnos a temblar cada vez que pulsamos el botón “Actualizar”. ¿Qué podemos hacer? Pues un plugin. ¿Y de qué manera puede un plugin modificar la funcionalidad de WordPress y que esta no se pierda con las actualizaciones? Aquí entran en juego los filtros de WordPress.

¿Qué es un filtro?

Un filtro es una forma de llamar a una función del sistema para que, en lugar de la función por defecto, se ejecute otra que establezcamos. Veamos un ejemplo:

add_filter('wp_funcion','mi_funcion',10,1)

En este ejemplo, en el momento en que WordPress necesite llamar a la funcion “wp_funcion“, si la llama a través de “apply_filters” (es el único inconveniente), se ejecutará “mi_funcion” en lugar de “wp_funcion“. El primer número (10) es la prioridad del filtro (a mas baja, mayor prioridad), y el segundo número (por defecto, 1) es el número de argumentos que acepta el filtro.

Y la mejor manera de aprender es practicando, así que vamos a desarrollar un ejemplo muy simple en forma de plugin.

En este ejemplo, nuestra intención es modificar los títulos de las pestañas que aparecen en el cargador de archivos de WordPress, y pasar de tener esto…

uploader01

… a esto otro:

uploader02

Lo primero es lo primero: creamos una nueva carpeta en /wp-content/plugins con el nombre que queramos. Y dentro, creamos el archivo principal, con el mismo nombre de la carpeta, y extensión .php. Para este tutorial, únicamente necesitaremos este archivo.

A continuación, definimos la cabecera del Plugin. Esto es importante si queremos que el sistema reconozca el plugin.

/*
Plugin Name: Filtros
Plugin URI: https://www.codigonexo.com/
Description: Pruebas con filtros en WordPress
Version: 1.0
Author: Juan Viñas
Author URI: https://www.codigonexo.com/
*/

Lo siguiente es editar los nombres de las pestañas del cargador. Para ello, escribimos la siguiente función:

function filter_tabs() {
$_default_tabs = array(
'type' => __('Desde tu PC'),
'type_url' => __('De Internet'),
'library' => __('Libreria')
);
return $_default_tabs;
}

Y por supuesto, el filtro correspondiente:

add_filter('media_upload_tabs','filter_tabs');

Probad a activar y desactivar el plugin y mirad como las pestañas del cargador cambian del titulo por defecto al título que establecemos en nuestra función. No ha sido difícil, ¿Verdad?

¿Qué hace realmente esto?

Como ya hemos dicho, ‘filter_tabs‘ sustituye a ‘media_upload_tabs‘, función que podemos encontrar en “wp-admin/includes/media.php“, linea 16 (WordPress 3.4). Es una función muy similar a la nuestra, que guarda un array en $_default_tabs… ¡Pero! En lugar de acabar con return $_default_tabs (algo que evitaría que pudieramos estar haciendo esto), devuelve el resultado de pasar por el filtro: return apply_filters(‘media_upload_tabs’,$_default_tabs); Este pasa por el filtro que añadimos antes, lo que lo hace pasar por nuestra función, ‘filter_tabs’, y devolver el resultado de esta función.

Si hubiera acabado simplemente con return $_default_tabs, no sería posible modificar esta funcionalidad (Comprúebalo: comenta la linea 24 para no perderla, y añade debajo return $_default_tabs, ya verás como ignora la función de tu plugin. Recuerda luego deshacer los cambios: ¡No queremos tocar el core de WordPress!).

Es un poco engorroso tener que depender de la función apply_filters, ya que sin ella no podemos actuar directamente sobre WordPress, pero seguro que podemos encontrar alguna triquiñuela, alguna función que llame a otra que al final acabe pasando por un apply_filters, etc.

Ni que decir tiene que en nuestros plugins y themes para WordPress podemos hacer uso de los filtros como queramos. Tan solo hay que crearlos y aplicarlos. Esta funcionalidad de la API no está exclusivamente ligada a modificar la funcionalidad interna de WordPress.

Si necesitas recursos sobre filtros, te dejamos varios enlaces (en inglés) para que sigas investigando por tu cuenta.

  • A guide to thematic – Recursos para edición de temas WordPress.
  • WordPress Codex – Filter Reference – Recursos oficiales de WordPress (WordPress Codex)
  • ThemeShaper – Using Filter Hooks in WordPress themes – Una explicación similar a lo que acabas de leer, pero en inglés y orientada a temas.
¿Te ha gustado el artículo?
Sé el primero en calificar esta publicación.
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas
Loading...
Artículo escrito por

¡Exprésate! Dejanos tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

2 Comentarios

Vicente

No me queda muy claro una cosa esto seria administrar? o en el blog los usuarios finales podrían filtrar los post para encontrar aquello que no saben que buscan? Es que estoy buscando algo un buscador o filtro que pueda darle al usuario final, el post ideal para el, sin que el sepa que lo busca. Eso atreves de un "simple" cuestionario o elecciones. Aun no encuentro nada así, esta difícil.

juanjedi

Filtros en Plugins para Wordpress - http://t.co/S30PrZXY >> via @codigonexo