web-dev-qa-db-ja.com

メディアライブラリに作成者フィルタを追加する方法

デフォルトではWordPressメディアライブラリはあなたがそれらのタイプや日付で結果をフィルタすることを可能にします。どうやったらリストに3番目のドロップダウンを追加して作者でフィルタすることができますか?

現在これがあります。

enter image description here 

以下のものが欲しいのですが。

enter image description here 

このチケット によると/(私が間違って読んでいない限り)これを可能にするために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;
}

だから私はそれがメディアライブラリのメインページで同様のことをすることは可能であると思うだろうが、私はその方法を見ることができない。

3
j08691

あなたの質問では、あなたはグリッドビューであり、そのコーデックスはリストビューに属している画像を見せた。だから私はここであなたが話しているのはどのセクションなのか混乱しています。

グリッド表示: コアを変更しない限り不可能です。それらはフックを提供せず、メディアセクション全体は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. restrict_manage_posts
  2. pre_get_posts
  3. parse_query

編集#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');
3
Webloper

あなたがあなた自身のサイトにこれを必要とするなら、コードの代わりにあなたはリストビューに行きそして Author 列の下の著者名をクリックすることができます。それはあなたにその特定の作家のためのメディアのリストを与えるでしょう。以下のスクリーンショットを参照してください。

enter image description here 

しかし、あなたがこれをどのクライアントに対しても行っているのであれば、あなたがあなたのスクリーンショットに示したドロップダウンのようなユーザーフレンドリーな方法を提供するコードを必要とするでしょう:)

1
sbounty