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