2015-05-04 53 views
0

我正在根据分类设置帖子的评分,可以说,现在我想根据评级和分类法来查询它们。
在PC上的应用程序有等级10(meta_key = rating_pc)
在Android上的应用程序有等级5(meta_key = rating_android)基于多个评级获取帖子foreach分类标准

add_action('posts_where', 'minscoreaction'); 
function minscoreaction($sql){ 

    global $wpdb; 
    $minscore = 9;//get_query_var('minscore'); 
    $platformslug = 'pc';//get_query_var('platformlist'); 

    if($minscore){ 
     $sql .= $wpdb->prepare(" AND ($wpdb->postmeta.meta_key LIKE %s AND $wpdb->postmeta.meta_value LIKE %s)", "rating_".$platformslug.'%',$minscore.'%'); 

问题:我得到什么?意味着没有职位。实际上有一个帖子的评分为9。


注意:我只能使用这种方法来查询帖子由于几个原因。

另注:

$where .= $wpdb->prepare(" AND $wpdb->posts.post_type LIKE %s ", 'reviews%'); 

这将返回所有的评论帖子类型

但这返回任何

$where .= $wpdb->prepare(" AND $wpdb->postmeta.meta_value LIKE %s ", '9%'); 

Meta Value with 9

FRONT-END

print_r(query_posts('post_type=reviews&platformlist=pc&minscore=9')); 

回答

1

使用这functions.php或您template page要使用。

function filter_where($where = '') { 
     global $wpdb; 
     $minscore = 9; 
     $platformslug = 'pc';  
     $posttype =  "reviews"; 

$where .= " AND ($wpdb->posts.post_type = '".$posttype."')"; 
$where .= " AND (($wpdb->postmeta.meta_key LIKE '_overall_rating_".$platformslug."%' AND $wpdb->postmeta.meta_value = '".$minscore."')) "; 

     return $where; 
    } 
    add_filter('posts_where', 'filter_where'); 

或与WP_QUERY

使用此代码对前端

$the_query = new WP_Query(array(
    'post_type' => $posttype , 
    'meta_query' => array(
     array('key' => '_overall_rating_' . $platformslug, 
      'value' => $minscore) 
    ) 
)); 
print_r($the_query); 
+0

仍然没有运气..顺便说一句这是一个自定义后类型.. –

+0

您可以编辑了完整的源代码的问题,还要检查meta_value多年平均值包含空格。与'9' – Noman

+0

我刚刚更新了问题..使用相同的方法$ wpdb->文章工作正常..但不是$ wpdb-> postmeta –