web-dev-qa-db-fra.com

champs personnalisés pour les pièces jointes?

est-il possible d'ajouter des champs supplémentaires via le script functions.php pour les pièces jointes dans wordpress?

J'ai essayé plein d'exemples mais aucun ne semble fonctionner. Inquiet, un plugin existant pourrait affecter mes tentatives, mais ce n'est pas clair si c'est même possible.

meilleur, dan.

3
v3nt

Ici est un tutoriel qui montre comment ajouter des champs personnalisés à la superposition pièces jointes/médiathèque/épaisseur/iframe/quoi que vous l'appeliez.

Je l'ai utilisé avec succès, mais je ne l'ai pas encore poussé beaucoup plus loin en ajoutant des boutons radio/cases à cocher/etc.

Voici le code du lien ci-dessus, juste au cas où il disparaîtrait un jour:

1) 'attachment_fields_to_edit': Nous allons attacher une fonction à ce hook qui fera le travail d'ajouter un champ personnalisé à Media Gallery.

/* For adding custom field to gallery popup */
function rt_image_attachment_fields_to_edit($form_fields, $post) {
    // $form_fields is a an array of fields to include in the attachment form
    // $post is nothing but attachment record in the database
    //     $post->post_type == 'attachment'
    // attachments are considered as posts in WordPress. So value of post_type in wp_posts table will be attachment
    // now add our custom field to the $form_fields array
    // input type="text" name/id="attachments[$attachment->ID][custom1]"
    $form_fields["rt-image-link"] = array(
        "label" => __("Custom Link"),
        "input" => "text", // this is default if "input" is omitted
        "value" => get_post_meta($post->ID, "_rt-image-link", true),
                "helps" => __("To be used with special slider added via [rt_carousel] shortcode."),
    );
   return $form_fields;
}

2) 'attachment_fields_to_save': Ceci acceptera et sauvegardera l'entrée utilisateur.

// now attach our function to the hook
add_filter("attachment_fields_to_edit", "rt_image_attachment_fields_to_edit", null, 2);

    function rt_image_attachment_fields_to_save($post, $attachment) {
    // $attachment part of the form $_POST ($_POST[attachments][postID])
        // $post['post_type'] == 'attachment'
    if( isset($attachment['rt-image-link']) ){
        // update_post_meta(postID, meta_key, meta_value);
        update_post_meta($post['ID'], '_rt-image-link', $attachment['rt-image-link']);
    }
    return $post;
}
// now attach our function to the hook.
add_filter("attachment_fields_to_save", "rt_image_attachment_fields_to_save", null , 2);
3
Dave Romsey

Voici un très bon tutoriel (avec les fichiers source), expliquant comment ajouter des champs personnalisés pour les images, les pièces jointes, les zones de texte ... et tout ce dont vous pourriez avoir besoin pour vos publications.

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

2
Philip

Vous devez utiliser la fonction update_post_meta() ( Codex ):

<?php update_post_meta($post_id, $meta_key, $meta_value, $prev_value); ?>

Qu'est-ce que vous essayez de faire, ça ne marche pas?

1
Chip Bennett

Vous trouverez un bon exemple de code dans les réponses à la question: Comment puis-je ajouter un champ URL à la fenêtre des pièces jointes?

1
fuxia