web-dev-qa-db-ja.com

Wordpressのページ付けが検索ページで機能しない

私の検索ページでは、私のクエリはこの検索で​​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'
    ]
),);

誰かがこの問題を解決する方法を知っていますか?

1
hasan movahed

デフォルトでは、ワードプレスはそれ自身のメインクエリを検索ページに持っています、あなたのケースではメインクエリを変更せず、単にカスタムクエリを作成します

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');
1
RezaSh