Я пытаюсь получить отзывы (пользовательский тип сообщения) в следующем порядке.
Я могу легко получить сообщения, используя класс WP_Query, но изо всех сил пытаюсь создать аккордеон, как показано на скриншоте выше.
@ user3325126 Отличный код, спасибо :) Просто замените 'post_per_page' => -1 на 'posts_per_page' => -1, (не хватает одной) Это должно быть
'posts_per_page'=> -1,
Попробуйте использовать пользовательский запрос выбора и циклически проходить по каждому сообщению с типом отзыва post_type.
Затем выполните цикл по результату и установите WP_Query() class date_query param для массивагоды, полученные в результате запроса произвольного выбора.
WP_Query() class
date_query
global $wpdb; $posts = $wpdb->posts; //Get all unique years as "years" from posts where post type is equal to testimonials $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 //Loop through all results and use date_query param https://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters $result = $wpdb->get_results($sql); foreach($result as $rs) { echo '<h2>'.$rs->years.'</h2>'; $args = array( 'post_type' => 'testimonials', '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; } }