所以我从一个博客页面中排除了几个类别的帖子(类别4-11)。
我使用以下代码来完成此操作:
if (have_posts()) : while (have_posts()) : the_post();
$category = get_the_category();
if($category[0]->cat_ID > 11 || $category[0]->cat_ID < 4){
continue;
}
这将从页面中排除类别帖子,但它不会保留每页的帖子计数为10或在Admin中设置的任何值。
对于我在Wordpress循环中跳过的帖子,我如何以编程方式将帖子计数减1,这样我就排除了我不想要的类别帖子,但又保留了每页相同数量的帖子?
发布于 2011-08-31 02:11:45
要做到这一点,最简单(但不是最有效)的方法是使用category__in
...
global $wp_query;
$wp_query = new WP_Query(array("category__in"=>array(4,5,6,7,8,9,10,11)));
...then执行循环...
while (have_posts()){
the_post();
//etc..
}
这将使分页准确,并且您可以依赖于高级模板函数,如next_posts_link()
。
也许一种更有效的方法(不丢弃和替换$wp_query
)是在执行原始查询之前将其搞乱……
add_action('parse_query', 'my_parse_query');
function my_parse_query(&$q){
//decide if you want to mess with the query....
//if not, return
$q->set_query_var("category__in", array(4,5,6,7,8,9,10,11));
}
每个查询都会调用my_parse_query
,包括针对页面和单个帖子的查询,因此您必须向函数添加一些逻辑,以便只在有意义的地方添加category__in
。
https://stackoverflow.com/questions/7247314
复制相似问题