我在显示Wordpress类别中的帖子列表时遇到一些问题,该列表会根据使用高级自定义字段的自定义字段排除一定数量的帖子。
这是我正在使用的当前代码,它很好地隐藏了它:
while ( have_posts() ) : the_post();
$is_taken = get_field('taken_check', $this_id);
if ($is_taken!=1) {
get_template_part( 'basket_selection' );
}
endwhile;
但是,它只是隐藏帖子,但仍将其视为“posts_per_page”功能的帖子。
例如,共有20个帖子,我将限制设置为每页10个帖子。如果我使用上面的代码隐藏3个帖子,它将只显示第1页中的7个帖子和第2页中的10个帖子。
有没有办法简单地忽略隐藏的帖子而不将其视为“帖子”?
答案 0 :(得分:0)
试试这个:
在get_post
查询本身中应用自定义字段参数。
$posts = get_posts(array(
'posts_per_page' => 10,
'post_type' => '<YOUR_POST_TYP>',
'meta_key' => 'taken_check',
'meta_value' => '<DEFAULT_VALUE_OF_taken_check>'
));
答案 1 :(得分:0)
我设法通过将category.php中的get_posts更改为wp_query来解决它。
我首先添加了此代码以检测查看的当前类别,并将查询过滤为仅显示taken_check = 0.
$this_cat = get_category(get_query_var('cat'), 'ARRAY_A', false);
foreach ($this_cat as $this_cat){
$this_catid = $this_cat;
break;
}
$args = array(
'posts_per_page' => 10,
'post_type' => 'post',
'cat' => $this_catid,
'orderby' => 'title',
'order' => 'ASC',
'paged' => $paged,
'meta_query' => array(
array(
'key' => 'taken_check',
'value' => '0',
)
)
);
$wp_query = new WP_Query($args);
然后我继续使用默认循环序列。唯一奇怪的代码是不必要的foreach循环,用于根据当前页面而不是帖子检测当前类别。仍然疑惑为什么我不能只使用$ this_cat [0],因为它是一个数组。它一直空白。
哦,好吧,但它现在有分页功能,所以我很高兴:) 谢谢你的帮助!