web-dev-qa-db-fra.com

Développer un nouveau Media Uploader dans WordPress 3.5

Dans la version actuelle de WordPress, il est assez facile d’élargir les champs de pièces jointes à l’aide du filtre attachment_fields_to_edit, mais dans la dernière version de WordPress 3.5 RC2 cela ne fonctionne pas. Nous pouvons l’étendre à l’aide de méta-champs personnalisés, mais son utilisation nécessite la modification de chaque pièce jointe dans Media tb. Je me demandais s’il était possible d’élargir les champs dans Détails de la pièce jointe dans la boîte modale avec Media Library http://i.imgur.com/GIsJj.png (désolé pour un lien, mais je ne peux pas ajouter une image, pas assez de réputation;))

Merci pour toute aide.

5
rzepak

Vous pouvez ajouter des entrées et des champs aux pièces jointes en vous connectant à attachment_fields_to_edit. Cela va ajouter des champs à la fois au modal et à l'éditeur de pièces jointes. Le problème que j’ai trouvé est que WordPress (si quelqu'un a déjà vécu une expérience différente de PLMK) n’enregistre pas les données des champs supplémentaires, vous devez donc vous connecter à quelques autres éléments.

J'ai ajouté un exemple de code pour vous donner une idée de ce que vous pourriez faire.

add_filter( 'attachment_fields_to_edit', 'xf_attachment_fields', 10, 2 );

function xf_attachment_fields( $fields, $post ) {

 $meta = get_post_meta($post->ID, 'meta_link', true);
 $fields['meta_link'] = array(
    'label' => 'More Media Management',
    'input' => 'text',
    'value' => $meta,
     // 'html' => '<div class="meta_link"><input type="text" /></div>',
   'show_in_edit' => true,
 );
 return $fields;
}
add_filter( 'attachment_fields_to_save', 'xa_update_attachment_meta', 4);

function xa_update_attachment_meta($attachment){
  global $post;
  update_post_meta($post->ID, 'meta_link', $attachment['attachments'][$post->ID]['meta_link']);
}

add_action('wp_ajax_save-attachment-compat', 'xa_media_xtra_fields', 0, 1);
function xa_media_xtra_fields() {
  $post_id = $_POST['id'];
  $meta = $_POST['attachments'][$post_id ]['meta_link'];
  update_post_meta($post_id , 'meta_link', $meta);
  clean_post_cache($post_id);
}
3
Rezen

Vous devriez toujours pouvoir utiliser attachment_fields_to_edit, mais ces champs sont également ajoutés à la fenêtre modale maintenant. Vous pouvez diriger un champ pour qu'il apparaisse uniquement dans le modal ou sur la page d'édition en utilisant les paramètres "show_in_edit" ou "show_in_modal". Les deux sont booléens et par défaut à true. Jetez un coup d’œil à ce ticket de train expliquant le comportement: http://core.trac.wordpress.org/ticket/22759#comment:1

Vous devez savoir qu'ils semblent maintenant avoir le préfixe "compat-field-" dans les noms de classe.

1
eddiemoya