2012-04-04 105 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