Juntar todos los datos (7) de nuestro plugin

Después de ver qué datos necesitamos y cómo conseguirlos, llega el primer hito de esta serie de artículos: juntar todos los datos. Por tanto, relajaos y concentraos, que este artículo promete mucha ‘chicha’.

Miguel, ya te respondí a tu comentario en el anterior post, que estuvieras tranquilo si no acababas de entender el código en él expuesto. Con el resultado de la UI del front-end que en este artículo y el plugin correspondiente se genera, entiendo que por fin comprenderás cuál es el camino que he tomado. Verás que estamos dotando al back-end (definitivamente) de una buena herramienta para gestionar los attachments, los registros (sizes) del sistema y los archivos del directorio ‘uploads

 

Estructura de este artículo

Este artículo no se va a estructurar como los demás, con un desarrollo de idea y una codificación, más o menos independientes una de otra. Por lo contrario, vamos a ver fotos de la pantalla resultante, explicando cómo he realizado cada cosa y luego una breve explicación del código, pero sin entrar en profundidad.

Para estudiar mejor el código, más adelante recordaré las vías habituales para su descarga, así como las instrucciones para su ejecución.

 

Empecemos. Todos los datos de un attachment

Vamos a ir, pues, desgranando los diferentes grupos de datos que contiene un attachment, los registros del sistema y los archivos de ‘uploads‘.

Datos principales de un attachment

Todos los datos de los attachments
Todos los datos de los attachments

Cuando ejecutamos la ‘Vista previa’ de la página en la que hayamos indicado la plantilla de nuestro plugin, veremos los diferentes attachments de nuestra librería de medios, con estos datos:

  • ID del attachment
  • Título del attachment
  • Ancho de la imagen inicialmente subida a WordPress
  • Alto de la imagen inicialmente subida a WordPress
  • Ruta al archivo de la imagen inicial
  • Nombre del archivo de la imagen inicial
  • Imagen (a tamaño reducido)

Además, al inicio de cada registro disponemos de tres botones que nos indican: ‘Formatos’, ‘Editables’ y ‘Avanzadas’.

ID y título están sacados de la query que desarrollamos en el artículo 3 de esta misma serie, y que habíamos guardado en $stmpujante_attachments. De la misma consulta extraemos el campo ‘guid’ que contiene el archivo con la ruta completa. Si a este dato le substraemos el nombre del archivo, obtenemos la ruta.

Como veíamos en el artículo 4 de esta serie, con la instrucción wp_get_attachment_metadata( $post_id ) obtenemos los metadatos del attachment, que volcamos en $stmpujante_metadatos. De aquí extraemos el nombre del archivo, y el ancho y el alto de la imagen inicialmente subida.

 

Formatos del sistema y del attachment, y archivos de ‘uploads’

Si clicamos sobre el botón ‘Formatos’ de cada uno de los attachments, se nos mostrará abajo una tabla adicional.

Todos los datos de un attachment
Todos los datos de un attachment

Vamos a ver, paso a paso, cuál es el proceso para generar esta tabla:

  1. Buscamos, uno por uno, los diferentes tamaños registrados en el sistema, según aprendimos en el artículo 4 de esta serie. Primera columna de datos, ‘Formatos del sistema’.
  2. Por cada uno de ellos, buscamos si hay coincidencia en la matriz ‘sizes’ contenida en $stmpujante_metadatos, arriba mencionada, del attachment en cuestión.
  3. Si existe, la mostramos en la segunda columna de datos, ‘Formatos del attachment’. Además, lo establecemos como vinculado.
  4. Con el nombre del fichero de esta segunda columna, comprobamos si está en el directorio ‘uploads’, como ya vimos en el artículo 2 de esta serie. Aquí también debemos indicar que ya está vinculado.
  5. Una vez hemos terminado con todos los tamaños registrados en el sistema, debemos saber si hay formatos de attachment ‘huérfanos’.
  6. Para ello, buscaremos entre los ‘sizes’ del attachment aquellos que no han sido vinculados, que definiremos como ‘Formato no coincidente’, y mostraremos sus datos.
  7. Entonces, repetiremos la operación con los archivos de ‘uploads’, igual que en el paso 4.
  8. La subtabla de abajo la creamos mediante el plugin que estudiamos la semana pasada en el artículo 6 de esta serie.
  9. Finalmente, una vez hagamos todo este proceso con todos los attachments, buscaremos los archivos que no han sido vinculados, y los mostraremos en una tabla final separada.

 

