あまり利用する機会は少ないと思いますが、ブロックエディタでリンクを検索する際、メディアへアップロードしたファイルも検索対象にする方法が見つかったのでメモしておきます。

WordPressのブロックエディタでは、文字などをドラッグして表示されるボックスメニュー(って言うのかな?)にリンクボタンが表示され、下図のようにクリックして文字を入力することで、サイト内に関連する投稿や固定ページがずらっと表示されるようになっています。

ブロックエディタでメディアファイルをリンク検索に含める方法(メモ)|Personal WP Customization Notes (PWCN)
ブロックエディタでメディアファイルをリンク検索に含める方法(メモ)|Personal WP Customization Notes (PWCN)

ここには通常「投稿」と「固定ページ」、そしてエディタ内で検索対象として許可しているカスタム投稿タイプから検索にヒットした内容が表示されます。

この検索候補の中に、メディアへアップロードしたファイルを含めるには、以下のコードをテーマのfunctions.phpへ追加します。

function filter_media_post_type_args($args, $post_type){
     if ($post_type == 'media'){
        $args['show_in_rest'] = 'true';
    }
 
    return $args;
}
add_filter('filter_media_post_type_args', 'movies_to_films', 10, 2);

このコードは、フロントエンドの検索機能とは無関係ですので、検索ウィジェットで検索対象となることはありません

コードの内容解説

メディアにアップロードするファイルは、「media」というカスタム投稿タイプで管理されており、カスタム投稿タイプを編集画面の検索候補に含めるかどうかを指定する「show_in_rest」というパラメーターが無効になっています。

そこで上記コードをつかって有効にすることで、検索候補に含まれるようになるのです。

既存のカスタム投稿タイプが検索に引っかからないときは

自作したカスタム投稿タイプや、カスタム投稿タイプで管理している投稿タイプが、メディアと同じように検索候補に含まれないという方は、以下のような対処をすれば検索対象として表示されるようになります。

  • プラグインで作成したカスタム投稿タイプであれば「show_in_rest」パラメーターを有効(true)にする
  • 自身でコード追加て作成したカスタム投稿タイプであればパラメーターを追加する
  • 上記コードのユーザー定義関数名と「media」という投稿タイプ指定を、必要なカスタム投稿タイプスラグへ変更して、テーマのfunctions.phpへ追加する

参考情報:

register_post_type(string  $ post_type、 array | string  $ args  =  array()  )

apply_filters(’register_post_type_args’、 配列 $ args、 文字列 $ post_type)