Сортировать meta_query с логическим настраиваемым полем - PullRequest
1 голос
/ 22 июня 2019

Я часами искал, чтобы разрешить липкое сообщение на странице архива с логическим полем.

Все работает нормально, если мое поле не является логическим (дата, число> = 2 или что-то еще), но я ничего не могу сделать с логическим полем.

Вот мой код:

$query->set( 'meta_query', array(
    'relation' => 'OR',
    array(
        'key' => 'cat_sticky_enabled',
        'compare' => 'EXISTS',
    ),
    array(
        'key' => 'cat_sticky_enabled',
        'compare' => 'NOT EXISTS'
    )
) );

$query->set( 'orderby', 'meta_value date' );
$query->set( 'order', 'DESC' );

В случае логического значения:

  • Если я просто назову существующее cat_sticky_enabled, у меня будет хороший результат (все проверенные сообщения).
  • Если я просто назову 'cat_sticky_enabled', которого не существует, у меня будет хороший результат (все непроверенные сообщения).
  • Если я вызываю оба, у меня есть все мои сообщения, но я не могу их упорядочить должным образом (пробовал с meta_value и meta_value_num): /

Заранее благодарю за ответы. Я что-то упускаю, но не могу найти: /

Редактировать: извините, мой код был "ИЛИ", а не "И"

1 Ответ

0 голосов
/ 22 июня 2019

Я наконец решил свою проблему:)

Если это может кому-то помочь:

$query->set( 'meta_query', array(
    'relation' => 'OR',
    'field_order' => array(
        'key' => 'category_sticky_post_enabled',
        'compare'   => 'EXISTS',
        ),
    'field_order_withnulls' => array(
        'key' => 'category_sticky_post_enabled',
        'compare' => 'NOT EXISTS',
        )
    )
);

$query->set( 'orderby', 'field_order_withnulls post_date' );
$query->set( 'order', 'DESC' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...