web-dev-qa-db-ja.com

カスタムクエリのページ付け

私はカスタム検索をまとめるためにquery_postsと一緒に次のコードを使っています:

$args = array(
    'post_type' => 'species',
    'meta_query' => $meta_query,
    'tax_query' => $tax_query
);

$meta_queryは、次のようないくつかのコードでまとめられています。

if (!empty($_POST["s_aquarium_H"])) {
    $val = convert_values('size', $size, $_POST["s_aquarium_H"]);
    $aquarium_H = array(
        'key' => 'aquarium_H',
        'value' => $val,
        'type' => 'numeric',
        'compare' => '<='
    );
    $meta_query[] = $aquarium_H;
}

これは完璧に機能し、/advanced-search/にアクセスしてアクセスできます。

しかし、私のページ付けはしません。 Next Entriesをクリックすると、URLは/advanced-search/page/2/に変わりますが、単にAdvanced Searchフォームを再度開くだけです。

これは$_POSTを使っているためだと思います。 $_POSTでページネーションを使う方法はありますか、それとも私のコードをget_query_varか何かに変更する必要がありますか?


EDIT

私の書き換え規則は正しいようです:/advanced-search/page/2/はMonkeymanのRewrite Analyzerプラグインにpagename: advanced-search, paged: 2を表示します。

Rewrite Rules


さらに編集する

私のadvanced-search.phpページは、検索フォームと結果のどちらを表示するかを決定するために次のコードを使用します。改ページを使用する場合は、これを書き直す必要があると思います。

<?php if ( isset( $_POST["act"] ) && $_POST["act"] == "s" ) : ?>

私がこれを書き直すことにどのように取り組むことができるかに関して誰かが何か考えを持っていますか? GETではなくPOSTを使用する必要があると思いますか?


前もって感謝します、

2
dunc

結局、これはページ付けとは無関係です。

フォーム全体をGET$_REQUESTではなくPOSTメソッドと$_POST変数に変更する必要がありました。

0
dunc

これをあなたのクエリに追加:

'paged' => get_query_var('paged')

こんな感じで:

$args = array(
    'post_type' => 'species',
    'meta_query' => $meta_query,
    'tax_query' => $tax_query,
    'paged' => get_query_var('paged')
);

トリックをする必要があります.. Wp - pageNaviを使用して?追加することを忘れないでください
ループ終了直後のwp-pagenaviタグ

<div class="navigation"><?php wp_pagenavi(); ?></div>


お役に立てれば ;)
歓声、サジベ。

1
Sagive SEO
if (!empty($_REQUEST["s_aquarium_H"])) {
   $_GET["s_aquarium_H"] = $_REQUEST["s_aquarium_H"];
    $val = convert_values('size', $size, $_REQUEST["s_aquarium_H"]);
    $aquarium_H = array(
        'key' => 'aquarium_H',
        'value' => $val,
        'type' => 'numeric',
        'compare' => '<='
    );
    $meta_query[] = $aquarium_H;
}
0
Rajeev Vyas