如何解决没有ACF转发器子字段和特定值的WordPress查询帖子
我有两种自定义帖子类型,播放列表和游戏。播放列表具有ACF转发器字段,其中包含游戏。
我的目标:我正在尝试构建一个简单的查询,该查询将在转发器字段中列出所有没有此游戏的播放列表,并将所有空的alll播放列表列出(根本没有任何转发器字段/数据库条目)。如果可能的话,我想使用get_posts()函数实现我的目标。
我的问题:我只能通过在“ game_filter”元查询比较字段中使用=运算符来获取仅显示拥有游戏的播放列表的查询(但我要相反)。如果我选择!=或或IS NOT运算符,它将吐出所有可用的帖子。而且,如果我还包括“ empty_playlists”元查询,则无论我使用什么运算符,它都将始终显示所有播放列表,即使它是OR或列出的帖子中也有条目。
我尝试了很多,但无法正常工作。我发现的所有实例都是关于不同的事情,主要是关于转发器字段名称及其解决方案的%问题。我希望有人可以帮助我快速完成这项工作。我究竟做错了什么?请帮助更好的程序员! :-)
这是我的代码
$excluded_playlists_game_id = 274;
$user_id = 1;
$args = array(
'post_type' => PSiCorePostTypes::PLAYLISTS,'author' => $user_id,'order_by' => 'title','order' => 'ASC','suppress_filters' => false,'Meta_query' => array(
'relation' => 'OR','game_filter' => array(
'type' => 'NUMERIC','key' => 'psi_playlist_games_%_item','compare' => '!=','value' => $excluded_playlists_game_id,),'empty_playlists' => array(
'key' => 'psi_playlist_games_%_item','compare' => 'NOT EXISTS',);
$user_playlists = get_posts( $args );
add_filter( 'posts_where','get_user_playlists_query_allow_wildcard' );
function get_user_playlists_query_allow_wildcard( $where ) {
global $wpdb;
$where = str_replace(
"Meta_key = 'psi_playlist_games_%_item","Meta_key LIKE 'psi_playlist_games_%_item",$wpdb->remove_placeholder_escape( $where )
);
return $where;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。