2015-05-04 74 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 –