2012-04-04 118 views
0

排序我已經調用自定義「等級」字段值爲1到10 我想要的是,你可以選擇(如點擊一個按鈕或類似的東西)根據評分對搜索結果進行排序。WordPress的自定義字段 - 搜索結果按值

我發現了這段代碼。但問題是,你不能選擇是否按評分排序。它會自動訂購帖子。 這是我已經複製並粘貼到的functions.php代碼

add_filter('posts_join', 'add_join'); 
function add_join($pjoin){ 
    global $wpdb; 
    $pjoin .= "LEFT JOIN (
    SELECT * 
    FROM $wpdb->postmeta 
    WHERE meta_key = 'rating') AS postmeta ON $wpdb->posts.ID = postmeta.post_id"; 

    return ($pjoin); 
} 

add_filter('posts_orderby', 'change_sortorder'); 
function change_sortorder($orderby){ 
    global $wpdb; 
    $orderby = "postmeta.meta_value+0 DESC"; 
    return $orderby; 
} 

回答

1

如果您使用此代碼,你可以再補充?等級=遞減到您的網址,你會看到降序排列的收視率。

function register_my_qv() { 
global $wp; 
$wp->add_query_var('rating'); 
} 
add_action('init', 'register_my_qv'); 

function map_my_qv($wp_query) { 
if ($meta_value = $wp_query->get('rating')) { 
    $wp_query->set('meta_key', 'rating'); 
    if($meta_value == 'asc') { 
     $wp_query->set('orderby', 'meta_value_num'); 
     $wp_query->set('order', 'asc'); 
    } elseif ($meta_value == 'desc') { 
     $wp_query->set('orderby', 'meta_value_num'); 
     $wp_query->set('order', 'desc'); 
    } else { 
     $wp_query->set('meta_value', $meta_value); 
    } 
} 
} 
add_action('parse_query', 'map_my_qv'); 
+0

非常感謝!只是我正在尋找的答案:) – Helena 2012-04-05 11:25:54