【问题标题】:Hide specific posts from category list in wordpress从 wordpress 的类别列表中隐藏特定帖子
【发布时间】:2013-09-05 16:37:51
【问题描述】:

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

有没有办法简单地忽略隐藏的帖子而不将其视为“帖子”?

【问题讨论】:

    标签: php javascript jquery wordpress


    【解决方案1】:

    试试这个: 在 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 模板下,这样我就可以先按类别过滤帖子,然后将“taken_check”显示为 0 的帖子。
    【解决方案2】:

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

    我首先添加了这段代码来检测当前查看的类别并将查询过滤为仅显示take_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] 感到困惑,因为它是一个数组。它一直返回空白。

    哦,好吧,但它现在可以与分页一起使用,所以我很高兴 :) 感谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      相关资源
      最近更新 更多