所以我从博客页面(类别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或管理员设置的任何内容。
对于我在Wordpress循环中跳过的帖子,我如何以编程方式将帖子数减1,这样我就排除了我不想要的类别帖子,但每页还保留相同数量的帖子?
答案 0 :(得分:0)
最简单(但不是最有效)的方法是使用$wp_query
自定义查询替换全局category__in
...
global $wp_query;
$wp_query = new WP_Query(array("category__in"=>array(4,5,6,7,8,9,10,11)));
...然后做循环...
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
。