Каков наиболее эффективный способ получить два запроса на основе оператора if?

Я хочу получить все пользовательские сообщения с определенным пользовательским термином таксономии и упорядочить их по определенному настраиваемому мета-полю. Тем не менее, мне также нужно обслуживать, когда поле orderby пустое, и в этом случае, orderby date. Если я meta_value и meta_value соответствующую meta_key , то если эта конкретная категория не имеет мета, никакие сообщения вообще не возвращаются.

ИСПОЛЬЗУЙТЕ СЛУЧАЙ: У меня есть custom post для аренды, а также некоторые «признанные категории» ( taxonomy ), такие как «дружелюбный к ребенку». И есть переключатель ( custom meta ), чтобы отметить сообщение как липкое или нет.

Я хочу получить (например) все свойства аренды, отмеченные как дружественные к детям, и упорядочить с помощью sticky=on . Однако, если ни одно из свойств не отмечено как липкое, тогда я хочу упорядочить date .

Я думаю, что корень проблемы заключается в том, что по умолчанию, если липкий переключатель не помечен как «включен», то в базе данных нет мета. Нет записи для sticky=off , обычная мета просто не существует.

Итак, следует ли настраивать пользовательский почтовый код таким образом, чтобы всегда существовало значение для липкого (то есть 0/1 или pre_get_posts / Выкл.), Или есть способ (возможно, pre_get_posts ?), Чтобы проверить запрос и использовать другой порядок … Или, может быть, есть какой-то умный meta_query я мог бы использовать?

Я думаю, что первый вариант был бы наиболее эффективным?

Мой текущий запрос выглядит так:

 $args = array( 'numberposts' => -1, 'tax_query' => array( array( 'taxonomy' => 'property-feature', 'field' => 'slug', 'terms' => 'child-friendly' ) ), 'meta_key' => 'sticky_post', 'orderby' => 'meta_value date', 'order' => 'ASC', 'post_type' => 'listing', 'post_status' => 'publish', 'fields' => 'ids', ); $posts = get_posts( $args ); 

Тем не менее, это только возвращает сообщения, если есть списки, помеченные как липкие. Что делать, если нет липких? Я все еще хочу их получить. Я не думаю, что работает 2 запроса (т. Е. Если первый запрос пуст, а затем второй запрос), это лучший способ сделать это …

Solutions Collecting From Web of "Каков наиболее эффективный способ получить два запроса на основе оператора if?"