问题描述
我有一个名为 sale_or_charter 的 ACF 字段,其中包含三个无线电选项 - 出售、包机或新建。
每个自定义帖子类型都将具有以下值之一 - 然后我想显示与当前页面的 sale_or_charter 字段具有相同值的相关帖子。
我不知道我做错了什么?
我查阅了 ACF 文档,它看起来是正确的。当我删除“键”和“值”时 - 它可以工作,但我需要通过与当前帖子具有相同 $type 的帖子过滤它。
感谢任何帮助
<?PHP
$type = get_field( "sale_or_charter",get_the_ID() );
$args = array(
'post_type' => 'yachts','posts_per_page' => 3,'orderby' => 'date','order' => 'DESC','Meta_query' => array(
array(
'key' => 'sale_or_charter','value' => $type
)
),);
$my_posts = new WP_Query($args);
if ( $my_posts->have_posts() ) {
while ( $my_posts->have_posts() ) : $my_posts->the_post();
编辑** 添加赏金后,我决定添加一个屏幕截图,并且(就像一个白痴一样)立即意识到我将它设置为标签而不是值,这是问题所在。
解决方法
您的问题是您的字段返回的是“标签”而不是字段值,因此数据库查询没有比较正确的值。
将“返回值”更改为 Value
,请参见下面的屏幕截图。
推荐
我还建议从您的结果中排除当前帖子,这可以防止当前帖子出现在您的相关项目中。例如...
$type = get_field( 'sale_or_charter',get_the_ID() );
$my_posts = new WP_Query([
'post_type' => 'yachts','posts_per_page' => 3,'orderby' => 'date','order' => 'DESC','post__not_in' => [ get_the_ID() ],// Exclude current post
'meta_query' => [
[
'key' => 'sale_or_charter','value' => $type
]
]
]);