#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/