可能な解決策のためにレンガの壁にぶつかった後にこれを我慢してください。
かなりの数のカスタム投稿タイプと関連付けられたカスタム分類法を含むサイトを用意してください。作業を簡単にするために、私は統一された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
を使用してきましたが、私の最近の試みではこれが私の行ったことです。元に戻すことを好むでしょう。
何か案は?
Get_query_varを使用しようとしているページのURLに "paged"パラメータがありますか。私の知る限りでは、get_query_var( "paged")はURLパラメータの値を明示的に返しているので、これを機能させるには次のようなURLが必要です。
/?paged=7
あるいは、PHPを使ってURLパラメータを読むこともできます。
$_GET['paged']
これはメインの$wp_query
変数から直接得られるはずです。print_r()
を実行して、必要なさまざまな引数(paged、posts_per_pageなど)をチェックすることができます。これを行うときにテンプレートにどんな情報を表示できますか?