0

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

在此处输入图像描述

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

4

1 回答 1

1

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

将“返回值”更改为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
    ]
  ]
]);
于 2021-05-11T21:23:34.310 回答