WordPressのMedia Library Organizerでダイアログ初回表示時のカテゴリを指定する方法
Media Library Organizerを使用中のWPサイトで画像をカテゴリ分けしているが、画像選択のダイアログ初回表示時にカテゴリは「All Media Categories」が選択されている筈。これを指定したカテゴリの画像を表示するように変更したい。以下に対応方法をメモ。
対応方法
カテゴリ用ID
ダッシュボードの「メディア->Media Categories」に進むと作成済みのカテゴリが一覧表示されている筈なので、指定するためのカテゴリのリンクから「tag_ID=xxx」のパラメータをメモっておく。この「xxx」がカテゴリ用IDになる。
functions.php
functions.phpに以下を追記する。
// 投稿編集画面のメディアライブラリ用モーダルが表示される際に指定したカテゴリを表示
function mlo_default_select_media_category( $query ){
// カテゴリID(適宜変更)
$media_category_id = xxx;
// 管理画面内かつAjax通信を使う場合のみ以外は終了
if( !is_admin() || !defined('DOING_AJAX') || !DOING_AJAX ){
return $query;
}
// メディアデータ取得の場合
if( isset( $_POST['action'] ) && $_POST['action'] === 'query-attachments' ){
// ユーザーがカテゴリを変更した際のフラグ
$change_flg = false;
// メディアの検索用配列がある場合
if( isset($_POST['query']) && is_array($_POST['query']) ){
// mlo経由の場合(カテゴリを選択しなおした場合)はフラグを書き換え
if( array_key_exists('mlo-category', $_POST['query']) || array_key_exists('media_folder', $_POST['query']) ){
$change_flg = true;
}
}
// フラグが書き換わっていない(初回表示時)の場合
if( !$change_flg ){
// メディアの検索用配列を新規作成
if ( empty( $query['tax_query'] ) ) {
$query['tax_query'] = array();
}
// 検索用配列でカテゴリIDを指定
$query['tax_query'][] = array(
'taxonomy' => 'mlo-category',
'field' => 'term_id',
'terms' => $media_category_id,
'operator' => 'IN',
);
}
}
// 検索条件を返す
return $query;
}
// 投稿編集画面のメディアライブラリ用モーダルが表示される際にイベントを設定
add_filter('ajax_query_attachments_args', 'mlo_default_select_media_category');
Media Library Organizer
https://ja.wordpress.org/plugins/media-library-organizer/
リファレンス
ajax_query_attachments_args
https://developer.wordpress.org/reference/hooks/ajax_query_attachments_args/
関連記事
-
-
バニラJS対応(jQuery非依存)の画像遅延読み込みプラグイン「echo.js」の利用方法
あるサイトをブラウザの開発者ツールで見ていると「echo.js」と聞いたことの無 ...
-
-
PHPで画像を分割し並べ替えて出力したものをJavaScriptで復元する方法
ある電子書籍サイトをブラウザの開発者ツールで見てみたところ、PHPでページ画像を ...
-
-
Chart.jsで描写したグラフを画像としてダウンロードさせる方法
サイト内にChart.jsでグラフを描写し、ボタンやリンクをクリックすることで当 ...
-
-
「slick」でブラウザ幅がPCの場合はスライダーを表示し、スマホ幅の場合はスライダー無しにする方法
slickプラグインで画像スライダーを設置しているページがあり、PCのブラウザ幅 ...
-
-
JavaScriptにて画像をフルスクリーン表示する方法
JavaScriptにて画像をクリックするとフルスクリーン表示させたかった。ただ ...