web-dev-qa-db-ja.com

メディア画面(画像/ギャラリー)にカスタムフィールドを追加する方法

画像とギャラリーの編集画面にカスタムフィールドを追加しようとしています。

ここでも似たような質問があることは承知していますが、現在のバージョンではうまくいかないか、upload画面にのみフィールドを追加しますが、すべてのedit画面に表示されるフィールドが必要です。下記参照)。

これには、attachment_fields_to_editがアップロード画面に追加されるだけなので、あなたはbackbone.jsを台無しにする必要があると思います。

Attachment_fields_to_editでフィールドを追加する

 

↑こちらはアップロードされた画像です。ここでStyleattachment_fields_to_edit filterで追加され、my_fieldはACFプラグインで追加されます。

しかし、彼らは記事の編集画面に表示されません

enter image description here 

↑実際の投稿をクリックして編集

enter image description here 

↑スタイルなしとmy_fieldフィールドはありません。

質問

編集画面に表示するためにフィールドを追加する方法理想的には、ギャラリー編集画面にフィールドを追加することも同様のプロセスです。

この質問は私にとって本当に重要なので、100 rep賞金があれば追加する予定です。

ありがとうございます。

7
Runnick

これが(私のためにうまく働いている)作業コードです、あなたはこれを試しましたか?テーマ「functions.php」に追加し、必要に応じてカスタムフィールド名を変更するだけです。

//カスタムメディアフィールドを追加する関数
関数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'] =配列(
 'value' => $ field_value?$ field_value: ''、
 'label' => __( 'Style' )、
 'help' => __( 'Enter your style')、
 'input' => 'textarea' 
); 
 
 return $ form_fields; 
} 
 add_filter( 'attachment_fields_to_edit'、 'custom_media_add_media_custom_field'、null、2); 
 
 //カスタムメディアフィールドを保存します。 function custom_media_save_attachment($ attachment_id){(.set($ _REQUEST ['attachments'] ['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

私自身のこの機能の実装(ACFなし)では、attachment_fields_to_editattachment_fields_to_saveの組み合わせを使用してこれを実現できました。表示 要旨

使用法:

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'
              ]
            ]
          ] );
  }

しかし、コードを見なくても問題が何であるかを確実に言うことはできません。

0
Lawless

これは、メディア編集画面で写真家の名前とURLを追加するためのコード例です。

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