Plugin WordPress. 2. El directorio ‘uploads’

Seguimos esta serie de artículos sobre el desarrollo de un plugin WordPress desde 0. Vamos a empezar leyendo el contenido del directorio ‘uploads’ de WordPress.

Desarrollo de la idea de nuestro plugin WordPress

Cuando trabajamos en el back-end de nuestro WordPress, para gestionar las imágenes nos vamos a la biblioteca de ‘Medios’ del panel de administración, donde nos aparecen las diferentes imágenes que en ella disponemos. Pero esas imágenes no son reales, sino un tipo de registros que tiene el ‘core’ de WordPress para tal fin: los ‘attachments’.

Para poder crear el pseudo-sistema operativo de nuestro plugin WordPress, deberemos establecer la relación existente entre los attachments de WordPress y los archivos del directorio uploads. Para ello, deberemos buscar en los registros del sistema.

Por tanto, ya podemos ver que tendremos una doble relación de datos:

 

Attachments <—> Registros del sistema <—> Directorio uploads

A partir de aquí, ya podemos empezar a desarrollar cada una de las partes de nuestro plugin WordPress.

Codificación. Lectura del directorio ‘uploads’

Moverse por el directorio ‘uploads’

El directorio ‘uploads’ de WordPress es el lugar del disco duro de nuestro servidor donde se ubican todos los archivos de nuestra biblioteca de medios.

En el panel de administración, en Ajustes -> Ajustes multimedia, podemos indicar en ‘Subida de archivos’ si queremos que los archivos se organicen por directorios ‘Año’ y después directorios ‘Mes’. Esto nos provoca un sistema de carpetas en forma de árbol, ya que por cada año que tenemos nuestro CMS funcionando se crea un directorio, el cual a su vez tendrá tantos sub-directorios como meses en los que hayamos subido imágenes a uploads.

Para poder movernos, entonces, por esta estructura de directorios, necesitaremos una función recursiva que, empezando por el directorio raíz uploads busque los subdirectorios que contiene y, cada vez que encuentre uno, se llame a si misma con su dirección, para que vuelva a hacer lo mismo.

Para este fin, Miguel Angel Alvarez tiene un excelente artículo en DesarrolloWeb que lo borda: Listar directorios y subdirectorios con PHP.

Él genera la siguiente función:

Pero, para arrancar esta función, debemos saber dónde está el directorio ‘uploads’.

Pero, ¿dónde está ‘uploads’?

Como si de Wally se tratara, necesitamos saber la ubicación exacta del directorio ‘uploads’, para pasárselo a la función como parámetro.

Para ello, debemos buscar una función de WordPress que nos devuelva la dirección exacta del directorio. Esta es wp_upload_dir.

Esta función nos devuelve una matriz asociativa con los siguientes datos: path, url, subdir, basedir, baseurl y error. Los tres primero hacen referencia al subdirectorio en el que actualmente se están subiendo las nuevas imágenes. Los datos basedir y baseurl se refieren al directorio ‘uploads’. Nosotros, en concreto, vamos a utilizar el dato basedir.

 

El resultado

Como resultado, después de implementarlo y probarlo, el resultado final es el siguiente:

He tenido que realizar algunos arreglos, básicamente intercalar alguna ‘/’ que Miguel Angel se había olvidado, pero nada grave. la función str_replace la utilizo para homogeneizar ‘\’ y ‘/’, cuestión de gusto personal.

 

Fichero de ejemplo

Bien, recordad que los diferentes ficheros de ejemplo de los distintos artículos que vaya publicando, los cuelgo en el grupo de facebook ‘WordPress en Español’ o en mi repositorio de GitHub. Sobra decir que son totalmente de código abierto, por lo que podéis hacer con ellos lo que queráis.

Para este primer ejemplo, lo he dispuesto en una plantilla de página estática (page template), junto con un pequeño plugin. Es la forma más cómoda de ver el ejemplo. Una vez descargado el archivo ‘zip’, sólo tenéis que subirlo a vuestro WordPress y activarlo. Al hacerlo, el propio plugin copiará la plantilla en el theme que tengáis activado.

Así pues, sólo tendréis que entrar en la opción ‘Páginas’ de vuestro panel de administración, crear una nueva e indicar en ‘Atributos de página’ -> ‘Plantilla’ la plantilla del ejemplo ‘Artículo 2 serie plugin’. No es necesario ni que publiquéis la página, con darle a ‘Vista previa’ ya comprobaréis los archivos que contiene el directorio ‘uploads’ de vuestra instalación de WordPress.

 

Conclusión y próximo artículo

Hemos visto uno de los 3 puntos de la doble relación antes mencionada, el directorio ‘uploads’. En el próximo artículo veremos cómo extraer todos los attachments de nuestra biblioteca de medios, para, en el siguiente, buscar el punto intermedio, los registros del sistema, que nos relacione los dos anteriores.

 

Contributors

Aquí iré incluyendo los nombres de quienes aparecerán como ‘contributors’ del plugin. Estos nombres aparecerán después en wordpress.org, en el repositorio de plugin wordpress.

miguelthepooh, sergiotoca

¿Alguien más se anima?

 

Preguntas, retos y previos

Para la búsqueda de los attachments utilizo generalmente la función

¿Sabéis de alguna otra opción para tal efecto?

Y, para que vayáis mirando sobre el tema, aquí tenéis el enlace al codex: https://developer.wordpress.org/reference/functions/query_posts/.

Hasta la semana que viene.

Deja un comentario

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