Timber posts_per_page показывает только одно сообщение в архиве

#php #wordpress #pagination #twig #timber

#php #wordpress #разбивка на страницы #twig #timber

Вопрос:

У меня есть страница архива, на которой не отображаются все результаты, как ожидалось. Изменение аргумента post_per_page на -1 в моем запросе позволяет отображать все результаты, однако, когда оно ограничено 5 сообщениями, я получаю только один результат:

 if (!isset($paged) || !$paged){
    $paged = 1;
}
$context = Timber::get_context();
$course_args = array(
    'post_type' => 'course',
    'posts_per_page' => 4,
    'paged' => $paged,
    'tax_query' => array(
        array(
            'taxonomy' => 'course-category',
            'field' => 'ID',
            'terms' => $cat
        )
    )
);
$context['pagination'] = Timber::get_pagination();
$context['post'] = Timber::get_posts($course_args);
 

Базовая итерация, на мой взгляд

 {% for course in post %}
    <div class="col-md-6 px-3 py-5">
        //courseCard
    </div>
{% endfor %}
 

Любая помощь была бы очень признательна, так как теперь я смотрю на это так долго, что хожу по кругу.

Ответ №1:

Попробуйте использовать TimberPostQuery

 $context = Timber::get_context();
$course_args = array(
    'post_type' => 'course',
    'posts_per_page' => 4,
    'tax_query' => array(
        array(
            'taxonomy' => 'course-category',
            'field' => 'ID',
            'terms' => $cat // I guess this variable was created before
        )
    )
);
$context['posts']   = new TimberPostQuery($course_args);
// Render twig
 

Вам не нужно создавать разбивку на страницы, поскольку PostQuery позаботится об этом
В вашем файле twig

 {% for course in posts %}
    <div class="col-md-6 px-3 py-5">
        //courseCard
    </div>
{% endfor %}

{% include 'partials/pagination.twig' with {pagination: posts.pagination} %}
 

Ваша разбивка на страницы.twig должен содержать информацию о разбивке на страницы

 {{ dump(pagination) }} 
 

Комментарии:

1. И каков результат дампа (сообщений)?

2. он выдает null

3. О, я только что упомянул — ваш контекст post или posts? $context [‘posts’], я сделал сообщения, в вашем коде это сообщение. Проверьте дамп (сообщение)

4. Теперь я вижу результат объекта запроса, ясно, что, возможно, проблема может быть в цикле foreach/