如果Post Meta Value是多维数组,如何查询帖子?

时间:2015-05-07 11:37:54

标签: wordpress wp-query

我使用的是以下元查询,但我仍然收到不相关的帖子。

$current_query['meta_query'] = array(
                                array(
                                    'key' => '_game_selected_platforms',
                                    'value' => $platform->term_id,
                                    'compare' => 'LIKE'
                                ),
                            );

而元值是多维数组,如下所示:

get_post_meta('$postID','_game_selected_platforms',false);

1 个答案:

答案 0 :(得分:0)

所以这就是我所做的。我使用 pre_get_posts 过滤器,进一步挖掘该数组并搜索该值是否存在,然后我使用 post__in

function latest_articles_of_platform($query){
    $platformobject = get_query_var('get_latest_articles');
    global $wpdb;
    $getallposts = $wpdb->get_results( "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE $wpdb->posts.post_type = 'post'", OBJECT );
    if ($getallposts){
        $postsin = array();
        foreach ($getallposts as $getallpost)   {
            $platformsofposts = get_post_meta($getallpost->ID,'_game_selected_platforms',false);
            if(in_array($platformsofposts->term_id, $platformsofposts ) ){
                $postsin[] = $getallpost->ID;
            }
        }
    } // if $getallposts

    if (get_query_var('get_latest_articles')) {
    //  var_dump($getallposts);
        $query->set('post__in',$postsin);
    }

}
add_action( 'pre_get_posts', 'latest_articles_of_platform' );

我正在寻找现有主题的帮助,但我没有得到任何解决方案。
重要

$current_query['get_latest_articles'] = $platform;

我还在查询中添加了这一行,以确定它是我的自定义查询,但这只有在您有权访问前端查询时才有可能,否则有其他方法可以识别您要过滤的查询。 / p>