web-dev-qa-db-fra.com

Joindre des fichiers Metabox

Est-ce que quelqu'un sait comment créer un simple bouton "joindre/parcourir" qui peut être placé dans une métabox qui, en cliquant dessus, ouvrirait une boîte à lumière dans laquelle l'utilisateur pourrait voir tous les fichiers multimédia, cocher ceux qu'il souhaite attachez et cliquez sur un bouton "attacher" en bas. Après avoir cliqué sur "joindre", la publication metabox se mettrait à jour avec tous les fichiers qu'il avait sélectionnés ...

4
NetConstructor.com

Pour ouvrir une boîte à lumière, recherchez quelque chose, puis effectuez une action dans: Wordpress a déjà intégré cette fonctionnalité. Car ce que vous demandez, c’est essentiellement la boîte épaisse qui s’ouvre, comme dans l’éditeur de publication lorsque vous recherchez une image dans la galerie.

Vous trouvez déjà tout le code dont vous avez besoin pour celainwordpress. La seule chose à faire est de collecter le bloc de code un peu plus complexe, de l'intégrer dans un plugin lui-même et de le modifier pour l'adapter à vos besoins. Ces composants ne sont pas très réutilisables, il n'y a donc aucune API qui aurait pu vous faciliter la tâche. Eh bien, ce n'est pas vraiment vrai, vous pouvez utiliser tb_show() pour afficher la boîte épaisse par exemple .

Mais dans l'ensemble, ce n'est pas trivial. Vous recherchez probablement quelque chose qui est plus facile à adopter. Je ne sais pas. Une fois, j’ai bricolé avec une boîte de dialogue "heavybox" - (après éditeur (qui pourrait être plus complexe avec ce dont vous avez besoin), et il ya beaucoup à penser pour faire des choses. Toutefois, dans le cas du scénario que vous décrivez, il est souvent nécessaire de signaler à la page qui ouvre la thickbox de mettre à jour quelque chose une fois la sélection effectuée dans la fenêtre contextuelle.

Pour la metabox, vous devriez trouver suffisamment d'extraits de code pour en créer un, je suis donc presque sûr qu'il existe déjà du code pour cela.

2
hakre
2
t31os

https://github.com/jaredatch/Custom-Metaboxes-and-Fields-for-WordPress

Ces gars ont créé une superbe bibliothèque pour les types de champs personnalisés dans WP admin. Je pense que c’est exactement ce que vous recherchez - la création de champs de téléchargement d’image devient une tâche triviale.

Cela permet de décaler les métaboxes pour tout type de poste par programme avec un contrôle précis.

Il y avait une demande pour plus de détails. Au risque de dupliquer les connaissances, voici un exemple tiré de la documentation (avec quelques mods pour utiliser le contrôle de fichier). une image metabox:

function be_sample_metaboxes( $meta_boxes ) {
$prefix = '_cmb_'; // Prefix for all fields
$meta_boxes[] = array(
    'id' => 'test_metabox',
    'title' => 'Test Metabox',
    'pages' => array('page'), // post type
    'context' => 'normal',
    'priority' => 'high',
    'show_names' => true, // Show field names on the left
    'fields' => array(
        array(
            'name' => 'Test Text',
            'desc' => 'field description (optional)',
            'id' => $prefix . 'test_image',
            'type' => 'file'
        ),
    ),
);

return $meta_boxes;
}
add_filter( 'cmb_meta_boxes', 'be_sample_metaboxes' );


add_action( 'init', 'be_initialize_cmb_meta_boxes', 9999 );
function be_initialize_cmb_meta_boxes() {
if ( !class_exists( 'cmb_Meta_Box' ) ) {
    require_once( 'lib/metabox/init.php' );
}
}

Ce que je fais est de mettre ceci dans mon posttype_my_post_type_name.php où je crée le type de post. Exigez ceci à partir du fichier functions.php après avoir requis la bibliothèque metabox.

1
Will