Порядок по нескольким мета-ключам и мета-значениям [закрыт]

16

Как я могу установить порядок нескольких мета-ключей по мета-значению, кто-нибудь может привести пример?

Дирадж Сутар
источник
4
Добро пожаловать в WPSE - для нас, чтобы помочь вам, вы должны помочь нам. Можете ли вы описать более подробно, что вы пытаетесь сделать, и, возможно, опубликовать некоторые примеры кода.
TheDeadMedic

Ответы:

32

meta_queryэто массив мета-предложений. Например:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

Вы можете использовать ассоциативный массив с ключом для каждого мета-предложения:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
) );

Затем вы можете использовать эти ключи в order_byаргументе с одним:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => 'city_clause', // Results will be ordered by 'city' meta values.
) );

Или больше статей:

$q = new WP_Query( array(
    'meta_query' => array(
        'relation' => 'AND',
        'state_clause' => array(
            'key' => 'state',
            'value' => 'Wisconsin',
        ),
        'city_clause' => array(
            'key' => 'city',
            'compare' => 'EXISTS',
        ), 
    ),
    'orderby' => array( 
        'city_clause' => 'ASC',
        'state_clause' => 'DESC',
    ),
) );

Пример взят из этого поста в блоге Make WordPres Core.

cybmeta
источник
не забудьте добавить тип мета-ключа / значения. это повлияет на результаты. по умолчанию wp будет обрабатывать вашу мету как строку.
Александр Иващенко
3
Но что, если я не хочу возвращать результаты только в штате Висконсин? Я хочу, чтобы все состояния были возвращены, и я хочу, чтобы строки, в которых мог быть или не быть город, все еще упорядочены по этим двум полям. напр., без предложения WHERE - просто ORDER BY.
Феликс Ева