web-dev-qa-db-ja.com

get_query_var( 'paged')は常に空を返します

可能な解決策のためにレンガの壁にぶつかった後にこれを我慢してください。

かなりの数のカスタム投稿タイプと関連付けられたカスタム分類法を含むサイトを用意してください。作業を簡単にするために、私は統一されたtaxonomy.phpテンプレートを使用しています。

そのテンプレート内には3つのループがあります。それらすべてを最初のページで実行し、その後は3番目のループだけで実行します。私はそれをis_paged()で動作させる方法を理解していますが、私が解決できないより大きな問題があります。

私の$argsに私は$paged

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;     

しかし$pagedは常に1を返します。今どのページにいるかは関係ありません。ストレートをやったら

    get_query_var('paged')

その後、何も返されません。1、2、3などのページにいても関係ありません。

これを機能させるには各ループをリセットする必要があることを私は読みましたが、それは私がいつも従う習慣です。

これはかなり長く複雑な分類法であるため、ここではページ全体を取り上げません。代わりに、2つのループの基本設定を示します。

注: /このページにpre_get_postsを使用することはできません。すべてのループに影響するからです。これらの各ループには、個別のposts_per_page要件と、個別に保持する必要があるその他の側面があります。

私が持っているテンプレートの一番上に

    //this present duplication
        $do_not_duplicate = array();

        global $wp_query;
        $term = $wp_query->queried_object;

そして、引数の後にループを設定しました。

while ($new_query->have_posts()) : $new_query->the_post();

ページングしたい3番目のループの近くにこのコードがあります。

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;                                 
                $args=array(
                    'posts_per_page' => $total_posts,
                    'post__not_in' => array_merge($do_not_duplicate, $unwanted_post_ids ),
                    'paged' => $paged,
                    'tax_query' => array(
                            array(
                                'taxonomy'  => $term->taxonomy,
                                'field'     => 'slug',
                                'terms'     => $term->slug,
                                )
                            )
                    );

                // Re-run the query with the new arguments
                query_posts( $args );

私はwp_queryではなくquery_postsを使用してきましたが、私の最近の試みではこれが私の行ったことです。元に戻すことを好むでしょう。

何か案は?

3
Ashkas

Get_query_varを使用しようとしているページのURLに "paged"パラメータがありますか。私の知る限りでは、get_query_var( "paged")はURLパラメータの値を明示的に返しているので、これを機能させるには次のようなURLが必要です。

/?paged=7

あるいは、PHPを使ってURLパラメータを読むこともできます。

$_GET['paged']
1
Steve Claridge

これはメインの$wp_query変数から直接得られるはずです。print_r()を実行して、必要なさまざまな引数(paged、posts_per_pageなど)をチェックすることができます。これを行うときにテンプレートにどんな情報を表示できますか?

0
Dan