在遇到可能的解决方案后,将此贴在墙上。
拥有一个包含许多自定义帖子类型和相关自定义分类的网站。为了让事情变得简单,我使用了统一的taxonomy.php
样板
在该模板中有三个循环。我希望它们都在第一页上运行,然后,只运行第三个循环。我知道如何使用is_paged()
但还有一个更大的问题我无法解决。
在我的$args
我包括$paged
从…起
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
但是
$paged
始终返回为1,现在不管我在哪一页。如果我直奔终点
get_query_var(\'paged\')
然后,无论我在第一、第二、第三页还是其他页面上,都不会返回任何内容。
我已经读到,您需要重置每个循环才能工作,这是我一直遵循的做法。
我不会在这里包括整个页面,因为这是一个相当长且复杂的分类法。相反,我将显示两个循环的基本设置。
NOTE: 我不能使用pre_get_posts
因为它影响所有循环。每个循环都有单独的posts_per_page
需求和其他需要分开的方面。
在模板的顶部,我有
//this present duplication
$do_not_duplicate = array();
global $wp_query;
$term = $wp_query->queried_object;
我在我的args之后用
while ($new_query->have_posts()) : $new_query->the_post();
我要分页的第三个循环附近有这个代码
$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
, 但对于我最近的尝试,这就是我所经历的。我更愿意把它换回来。
有什么想法吗?