Crear un metabox para subir múltiples imágenes

12 ene 2011, 19:10:22
Vistas: 17.6K
Votos: 8

¿Es posible crear un metabox que permita adjuntar múltiples imágenes a una publicación?

1
Comentarios

Existe un tutorial completo para subir varias imágenes añadiendo meta-boxes a una entrada, página o tipo de contenido personalizado en http://www.emenia.es/plugin-subir-imagenes-campo-personalizado-wordpress/ Está en español, pero pude hacerlo funcionar sin problemas.

User User
14 dic 2011 14:43:49
Todas las respuestas a la pregunta 4
2

Eso depende completamente de lo que entiendas por "adjuntar".

Cada entrada de WordPress ya puede tener múltiples archivos adjuntos - fotos, documentos, etc. Subes estos archivos usando el cargador incorporado y todos quedarán marcados como "adjuntos" a ese ID de entrada específico.

Puedes hacer referencia a estos archivos posteriormente de forma programática en otros lugares. Por ejemplo, el siguiente código listará todos los adjuntos para una entrada específica (código de Snipplr):

$args = array(
    'post_type' => 'attachment',
    'numberposts' => null,
    'post_status' => null,
    'post_parent' => $post->ID
);
$attachments = get_posts($args);
if ($attachments) {
    foreach ($attachments as $attachment) {
        echo apply_filters('the_title', $attachment->post_title);
        the_attachment_link($attachment->ID, false);
    }
}

Toda esta funcionalidad es accesible mediante el botón predeterminado "Añadir medio" ubicado a la derecha de "Subir/Insertar" en la pantalla de nueva entrada. Después de añadir una imagen, puedes hacer clic en "Seleccionar archivos" nuevamente y subir una segunda imagen. Luego una tercera. Y una cuarta. Tantos como desees.

Cada una de estas imágenes quedará "adjunta" a la entrada... incluso si no están insertadas en el contenido.

12 ene 2011 19:28:14
Comentarios

Por alguna extraña razón, solo puedo hacer que ese código muestre el primer archivo adjunto en la plantilla, aunque los demás están adjuntos. ¿Alguna idea? Aquí está el código... http://dl.dropbox.com/u/497583/code/wp-attactments.txt

agileapricot agileapricot
12 ene 2011 23:14:30

Necesitas usar algunas variables diferentes. Estás usando tanto $post como $args en al menos dos contextos distintos, lo que hace muy difícil entender exactamente qué es lo que intentas hacer en cada momento. Pero probé el código que publiqué arriba y sí funciona...

EAMann EAMann
12 ene 2011 23:30:02
2

Aquí tienes un tutorial completo con archivos fuente que hacen exactamente lo que deseas,
Puedes subir múltiples imágenes clonando el campo de entrada y también puedes previsualizar, eliminar imágenes con ajax, añadir múltiples metaboxes a diferentes tipos de entradas y más.

http://www.deluxeblogtips.com/2010/05/howto-meta-box-wordpress.html

12 ene 2011 19:57:30
Comentarios

Estoy de acuerdo. Funciona de maravilla.

Manny Fleurmond Manny Fleurmond
13 ene 2011 07:05:58

Aunque el enlace que proporcionaste ya no está disponible, el proyecto en cuestión se ha convertido en un plugin/biblioteca completo y amigable para desarrolladores. Puedes verlo en: https://wordpress.org/plugins/meta-box/ y https://github.com/wpmetabox ... Parece un gran producto.

Kerry Randolph Kerry Randolph
21 may 2019 16:33:09
0

También recomendaría echar un vistazo a http://www.wpalchemy.com. WPAlchemy es una "clase" increíble (casi un plugin) para añadir fácilmente meta boxes personalizados a tu sitio. Lo uso ampliamente y me ha impresionado su facilidad de uso y el compromiso del desarrollador y la creciente comunidad.

12 ene 2011 23:35:22
0

Sí, es bastante posible. Mira una respuesta que recibí sobre metaboxes. Básicamente, solo necesitarás agregar un hook para save_post y verificar el campo nonce.

function my_save_post_callback( $post_id, $post )
{
    if ( empty($_POST) || !isset($_POST['my_custom_metabox']) || !wp_verify_nonce( $_POST['my_custom_metabox'], plugin_basename( __FILE__ ) ) )
    {
        return $post->ID;
    }

    // Manejar la subida aquí

}
add_action( 'save_post', 'my_save_post_callback', 1, 2);
12 ene 2011 19:23:09