WP 3.4.x以前では、attachment_fields_to_edit
フィルタをいじることでメディアマネージャにボタンを追加することが可能でした。たとえば、プラグインは、アイテムがオーディオファイルであることが判明したときに、URLフィールドに追加のボタンとしてHTMLを追加することができます。
$playertag = "[audio $url]";
$fields['url']['html'] .=
"<button type='button' class='button data-link-url='$playertag' urlaudioplayer audio-player-$postid'>Audio Player</button>";
新しいメディアマネージャは、そのHTMLタグ内にあったボタンのセットをプルダウンメニュー、つまり<select .../>
アイテムに変更しました。 HTMLコードはmedia-template.phpで発行されます。新しいコードはまだattachment_fields_to_edit
フィルタを呼び出しますが、どのフィールドも渡しません。
コアをハックすることなくこの選択項目を拡張する方法はありますか(私はしません)。項目を追加するためにjQueryを使用するjsを少し書くことは考えられますか?
はい、それは以前と同じ方法で可能です。私はあなたがフィルタがもうパラメータを通過していないと思う理由を知りません。
add_filter('attachment_fields_to_edit', 'user16975_edit_fields', 10, 2);
function user16975_edit_fields($form_fields, $attachment){
// check for an audio attachment
if ( substr($attachment->post_mime_type, 0, 5) == 'audio' ) {
$playertag = $playertag = "[audio ".wp_get_attachment_url($attachment->ID)."]";
$form_fields["audioplayer"] = array(
"label" => "Audio player",
"input" => "html",
"html" => "<button type='button' class='button' data-link-url='$playertag' audioplayer='audio-player-{$attachment->ID}'>Audio Player</button>",
);
}
return $form_fields;
}
これが結果です。