微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在高级自定义字段中使用元查询显示相关帖子

如何解决在高级自定义字段中使用元查询显示相关帖子

我有一个名为 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();

enter image description here

编辑** 添加赏金后,我决定添加一个屏幕截图,并且(就像一个白痴一样)立即意识到我将它设置为标签而不是值,这是问题所在。

解决方法

您的问题是您的字段返回的是“标签”而不是字段值,因此数据库查询没有比较正确的值。

将“返回值”更改为 Value,请参见下面的屏幕截图。

enter image description here


推荐

我还建议从您的结果中排除当前帖子,这可以防止当前帖子出现在您的相关项目中。例如...

$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
    ]
  ]
]);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。