WordPress管理画面で続けて検索するとエラー対応

  • 2018年12月14日
  • 2018年12月14日
  • 日常
  • 340view

WordPressをカスタマイズするのにAdvanced Custom Fieldsは便利ですが、その追加機能のRepeater Fieldを入れている際に管理画面上で記事を連続検索すると”記事が見つからない症状”が出たので、こちらは簡易修正させる記事ですよ。

検索して記事が見つからない原因

WordPressはハッとしてグッドするように検索はGETしてクエリ出しているので、記事が見つからない時の症状を調べるとURLの値が正確ではないようです。

正)/edit.php? s=田原&post_status=all &post_type=post (省略)
誤)/edit.php? s=田原&post_status=all &post_type=arr (省略)

s=検索文字だったり各パラメーターが、そのままクエリですが、調べるとpost_typeが配列渡しになっているようです。デバックと検証できる環境であれば直したいですが、運用中の場合で単純にここだけあれば、強制的post_typeを指定します。

// 検索クエリ
function extend_admin_search( $query ) {
    if ( $query->is_search ) {
        if ($query->query['post_type'] == 'idol') {
            $query->set( 'post_type',  'idol' );
		} else {
            $query->set( 'post_type', 'post' );
        }
    }
    return $query;
}
add_action( 'pre_get_posts', 'extend_admin_search' );

何やってるかというとpost_typeが指定の時は、強制的に指定です。
ただこれで2度連続の時は直るのですが、荒技なので現在のGET値を入れた方が無難です。

    if ( $query->is_search ) {
    if ( $_GET[post_type] == 'カスタム値' ) {

とか

	if ( is_admin() || クエリ選ぶとか )
		return $query;

つまり検索のフックにGETの分岐を入れるか、強制的にクエリを入れることで修正するってことです。ただこのやり方だとカスタムフィールドをバンバン増やした場合に凄く面倒な事になりそうですが。

まとめ

プラグインは本当に便利ですが、WP本体のバージョンを書くバージョンの事を考えると今後もアップデートが続くのでプラグイン頼みは怖い。特にあたり前のように無料プラグインを使っている意味の怖さもありますね。ではでは。

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG