Subir múltiples archivos de un tirón en tu plugin de Worpress con el cargador de WordPress

Cargador archivos WordPress

Hace apenas un par de días les presentamos una forma de integrar el cargador de WordPress en tu plugin o tema. Esa forma es perfecta para cuando queremos realizar algo tan sencillo como cambiar el logo del tema o sustituir una foto en el plugin. Pero ¿qué pasa si utilizamos esa técnica para subir imágenes a una extensa galería fotográfica?. El cargador de WordPress puede subir todas esas fotos de un tirón, pero el código que vimos no está optimizado para manejar esa cantidad de imágenes. Afortunadamente, después de pensar e investigar un poco he logrado una forma para obtener desde el cargador de WordPress todas las fotos que él sube.

Save attachment

El código que vimos anteriormente se queda igual, sólo tenemos que agregar un par de cosas. Lo primero que tenemos que hacer es agregar al código del plugin el filtro add_attachment, que es invocado cada vez que el cargador de WordPress sube un archivo y lo graba en la base de datos pots de WordPress. Así, cuando subimos múltiples archivos con el cargador de WordPress, cada vez que el plugin graba la información de uno de esos archivos en la base de datos podemos llamar una función que manejará lo que va a hacer con esa imagen.

add_action("add_attachment", "tu_función");

Obtener el ID del attachment

La información de los archivos es guardada en la tabla de posts de WordPress. En dicha tabla, los archivos se distinguen de los posts porque están marcados en el campo post_type como attachment. También se guarda en esta tabla otra información que nos interesa, como la url del archivo, que podemos averiguar con la función de WordPress wp_get_attachment_url. Este es el código de la función “tu_funcion” que llamamos cuando es invocado el filtro add_attachment:

function tu_funcion(){
global $wpdb;
$ultimopost = "SELECT ID FROM " . $wpdb->prefix . "posts ORDER by ID DESC";
$resultado = $wpdb->get_row($ultimopost);
//El id de la imagen guardada actualmente está en $resultado->ID. Podríamos utilizarlo, por ejemplo para guardarlo en una base de datos personalizada
$agregar = "INSERT INTO " . $wpdb->prefix . "tu_tabla (tucampo) VALUES ($query->ID)";
$resultado2 = $wpdb->get_row($agregar);
}

Y de esta forma logramos subir de una sola buena vez una gran cantidad de archivos a nuestro plugin o theme con el cargador de WordPress sin complicaciones.

One Response
  1. junio 23, 2012

Leave a Reply

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