簡體   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