wake-up-neo.com

Wie füge ich dem Medienbildschirm (Bild/Galerie) ein benutzerdefiniertes Feld hinzu?

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.

Hinzufügen eines Feldes mit attachment_fields_to_edit

  

↑ 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.

Aber sie fehlen im Bearbeitungsbildschirm im Beitrag

 enter image description here 

↑ Klicken Sie auf Bearbeiten für den aktuellen Beitrag

 enter image description here 

↑ Keine style & my_field Felder!

Die Frage

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!

7
Runnick

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');
2

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.

0
Lawless

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 );
0
Saran