[英]WP_Query exclude posts using meta query
無法解決這個問題,希望能得到一些幫助!
概述
我有一個帶有兩個單獨的 WP_Query 循環的“新聞”頁面。 頁面頂部的第一個循環包含 2 個最新的“精選”帖子,由以下條件定義;
$args = array(
'post_type' => 'post',
'orderby' => 'date',
'posts_per_page' => 2,
'meta_query' => array(
array(
'key' => 'featured_post',
'value' => 'yes',
'compare' => 'LIKE',
),
),
);
“featured_post”鍵與自定義 ACF 復選框字段相關。 客戶端使用它在 Wordpress 的后端定義特色帖子。
現在在第二個 WP_Query 循環中,使用以下條件顯示剩余的帖子;
$args = array(
'post_type' => 'post',
'orderby' => 'date',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'featured_post',
'value' => 'yes',
'compare' => 'NOT LIKE',
),
),
);
這基本上從第二個循環中排除了特色帖子。
問題
我的問題是客戶在添加新帖子時並不總是記得從舊的精選帖子中取消勾選“精選”ACF 字段。 因此,不再具有特色的舊特色帖子不會進入第二個循環。
有沒有辦法在第二個循環中使用 meta_query 來僅排除兩個最新的特色帖子 - 而不是全部?
或者,還有更好的方法?
我希望這能幫到您。
第一的,
在 function.php 上創建一個 function,如下所示:
<?php
function exclude_featured_post_IDs(){
$featured_post_IDs = array();
$args_featured = array(
'post_type' => 'post',
'orderby' => 'date',
'order' =>'DESC',
'posts_per_page' => 2,
'meta_query' => array(
array(
'key' => 'featured_post',
'value' => '"yes"',
'compare' => 'LIKE'
),
)
);
$query_featured = new WP_Query($args_featured);
if ($query_featured->have_posts()) :
while ($query_featured->have_posts()) :
$query_featured->the_post();
array_push($featured_post_IDs, get_the_ID());
?>
<?php
endwhile;
endif;
wp_reset_postdata();
return $featured_post_IDs;
} ?>
然后,
在第二個 WP_Query 循環中使用此參數'post__not_in' => exclude_featured_post_IDs() :
<?php
$args = array(
'post_type' => 'post',
'orderby' => 'date',
**'post__not_in' => exclude_featured_post_IDs(),**
'posts_per_page' => -1,
);
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.