管理画面で固定ページを検索すると投稿が表示されてしまう

今回の事象

WordPressサイトで検索ページを作成しました。

無事に実装はできたのですが、何故か管理画面の「固定ページ」⇒キーワードを入力して「検索」しても固定ページがヒットしません。

キーワードに引っかかった投稿の記事がずらずらと表示されました。

原因

検索結果の対象について、functions.phpに以下の記述をしていました。


function SearchFilter($query)
{
  if ($query->is_search) {
    $query->set('post_type', 'news');
  }
  return $query;
}
add_filter('pre_get_posts', 'SearchFilter');

カスタム投稿タイプが「news」のものを検索して表示する、という記述です。フロントの方はうまく検索表示されていました。

ですが、これでは管理画面のほうにもこの検索条件が反映してしまいます。

「pre_get_posts」フックは影響範囲が広く、メインクエリー以外にも影響を及ぼしてしまうようです。

解決方法

というわけなので以下のように記述を変更。


// 検索ページの表示対象をカスタム投稿(NEWS)に限定する
function SearchFilter($query) {
 if ( !is_admin() && $query->is_main_query() && $query->is_search() ) {
  $query->set( 'post_type', 'news' );
 }
}
add_action( 'pre_get_posts','SearchFilter' );

この検索結果を適用するのは管理画面ではなく、且つメインクエリーの時に、この検索条件が反映されるようにしました。

こうすることで管理画面の固定ページ検索が通常通りに動くようになりました。

参考にさせていただいた記事

今回参考にさせていただいた記事はこちらこちらです。大変分かりやすくまとめてありました。ありがとうございました。

related article

2020/06/29 WordPress

WordPressの投稿記事のタイトルの文字数を制限する

2020/01/17 WordPress

マルチサイトはlogin rebuilderプラグインは使えない

2020/08/06 WordPress

カスタム投稿にカテゴリーを追加する

2021/03/09 WordPress

All in One SEOでページタイトルの挙動がおかしくなった