私の検索ページでは、私のクエリはこの検索で11ページを返します:?q=2&s=chem
しかし、例えば?q=2&s=chem&paged=2
のように最初のページ以外の別のページにアクセスしようとすると、WordPressはerror not found
を表示します。
注:URLに空のs変数を残しても問題ありません。
これは私のWP_Query
です:
$args = array(
'number' => $number,
'offset' => $paged ? ($paged - 1) * $number : 0,
's' => $_GET['s'],
'meta_query' => array(
'relation' => 'OR',
[
'key' => 'comp_name',
'value' => $_GET['s'],
'compare' => 'LIKE'
]
),);
誰かがこの問題を解決する方法を知っていますか?
デフォルトでは、ワードプレスはそれ自身のメインクエリを検索ページに持っています、あなたのケースではメインクエリを変更せず、単にカスタムクエリを作成します
pagedはメインのクエリで最初に使われる予約済みのクエリ変数です。メインのクエリで同じ結果が得られない場合、404エラーが発生します。
1.ページ変数を変更します
あなたはあなたのページ変数をpagedからpageあるいはデフォルトでwordpressによって使用されていない何かに名前を変更することができます
2. 404ページを上書きします
function override_404()
{
if ( is_search() && isset($_GET['s'])) {
global $wp_query;
$wp_query->is_404 = false;
}
}
add_action('init', 'override_404');
3.メインクエリを上書きする(最善)
function change_search_query() {
if ( is_search() && isset($_GET['s'])) {
$args = array();
query_posts( $args );
}
}
add_action('init', 'change_search_query');