デフォルトではWordPressメディアライブラリはあなたがそれらのタイプや日付で結果をフィルタすることを可能にします。どうやったらリストに3番目のドロップダウンを追加して作者でフィルタすることができますか?
現在これがあります。
以下のものが欲しいのですが。
このチケット によると/(私が間違って読んでいない限り)これを可能にするために3年前にコードが/wp-admin/includes/class-wp-media-list-table.php
に追加されましたが、これが実際にどのように機能するのかわかりません。
コーデックス はまた、ページを編集したり投稿したりするときに表示されるメディアライブラリのモーダルウィンドウを変更することが可能であるとも言っています。
add_filter( 'ajax_query_attachments_args', 'show_current_user_attachments', 10, 1 );
function show_current_user_attachments( $query = array() ) {
$user_id = get_current_user_id();
if( $user_id ) {
$query['author'] = $user_id;
}
return $query;
}
だから私はそれがメディアライブラリのメインページで同様のことをすることは可能であると思うだろうが、私はその方法を見ることができない。
あなたの質問では、あなたはグリッドビューであり、そのコーデックスはリストビューに属している画像を見せた。だから私はここであなたが話しているのはどのセクションなのか混乱しています。
グリッド表示: コアを変更しない限り不可能です。それらはフックを提供せず、メディアセクション全体はjquery、backbone、unserscoreによって作成されています。コードについては、media-grid.min.jsまたはmedia-grid.jsを調べてください。
リストビュー: このビューではドロップダウンを簡単に追加できます。これがこれを行うためのスクリプトです。必要に応じて、ドロップダウンのクエリを変更するためにparse_query
またはpre_get_posts
フィルタを追加します。私はauthor
をurlに設定しているので、wordpress自体が私に代わってそれを設定するので、それらのフィルタが必要です。
function media_add_author_dropdown()
{
$scr = get_current_screen();
if ( $scr->base !== 'upload' ) return;
$author = filter_input(INPUT_GET, 'author', FILTER_SANITIZE_STRING );
$selected = (int)$author > 0 ? $author : '-1';
$args = array(
'show_option_none' => 'All Authors',
'name' => 'author',
'selected' => $selected
);
wp_dropdown_users( $args );
}
add_action('restrict_manage_posts', 'media_add_author_dropdown');
ここに参照があります
編集#1:この後に著者フィルタを追加 コメント
function author_filter($query) {
if ( is_admin() && $query->is_main_query() ) {
if (isset($_GET['author']) && $_GET['author'] == -1) {
$query->set('author', '');
}
}
}
add_action('pre_get_posts','author_filter');