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

Если вы используете этот код вы можете просто добавить? Рейтинг = DESc в свой адрес, и вы увидите рейтинги в порядке убывания ,

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

Смежные вопросы