Как добавить пагинацию для записей, если они отображаются через виджет на главной странице?

Ссылка скопирована
PHP
1 ответ

Тема accelerate
Добавил через меню виджетов "последние записи" на главную страницу. Сделал 3 колонки 6 записей, остальное хочу чтоб переключали листали через пагинацию, но не могу даже понять в какой файл эту пагинацию вставлять, пересмотрел все файлы .php в папке с темой accelerate всякие sidebar.php и sidebar-left.php и все остальные, в них никакого кода для последних записей. Так как же найти какой файл отвечает за конкретный блок на странице?

Дополнительно:

какое такое меню виджетов да ещё и на морде?

Ответы:

каким виджетом вы добавляли записи? "Добавил через меню виджетов "последние записи" ". Сколько у вас последних записей? Неужели столько что можно для них навигацию делать? Если просто вы вывели все записи, и нужна навигация, то навигация будет. Навигация появляется если колличество выводимых записей больше чем предусмотрено на одну страницу. Чтобы узнать какой файл отвечает за вывод записей почитайте документацию к теме. Я никогда не сталкивался с accelerate, не знаю. Обычно за это отвечают файлы archive.php
single.php content.php content-single.php content-page.php content-search.php, но не факт что это всё есть в вашей теме Можете почитать тут. https://wpincode.com/kak-vyvesti-vse-zapisi-wordpr...

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

Стандартный виджет “Последние записи” в WordPress не предназначен для пагинации. Он просто выводит фиксированное количество записей. Поэтому Вы не найдёте отдельный файл в теме, где можно “вставить пагинацию” именно для этого виджета: его HTML генерируется классом WordPress WP_Widget_Recent_Posts.

Если нужна нормальная пагинация, лучше не использовать стандартный виджет. Сделайте отдельный шаблон главной страницы или shortcode с WP_Query, где будет параметр paged.

$paged = max(1, get_query_var('paged'), get_query_var('page'));
 
$query = new WP_Query([
    'post_type' => 'post',
    'posts_per_page' => 6,
    'paged' => $paged,
]);
 
while ($query->have_posts()) {
    $query->the_post();
    get_template_part('template-parts/post-card');
}
 
echo paginate_links([
    'total' => $query->max_num_pages,
    'current' => $paged,
]);
 
wp_reset_postdata();

$paged = max(1, get_query_var('paged'), get_query_var('page')); $query = new WP_Query([ 'post_type' => 'post', 'posts_per_page' => 6, 'paged' => $paged, ]); while ($query->have_posts()) { $query->the_post(); get_template_part('template-parts/post-card'); } echo paginate_links([ 'total' => $query->max_num_pages, 'current' => $paged, ]); wp_reset_postdata();

Если главная страница назначена как статическая, иногда для пагинации используется query var page, а не paged, поэтому в примере взяты оба варианта.

Как найти файл, который отвечает за блок: включите Query Monitor или временно включите отображение шаблонов. Для стандартного виджета файла темы не будет. Если блок добавлен конструктором или виджетом темы, ищите по тексту заголовка виджета или классу HTML в папке темы.

Итог: пагинация для стандартного виджета — плохой путь. Для 6 записей с листанием делайте отдельный loop на главной странице или используйте блок/плагин, который поддерживает pagination. Так будет проще контролировать карточки, сетку и SEO-ссылки на страницы пагинации.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно