web-dev-qa-db-ja.com

WordPress 3.5で新しいメディアアップローダーを拡張する

WordPressの現在のバージョンではattachment_fields_to_edit filterを使って添付ファイルのフィールドを拡張するのはとても簡単ですが、最近のWordPress 3.5 RC2ではうまくいきません。カスタムメタフィールドを使用して拡張できますが、これを使用するにはMedia tbで各添付ファイルを編集する必要があります。メディアライブラリを使用してモーダルボックスのAttachment detailsのフィールドを拡張できるかどうかと思いました http://i.imgur.com/GIsJj.png (リンクをお詫び申し上げますしかし、私は画像を追加することはできません、十分な評判ではありません;))

助けてくれてありがとう。

5
rzepak

attachment_fields_to_editにフックすることで添付ファイルに入力とフィールドを追加できます。これにより、モーダルと添付ファイルエディタの両方にフィー​​ルドが追加されます。私が見つけたキャッチは、WordPress(誰かが違うPLMKを経験したことがあるなら)が余分なフィールドデータを保存しないので、あなたがいくつかの他の項目にフックしなければならないことです。

私はあなたができることのアイデアを追加するためのコードサンプルを追加しました。

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

あなたはまだattachment_fields_to_editを使うことができるはずですが、それらのフィールドもモーダルウィンドウに追加されています。 "show_in_edit"または "show_in_modal"パラメータを使用して、フィールドをモーダルにのみ表示するか、編集ページにのみ表示するかを指定できます。どちらもブール値で、どちらもデフォルトはtrueです。動作を説明するこのTracのチケットを見てみましょう: http://core.trac.wordpress.org/ticket/22759#comment:1

あなたはそれらが現在クラス名の中に "compat-field-"を前に付けられているように見えることを知っておくべきです。

1
eddiemoya