Création d'une metabox pour télécharger plusieurs images

8

Est-il possible de créer une méta-boîte qui attache plusieurs images à un message?

agileapricot
la source
Il y a un tutoriel complet pour télécharger plusieurs images en ajoutant des méta-boîtes à un message, une page ou un type de message personnalisé sur emenia.es/plugin-subir-imagenes-campo-personalizado-wordpress Il est en espagnol, mais je pourrais le faire fonctionner sans problème .

Réponses:

7

Cela dépend entièrement de ce que vous entendez par «attacher».

Chaque publication WordPress peut déjà avoir plusieurs pièces jointes multimédias - photos, documents, etc. Vous les téléchargez à l'aide du programme de téléchargement intégré et elles seront toutes marquées comme «jointes» à cet ID de publication spécifique.

Vous pouvez les consulter ultérieurement par programmation ailleurs. Par exemple, le code suivant répertorie toutes les pièces jointes d'un article spécifique (code 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);
    }
}

Toutes ces fonctionnalités sont accessibles via le bouton par défaut "Ajouter un média" à l'extrême droite de "Télécharger / Insérer" sur le nouvel écran de publication. Après avoir ajouté une image, vous pouvez cliquer à nouveau sur "Sélectionner les fichiers" et télécharger une deuxième image. Puis un troisième. Puis un quatrième. Autant que vous voulez.

Chacune de ces images sera "attachée" au message ... même si elles ne sont pas insérées dans le contenu.

EAMann
la source
Pour une raison étrange, je ne peux obtenir que ce code pour sortir la première pièce jointe dans le modèle, même si les autres sont attachés. Des idées? Voici le code ... dl.dropbox.com/u/497583/code/wp-attactments.txt
agileapricot
Vous devez utiliser différentes variables. Vous utilisez les deux $postet $argsdans au moins deux contextes différents, ce qui rend très difficile de comprendre exactement ce que vous essayez de faire à un moment donné. Mais j'ai testé le code que j'ai posté ci-dessus et cela fonctionne ...
EAMann
6

Voici un tutoriel complet avec des fichiers source qui font exactement ce que vous voulez,
vous pouvez télécharger plusieurs images en clonant le champ de saisie et vous pouvez également prévisualiser, supprimer des images avec ajax, ajouter plusieurs métaboxes à plusieurs types de publication et plus encore.

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

Philippe
la source
J'appuie ceci. Il fonctionne comme un charme.
Manny Fleurmond
Bien que ce lien que vous avez fourni soit maintenant mort, le projet de référence s'est transformé en un plugin / bibliothèque à part entière pour les développeurs. Voir: wordpress.org/plugins/meta-box et github.com/wpmetabox ... Ressemble à un excellent produit.
Kerry Randolph
2

Je recommanderais également de consulter http://www.wpalchemy.com . WPAlchemy est une "classe" de kick ass (proche d'un plugin) pour ajouter facilement des meta boxes personnalisées à votre site. Je l'utilise intensivement et j'ai été impressionné par la facilité d'utilisation et l'engagement du développeur et de la communauté naissante.

internetross
la source
0

Oui c'est tout à fait possible. Voir une réponse que j'ai reçue sur les métaboxes. Fondamentalement, vous voudrez simplement ajouter un crochet save_postet vérifier le champ 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;
    }

    // Handle the upload here

}
add_action( 'save_post', 'my_save_post_callback', 1, 2);
Zack
la source