微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有ACF转发器子字段和特定值的WordPress查询帖子

如何解决没有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 举报,一经查实,本站将立刻删除。