我在我的网站上为每个团队成员都有一个专门的页面。页面的标题是他们的名字和姓氏。对于我网站上的每个帖子,我都有两个ACF 'author'字段。我试图编写一个查询,以确定当前团队成员是否有任何author_1或author_2包含其姓名的帖子。
我目前得到0职位返回,即使我肯定我应该得到一些。下面是我的代码。
function hide_cotw_heading(){
$title = get_the_title();
global $post;
$latest_posts= get_posts( array(
'category' => 9,
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'author_1',
'value' => $title,
'compare' => 'LIKE',
),
array(
'key' => 'author_2',
'value' => $title,
'compare' => 'LIKE',
),
)
) );
if($latest_posts){
return 'Has posts';
} else{
return 'No posts';
}
}
字符串
2条答案
按热度按时间kq0g1dla1#
您遇到的问题可能源于高级自定义字段(ACF)如何存储选择字段的数据,例如您的'author_1'和'author_2'。ACF将它们存储为序列化数组,这可能会使使用WordPress的Meta_query的直接查询复杂化。当您尝试匹配此数组的特定部分时,(就像标签一样),标准的Meta_query是不够的,因为它不是设计来解析序列化数组或针对其中的特定元素的。
由于ACF将标签和值存储为数组,而Meta_query将此数组视为字符串,因此使用'LIKE'可能无效,因为序列化字符串的格式可能会有所不同。然而,我的解决方法是检索所有帖子,然后根据标签手动过滤它们。这可能效率较低,但考虑到数据结构,这可能是必要的。
字符串
mcvgt66p2#
我已经修改了你的代码,所以请试试这个
字符串
下面是将与ACF数组一起使用的更新代码
型