我已经设置了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出现问题。
我在做什么错? 谢谢
答案 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',
)
)
));