J'essaie d'ajouter un champ personnalisé à l'écran d'édition d'images et de galeries.
Je suis conscient qu'il y a des questions similaires ici, bien que les réponses ne fonctionnent pas avec la version actuelle ou ajoutent un champ uniquement à upload screen alors que j'ai besoin d'un champ visible dans tous les edit screens (voir ci-dessous).
Pour cela, je pense que vous devrez jouer avec backbone.js car attachment_fields_to_edit
ne fait que s'ajouter à l'écran de téléchargement.
↑ Ceci est une image téléchargée. Ici Style est ajouté avec le filtre attachment_fields_to_edit
, et my_field est ajouté avec le plugin ACF.
↑ Cliquez éditer sur le post actuel
↑ Pas de style et champs my_field!
Comment ajouter des champs pour les avoir toujours sur l'écran d'édition? Dans l’idéal, la réponse inclura l’ajout de champs à l’écran d’édition de la galerie s’il s’agit d’un processus similaire.
Cette question est très importante pour moi, donc je vais ajouter un bonus de 100 rep lorsqu'il sera disponible.
Merci!
Voici le code de travail (fonctionne bien pour moi), avez-vous essayé cela? Ajoutez simplement au thème "functions.php" et modifiez les noms de champs personnalisés selon vos besoins.
// fonction permettant d'ajouter un champ de média personnalisé function custom_media_add_media_custom_field ($ form_fields, $ post) { $ field_value = get_post_meta ($ post-> ID, 'custom_media_style', true);; $ form_fields ['custom_media_style'] = array ( 'value' => $ field_value? $ field_value: '', 'label' => __ ('Style' ), 'help' => __ ('Entrez votre style'), 'input' => 'textarea' ); return $ form_fields; } add_filter ('attachment_fields_to_edit', 'custom_media_add_media_custom_field', null, 2); // enregistrez votre champ multimédia personnalisé function custom_media_save_attachment ($ attachment_id) { if (isset ($ _REQUEST ['attachments']] [$ attachment_id] ['custom_media_style']) {{.____.] $ custom_media_style = $ _REQUEST [' attachments '] [$ attachment_id] [' custom_media_style ']; update_post_meta ($ attachment_id,' custom_media_style ', $ custom_me dia_style); } } add_action ('edit_attachment', 'custom_media_save_attachment');
Dans mes propres implémentations personnelles de cette fonctionnalité (sans ACF), c’est ainsi que j’ai pu l’atteindre en combinant attachment_fields_to_edit
et attachment_fields_to_save
. Voir Gist
Usage:
add_action( 'after_setup_theme', 'thumbnail_meta' );
function thumbnail_meta(){
Thumbnail_Meta::create( [
'html_thumbnail_meta_id' => [
'label' => __( '<strong>Featured Settings:</strong>' ),
'input' => 'html'
],
'checkbox_thumbnail_meta_id' => [
'label' => __( 'Checkbox?' ),
'input' => 'checkbox'
],
'url_thumbnail_meta_id' => [
'label' => __( 'Link:' ),
'type' => 'url',
],
'select_thumbnail_meta_id' => [
'label' => __( 'Display' ),
'input' => 'select',
'options' => [
'none' => '-- None --',
'top' => 'Content Top',
'right' => 'Content Right',
'left' => 'Content Left',
'bottom' => 'Content bottom'
]
]
] );
}
Cependant - ne peut pas dire avec certitude quel est le problème sans consulter votre code.
Voici un exemple de code permettant d’ajouter un nom de photographe et une URL dans l’écran d’édition multimédia.
function be_attachment_field_credit( $form_fields, $post ) {
$form_fields['be-photographer-name'] = array(
'label' => 'Photographer Name',
'input' => 'text',
'value' => get_post_meta( $post->ID, 'be_photographer_name', true ),
'helps' => 'If provided, photo credit will be displayed',
);
$form_fields['be-photographer-url'] = array(
'label' => 'Photographer URL',
'input' => 'text',
'value' => get_post_meta( $post->ID, 'be_photographer_url', true ),
'helps' => 'If provided, photographer name will link here',
);
return $form_fields;
}
add_filter( 'attachment_fields_to_edit', 'be_attachment_field_credit', 10, 2 );
/**
* Save values of Photographer Name and URL in media uploader
*
* @param $post array, the post data for database
* @param $attachment array, attachment fields from $_POST form
* @return $post array, modified post data
*/
function be_attachment_field_credit_save( $post, $attachment ) {
if( isset( $attachment['be-photographer-name'] ) )
update_post_meta( $post['ID'], 'be_photographer_name', $attachment['be-photographer-name'] );
if( isset( $attachment['be-photographer-url'] ) )
update_post_meta( $post['ID'], 'be_photographer_url', $attachment['be-photographer-url'] );
return $post;
}
add_filter( 'attachment_fields_to_save', 'be_attachment_field_credit_save', 10, 2 );