[英]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.