我可以使用wp_get_recent_posts
函数中的“ exclude”数组排除特色帖子吗?我有一个名为NS Featured Posts的插件,该插件通过wp查询中的键来提取特色帖子,即:
$custom_query = new WP_Query(
array(
'post_type' => 'post',
'meta_key' => '_is_ns_featured_post',
'meta_value' => 'yes'
)
);
我可以以某种方式使用它来定位和排除wp_get_recent_posts
中的NS特色帖子,例如:
$recent_posts = wp_get_recent_posts(array(
'numberposts' => 3,
'exclude' => (the ns featured posts)
));
感谢您的见解。
答案 0 :(得分:1)
所以我现在对其进行了测试,并且不可能在一个查询中获取没有特定元键的帖子。
但是:您可以像这样从另一个查询中排除它们:
$featured_posts = get_posts( [
'meta_key' => '_is_ns_featured_post',
'meta_value' => 'yes',
'fields' => 'ids',
] );
query_posts( array( 'post__not_in' => $featured_posts ) );
while ( have_posts() ) : the_post();
$output .= '<li>'.get_the_title().'</li>';
endwhile;
wp_reset_query();
答案 1 :(得分:1)
诸如wp_get_recent_posts()
之类的函数可以接受与WP_Query
相同的所有参数。虽然文档仅列出了一些参数,但您可以使用全套参数。
您曾建议在查询中使用exclude
,但要排除这些帖子的ID。您当然可以抢先那些,但这并不是最有效的解决方案。
在单个查询中执行此操作的方法是使用元查询选项。这些帖子被标记为一个元密钥,并且元查询将允许您排除那些。您需要同时检查元密钥的存在和值是否为“是”。
示例:
$recent_posts = wp_get_recent_posts( array(
'numberposts' => 3,
'meta_query' => array(
'relation' => 'OR',
array(
'key' => '_is_ns_featured_post',
'value' => 'yes',
'compare' => '!=',
),
array(
'key' => '_is_ns_featured_post',
'compare' => 'NOT EXISTS',
),
)
) );
参考:https://codex.wordpress.org/Class_Reference/WP_Meta_Query