WP Query пост по годам в аккордеоне - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь получить отзывы (пользовательский тип сообщения) в следующем порядке.

enter image description here

Я могу легко получить сообщения, используя класс WP_Query, но изо всех сил пытаюсь создать аккордеон, как показано на скриншоте выше.

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

@ user3325126 Отличный код, спасибо :) Просто замените 'post_per_page' => -1 на 'posts_per_page' => -1, (не хватает одной) Это должно быть

'posts_per_page'=> -1,
0 голосов
/ 25 сентября 2018

Попробуйте использовать пользовательский запрос выбора и циклически проходить по каждому сообщению с типом отзыва post_type.

Затем выполните цикл по результату и установите WP_Query() class date_query param для массивагоды, полученные в результате запроса произвольного выбора.

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;

     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...