勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

WordPressのMedia Library Organizerでダイアログ初回表示時のカテゴリを指定する方法

  WordPress CMS

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/

 - WordPress CMS

  関連記事

PHPでjpg / png画像をWebP画像に変換し保存する方法
PHPでjpg / png画像をWebP画像に変換し保存する方法

PHPでjpg / png画像を圧縮したかった。ただjpg / pngのままだと ...

jQueryで画像が存在すれば表示、なければノーイメージ画像を表示
jQueryで画像が存在すれば表示、なければノーイメージ画像を表示

やりたかった事は以下の通り。 ・画像のURLはcode.jpgみたいになってる ...

summernoteのデフォルトの画像挿入時にCSSや任意の属性を指定する方法
summernoteのデフォルトの画像挿入時にCSSや任意の属性を指定する方法

summernoteのデフォルトの画像挿入時はBase64形式にエンコードされ、 ...

PHPで画像アップロード、リサイズ、形式変換(jpg->webp等)はclass.upload.phpが便利
PHPで画像アップロード、リサイズ、形式変換(jpg->webp等)はclass.upload.phpが便利

今までPHPで画像関連の処理を行う場合、リサイズの時のみsmart_resize ...

PHPでファイル書き込み時に「failed to open stream: HTTP~~」エラー
PHPでファイル書き込み時に「failed to open stream: HTTP~~」エラー

PHPでファイルを書き込む際に「failed to open stream: H ...