get_posts数组值get_the_ID不起作用

时间:2020-08-13 12:13:28

标签: wordpress

我已经设置了post_type步骤。其中有一个ACF字段,允许与另一篇文章建立一种关系。

因此,我试图从其他帖子中检索具有当前帖子ID的所有步骤帖子(从单个帖子页面)。 在后选项表中按单词搜索(按定义是一个字符串字段)是否为元值。​​

我有这个查询

$steps = get_posts(array(
    'post_type' => 'step',
    'meta_query' => array(
     array(
        'key' => 'step_goal', // name of custom field
        'value' => '"' . get_the_ID() . '"',
      //'value' => "439", 
    'compare' => 'LIKE'
    )
)
));

我使用了vardump(get_the_ID()),它返回439(init),因为它是帖子ID。

我已经检查了get_the_ID()的值,它是439

如果我使用'“'。get_the_ID()。'”作为值运行脚本,则查询将不起作用。
如果我使用值“ 439”使用它,则它可以工作。 如果我使用get_the_ID()作为值运行脚本,则该脚本可以运行,但稍后可能会导致ID如4391出现问题。

我在做什么错? 谢谢

2 个答案:

答案 0 :(得分:0)

在没有更多信息的情况下,我将假定439实际上是您要使用的正确值,并且这是一个格式问题。

您是否尝试过仅使用get_the_ID()而不用括号将其转义? 当前设置为
'"' . get_the_ID() . '"'
返回为
'"439"'

如果您尝试"' . get_the_ID() . '"怎么办?那将返回为"439"

答案 1 :(得分:0)

您正在对数字进行完全匹配,因此LIKE是错误的比较-仅适用于字符串,并且它也进行了部分匹配(因此“ 439”也将匹配“ 4391”,“ 1439”等)。

如果您尝试使用数字精确匹配查找值,则需要使用:

  • 比较类型:=(这是默认比较,因此不必将其包括在内)
  • 'type' => 'NUMERIC'

在下面尝试此代码-未经测试,因为我没有您的CPT等,但它应该可以工作!

$steps = get_posts(array(
    'post_type' => 'step',
    'meta_query' => array(
         array(
            'key' => 'step_goal', // name of custom field
            'value' => get_the_ID(),
            'type' => 'NUMERIC',
        )
    )
));