2012-04-04 28 views
0

私は、1から10までの値を持つ「評価」というカスタムフィールドを持っています。 私が望むのは、を選択してください。を選択してください)を使用して、評価に応じて検索結果を並べ替えます。Wordpressカスタムフィールド - 値でソートされた検索結果

私はこのコードを発見しました。しかし、問題は、あなたがレーティングによってレーティングを選択することができないということです。自動的に投稿を注文します。 これは私がコピーをした、あなたはこのコードを使用している場合は、ちょうどあなたのURLに?格付け= DESCを追加することができますし、降順で評価が表示されますの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

関連する問題