Я пытаюсь запросить более одного типа сообщений. На самом деле я могу легко запросить более одного типа сообщения, разбить его на страницы и все такое, но позже я понимаю, что мне нужно получить только спецификацию c от одного типа сообщения, и теперь у меня проблемы с этим.
Out из двух post_type im, используя один обычный post
, а другой event
.
Я использую этот плагин для событий: https://wordpress.org/plugins/event-organiser/
Вот код, который я использую для запроса более двух типов сообщений.
$args = array(
'post_type' => array('post','event'),
'posts_per_page' =>$posts_per_page,
'paged' => $paged
);
$post = new WP_Query($args);
Приведенный выше код работает нормально, пока я не попробую go запрос, где event
- это >=
текущая дата (означает только показать активные события, которые происходят сегодня или в будущем)
пожалуйста, дайте мне несколько предложений или помощи
Спасибо
Обновить
Вот новый $args
$args = array(
'post_type' => array('post','event'),
'posts_per_page' =>$posts_per_page,
'paged' => $paged,
// 'meta_key' => '_eventorganiser_schedule_start_finish',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => '_eventorganiser_schedule_start_finish',
'value' => date('Y-m-d'),
// 'value' => date('Y-m-d h:i:s', time()),
'type' => 'NUMERIC',
'compare' => '>='
),
array(
'key' => '_edit_lock',
'compare' => 'EXISTS'
)
)
);
Новый $args
Создать следующий запрос:
SELECT SQL_CALC_FOUND_ROWS multi_posts.ID FROM multi_posts INNER JOIN multi_postmeta ON ( multi_posts.ID = multi_postmeta.post_id ) INNER JOIN multi_postmeta AS mt1 ON ( multi_posts.ID = mt1.post_id ) WHERE 1=1 AND ( ( multi_postmeta.meta_key = '_eventorganiser_schedule_start_finish' AND CAST(multi_postmeta.meta_value AS SIGNED) >= '2020-05-05' ) OR mt1.meta_key = '_edit_lock' ) AND multi_posts.post_type IN ('post', 'event') AND (multi_posts.post_status = 'publish' OR multi_posts.post_status = 'acf-disabled') GROUP BY multi_posts.ID ORDER BY multi_posts.menu_order, multi_posts.post_date DESC LIMIT 0, 9
Ну, он все еще не фильтрует события, срок действия которых истек.