繁体   English   中英

在Wordpress中隐藏类别列表中的特定帖子

[英]Hide specific posts from category list in wordpress

我在显示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个帖子。

有没有一种方法可以简单地忽略隐藏的帖子,而不将其视为“帖子”?

尝试以下操作:在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>'
));

很多阅读这里: http : //codex.wordpress.org/Template_Tags/get_posts

我设法通过将category.php中的get_posts更改为wp_query来解决它。

我首先添加了此代码以检测当前查看的类别并过滤查询以仅显示taked_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]仍然感到困惑,因为它是一个数组。 它保持空白。

哦,很好,但是现在可以分页使用了,所以我很高兴:)感谢所有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM