Ich versuche, dem Bearbeitungsbildschirm für Bilder und Galerien ein benutzerdefiniertes Feld hinzuzufügen.
Ich bin mir bewusst, gibt es ähnliche Fragen hier, obwohl Antworten entweder nicht mit der aktuellen Version arbeiten oder sie fügen Feld nur Upload Bildschirm, während ich ein Feld müssen alle sichtbar sein bearbeiten Bildschirme ( siehe unten).
Dafür, glaube ich, werden Sie zu verwirren haben mit Backbone.js als attachment_fields_to_edit
nur Bildschirm laden erstellt.
↑ Dies ist der Upload-Bildschirm. Hier wird Style mit dem attachment_fields_to_edit
-Filter hinzugefügt, und my_field wird mit dem ACF-Plugin hinzugefügt.
↑ Klicken Sie auf Bearbeiten für den aktuellen Beitrag
↑ Keine style & my_field Felder!
Wie füge ich Felder hinzu, um sie noch auf dem Bearbeitungsbildschirm zu haben? Die ideale Antwort besteht darin, Felder zum Bearbeitungsbildschirm der Galerie hinzuzufügen, wenn dies ein ähnlicher Vorgang ist
Diese Frage ist wirklich wichtig für mich, so Ich werde 100 rep Bounty werden addiert, wenn es verfügbar ist.
Vielen Dank!
Hier ist der Arbeitscode (funktioniert gut für mich), hast du das versucht? Fügen Sie einfach das Thema 'functions.php' hinzu und ändern Sie die benutzerdefinierten Feldnamen nach Bedarf.
// Funktion zum Hinzufügen eines benutzerdefinierten Medienfelds Funktion 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' ), 'helps' => __ ('Enter your style'), 'input' => 'textarea' ); return $ form_fields; } add_filter ('attachment_fields_to_edit', 'custom_media_add_media_custom_field', null, 2); // save your custom media field Funktion 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');
In meinen persönlichen Implementierungen dieser Funktionalität (ohne ACF) konnte ich dies durch eine Kombination von attachment_fields_to_edit
und attachment_fields_to_save
erreichen. Ansicht Kern
Verwendungszweck:
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'
]
]
] );
}
Ich kann jedoch nicht genau sagen, um welches Problem es sich handelt, ohne Ihren Code zu sehen.
Hier ist ein Beispielcode zum Hinzufügen von Fotografennamen und URL im Medienbearbeitungsbildschirm.
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 );