Campos editables de un attachment

Si clicamos ahora en el botón ‘Editables’ nos aparecerá esta vez una tabla inferior como esta:

Todos los datos de un attachment
Todos los datos de un attachment

Si os fijáis, los campos que aquí aparecen son los mismos que aparecen en la página ‘Editar medios’ del panel de administración de WordPress.

Aunque estos datos aún no se puedan editar aquí, ya lo haremos. Por lo tanto, ya os adelanto que este será un medio de realizar ajustes SEO a los attachments, más rápido que ir recorriendo uno a uno y editando estos campos.

Casi todos los campos aparecen en la query de los attachments, salvo el ‘Texto Alt’, que lo tenemos que buscar en la tabla ‘wp_options’ de la base de datos de WordPress, es decir, mediante

get_post_meta( $post_id, ‘_wp_attachment_image_alt’, true );

donde $post_id es la id del attachment, ‘_wp_attachment_image_alt’ es la clave del registro y true indica a la función que sea un resultado único.

 

Los datos avanzados

Os lo reconozco. Los he llamado así porque no sé cómo llamarlos. Son, por un lado, el ‘resto de datos del attachment’; por otro, son los ‘Metadatos de la imagen’.

Todos los datos del attachment
Todos los datos del attachment

Estos datos, no sé si estaréis de acuerdo conmigo, no merecen ser modificados, y son meramente informativos.

 

Conclusión y próximo artículo

Me reconoceréis que la serie comienza a coger buena pinta. Entiendo que los artículos anteriores eran muy técnicos, y sin efectos prácticos palpables. Pero eran obligatorios si queremos recorrer todo el camino que lleva a la creación de un plugin.

En el próximo artículo, como ya estoy harto del sistema que estamos empleando, aprenderemos a crear una página del menú del panel de administración, en la cual pondremos lo que tenemos, y obviaremos el sistema de plantilla de página. En siguientes artículos iremos añadiendo otras características a nuestro plugin, a la vez que iremos estudiando las diferentes funcionalidades que puede tener, y en qué condiciones.

 

Fichero de ejemplo

Como en cada artículo en que se publica un fichero de ejemplo, éste lo podéis encontrar en mi cuenta de GitHub, así como en el grupo de Facebook ‘WordPress en Español‘. Para ver el resultado, es tan fácil como irse a ‘Páginas’ y editar una cualquiera o crear una nueva (no hace falta grabarla ni publicarla), ir a ‘Atributos de página’ -> ‘Plantilla’ y seleccionar la plantilla Artículo 7 serie plugin. Simplemente clicando entonces ‘Vista previa’ visualizaréis lo que hemos visto en este artículo.

 

Contributors

Esta semana os dejo ‘chicha’ para qué penséis qué funciones puede tener el plugin y en qué condiciones se podrían ejecutar. Mientras tanto, la lista de contributors permanece así:

miguelthepoohsergiotoca

 

Preguntas, previos y retos

Visto lo visto, aquí os lanzo unas preguntas:

  • ¿En qué casos se podrían borrar ficheros?
  • ¿Sería lógico borrar ficheros sin borrar registros?
  • ¿Y borrar registros sin borrar ficheros?

En fin, aquí lo dejo. Presiento y espero, que esta semana habrá más participación. Respuestas, comentarios y sugerencias, en los comentarios. Así quedará registrado.

 

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 *