Получил специальное поле с именем, startDate
но оно есть только в нескольких событиях. Мне было интересно, если он не установлен для сообщения, которое я мог бы использовать post_date
для создания списка сообщений?
// if meta_key _postmeta.startDate isn't set get the rest by posts.post_date
query_posts(
array(
array(
'posts_per_page' => 10,
'meta_key' => 'startDate',
'meta_value' => date('Y-m-d'),
'meta_compare' => '<',
'orderby' => 'meta_value',
'order' => 'ASC'
),
array(
'meta_key' => 'post_date',
'meta_value' => date('Y-m-d'),
'meta_compare' => '<'
)
)
);
Ответы:
Если вы можете объяснить это в SQL, вы можете запросить это! Есть три места, где мы хотим изменить запрос по умолчанию:
Присоединиться и где-пункт добавляется с помощью в
_get_meta_sql()
функции . Вывод фильтруется, поэтому мы можем подключиться к нему:Предложение порядка фильтруется через
posts_orderby
:Это дает нам следующий запрос SQL:
Не забудьте отсоединить фильтры после того, как вы выполнили запрос, в противном случае вы можете испортить и другие запросы. И если возможно, вам не следует называть
query_posts()
себя , а изменять основной пост-запрос, который выполняется WordPress при настройке страницы.источник
functions.php
файл вашей темы . Затем непосредственно перед выполнением запроса вы помещаете двеadd_filter()
строки. После запроса вы пишите,remove_filter( 'get_meta_sql', 'wpse12814_get_meta_sql' ); remove_filter( 'posts_orderby', 'wpse12814_posts_orderby' );
чтобы удалить их снова.попробуйте что-нибудь вроде:
источник
Запрос сообщений вызывает только один запрос, а не два. Так что нет, вы не можете сделать два отдельных запроса и затем объединить результаты.
Помните, что вы выбираете несколько постов здесь, а затем отображаете их. Этот набор выбран все сразу. Если вы хотите получить два отдельных набора сообщений, а затем объединить их, то это то, что вам придется делать самостоятельно с get_posts или аналогичным.
источник