我使用的是以下元查询,但我仍然收到不相关的帖子。
$current_query['meta_query'] = array(
array(
'key' => '_game_selected_platforms',
'value' => $platform->term_id,
'compare' => 'LIKE'
),
);
而元值是多维数组,如下所示:
get_post_meta('$postID','_game_selected_platforms',false);
答案 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>