Я пытаюсь настроить запрос WordPress и l oop так, чтобы события группировались по годам в порядке по убыванию , с заголовком для каждого года, а затем упорядочивались по месяцам в * 1003. * по возрастанию порядок для каждой группы года, например:
2020
- 1 января 2020 года
- 1 февраля 2020 года
- 1 марта 2020 года
2019
- 1 января 2019
- 1 февраля 2019
- 1 марта 2019
Я нашел несколько полезных потоков, которые указывают в правильном направлении, например this , который использует прямой запрос SQL для получения сообщений по годам, а затем запускает обычно l oop на WP_Query
для группировки и сортировки сообщений в каждой группе. Однако в моем случае вместо использования post_date
у меня есть настраиваемое поле (с использованием расширенных настраиваемых полей) для event_end_date
, которое должно определять порядок публикаций и определения групп.
Запрос SQL в связанном примере:
$sql = "SELECT DISTINCT(YEAR(`post_date`)) as years FROM $posts WHERE post_type = 'testimonials' ORDER BY years DESC"; //Get all post year list by DESC
$result = $wpdb->get_results($sql);
foreach($result as $rs) {
echo '<h2>'.$rs->years.'</h2>';
$args = array(
'post_type' => 'event',
'post_per_page'=> -1,
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'DESC',
'date_query' => array(array(
'year'=> $rs->years,
),),
);
$loop = new WP_Query($args);
if($loop->have_posts()) {
while($loop->have_posts()) : $loop->the_post();
echo '<a href="'.get_permalink().'">'.get_the_date().'</a>';
endwhile;
}
}
И я не совсем уверен, как изменить его так, чтобы я мог запросить пользовательское поле event_end_date
и создать группы по годам, в пределах которых я могу затем перечислить сообщения, отсортированные по месяцам AS C.
Я предполагаю, что мне нужно , чтобы использовать ручной запрос SQL здесь, в котором типичный WP_Query
не позволил бы сортировку двумя разными способами, как я описал? Я могу легко выводить события в группы с заголовками для каждого года, но только в одном установленном порядке, то есть AS C или DES C. Спасибо за любую помощь здесь, и, пожалуйста, дайте мне знать, если это неясно в любом случае.