WordPress сортировка по произвольным полям

625
02 февраля 2017, 03:48

Прошу помочь разобраться с сортировкой, Мне нужно, чтобы при условии $_SESSION['sort_opoz']=='rate', после сортировки по произвольному полю ratings_average, происходила сортировка по второму произвольному полю ratings_users, до сортировки по date.

Вот код:

if (isset($_SESSION['sort_opoz'])){
if ($_SESSION['sort_opoz']=='date'){
    $args['orderby'] = 'date';
    $args['order'] = 'DESC';
}
elseif ($_SESSION['sort_opoz']=='rate'){
    $args['meta_key'] = 'ratings_average';
    //ratings_users
    //$args['meta_query'] = array('ratings_users' => array('key' => 'ratings_users', 'type' => 'numeric', 'compare' => 'NOT EXISTS'));
    $args['orderby'] = array( 'meta_value_num' => 'DESC', 'date' => 'DESC' );
    $args['order'] = '';
}
}
$args['meta_query'] = array(array('key' => 'mroom_detected', 'type' => 'numeric', 'compare' => 'NOT EXISTS'));
if (isset($_SESSION['opoz'])){
if ($_SESSION['opoz']=='neopoz'){
    $args['meta_query'] = array(array('key' => 'mroom_detected', 'type' => 'numeric', 'compare' => 'NOT EXISTS'));
}
elseif ($_SESSION['opoz']=='opozn'){
    $args['meta_query'] = array(array('key' => 'mroom_detected', 'type' => 'numeric', 'compare' => 'EXISTS'));
}
}
$posts = query_posts($args);
Answer 1

Для сортировки по несколькоким произвольным полям в meta_query должен быть ассоциативный массив.

$args['meta_query']['mroom_detected'] = array('key' => 'mroom_detected', 'type' => 'numeric', 'compare' => 'NOT EXISTS');
if (isset($_SESSION['sort_opoz'])){
    if ($_SESSION['sort_opoz']=='date') {
        $args['orderby'] = 'date';
        $args['order'] = 'DESC';
    } elseif ($_SESSION['sort_opoz']=='rate') {
        $args['meta_query']['ratings_average'] = array('key' => 'ratings_average', 'compare' => 'EXISTS');
        $args['meta_query']['ratings_users'] = array('key' => 'ratings_users', 'type' => 'numeric', 'compare' => 'EXISTS');
        $args['orderby'] = array( 'ratings_average' => 'DESC', 'ratings_users' => 'DESC', 'date' => 'DESC' );
     }
}
if (isset($_SESSION['opoz'])) {
    if ($_SESSION['opoz']=='opozn' ){
        $args['meta_query']['mroom_detected'] = array('key' => 'mroom_detected', 'type' => 'numeric', 'compare' => 'EXISTS');
    }
}

Сортировка по нескольким meta-полям работает в Wordpress начиная с версии 4.2.

READ ALSO
sqlsrv_fetch_array() expects parameter 1 to be resource

sqlsrv_fetch_array() expects parameter 1 to be resource

Доброго времени суток! встала задача перенести небольшой проект с php+mysql на iis 8+mssql,уткнулся в стену со следующей строчкой :

430
Symfony (strict) validation

Symfony (strict) validation

Собственно вопрос, условно создается валидатор который принимает объект

420
Laravel валидация по regex

Laravel валидация по regex

Делаю валидацию формы с ларавельным валидатором, ругается на 'vk_url' => 'regex:/^(http(s)?:\/\/)?(www\)?vk\

520
Замена фнукции session_is_registered

Замена фнукции session_is_registered

Доброго времени сутокВ древнем движке ShopScript ругается на устаревшую функцию

417