Поддержка Проблемы и решения Не работает постраничная навигация при wp_query

  • Использую на странице данный код для вывода записей

    <?php
    $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
    $my_args = array(
    	'posts_per_page'   => 10,
    	'cat' => 8,
    	'orderby' => 'date',
    	'order' => 'DESC',
    	'paged' => $paged
    );
    $my_query = new WP_Query( $my_args );
    ?>
    <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
    	<?php get_template_part( 'anons', 'news', get_post_format() ); ?>
    <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>
    
    <?php the_posts_pagination( array( 'mid_size' => 2 ) ); ?>

    Записи отображаются на станице по 10 штук, но не выводится постраничная навигация. Подскажите, в чем может быть проблема?

Просмотр 15 ответов — с 1 по 15 (всего 18)
  • Подскажите, что нужно сделать, чтобы функция the_posts_pagination заработала.

    Можно ли вообще заставить работать эту функцию пагинации для кастомных запросов? В интернете нашел только информацию о том, что нужно использовать query_posts, но этого делать не очень бы хотелось.

    Модератор Yuri

    (@yube)

    Самое правильно решение — использовать страницы и рубрики по назначению, а не пытаться вывести рубрику на статической странице.

    Очень возможно, что Айседора Дункан так и делает. Может быть, она в кабинете обедает, а кроликов режет в ванной. Может быть. Но я не Айседора Дункан!..

    Очень рекомендую прислушаться к совету профессора Преображенского и обедать в столовой, а оперировать в операционной.

    В интернете нашел только информацию о том, что нужно использовать query_posts,

    Устаревшие и вредные советы. Полностью перешибать в шаблоне инициализацонную выборку — mauvais ton. 99% задач кастомизации выборки решается с помощью хука ‘pre_get_posts’.

    А для изменения вывода внешнего вида рубрики тогда нужно редактировать файл category.php и использовать условие if ( in_category() )? Все верно?

    Модератор Yuri

    (@yube)

    А для изменения вывода внешнего вида рубрики тогда нужно редактировать файл category.php

    Не обязательно. Можно скопировать шаблон category.php в category-{slug}.php или category-{id}.php и издеваться над ним.
    Матчасть: Иерархия шаблонов « WordPress Codex

    условие if ( in_category() )

    Это условие для записи, входящей в рубрику. Для проверки рубрики используется is_category(). Матчасть: Conditional Tags « WordPress Codex

    Можно скопировать шаблон category.php в category-{slug}.php или category-{id}.php и издеваться над ним.

    У меня на сайте не используется /category/ в url’е. Как быть в этом случае?

    Модератор Yuri

    (@yube)

    По урлу движок определяет что выводить, а уже затем ищет подходящий шаблон. Прямой связи между буквами в урле и именами файлов шаблонов нет.

    Багофича WP позволяет движку определить запрос «рубрика» без наличия /category/ в урле.

    Т.е. лучшим вариантом будет вернуть /category/ в адреса страниц и использовать category-{slug}.php?

    Т.е. лучшим вариантом будет вернуть /category/ в адреса страниц и использовать category-{slug}.php?

    Давайте я Вам процитирую еще раз:

    Прямой связи между буквами в урле и именами файлов шаблонов нет.
    Багофича WP позволяет движку определить запрос «рубрика» без наличия /category/ в урле.

    Добавлю только — ВП определяет шаблон соотнося запрошенный урл с настройками ЧПУ.

    Давайте я Вам процитирую еще раз:

    Да это я понял. Просто слово «багофича» настораживает…

    Модератор Yuri

    (@yube)

    Просто слово «багофича» настораживает…

    И это хорошо, и это правильно.

    Кто более-менее давно работает с WP, те один раз уже пережили «счастливый» момент практически массового паралича плгинов, удаляющих ‘/category/’ из урла. Это раз.

    При удалении этого слова перестают работать некоторые фичи движка. Это два.

    Но тем не менее, практика удаления ‘/category/’ довольно широко распространена. То ли из-за того, что слово не подходит по смыслу (а поменять базу рубрик религия не позволяет), то ли из-за веры в догмат «чем короче урл, тем лучше индексация«. То ли за компанию — как я 🙂

    Создал страницу на основе category-{slug}.php. В тег title записывается заголовок последнего поста. Как его можно поменять на свой кастомный?

    Модератор Yuri

    (@yube)

    Создал страницу на основе category-{slug}.php.

    Что-то Вы не то делаете. Не нужно ничего создавать. Тем более на основе шаблона. WP работает в другую сторону. Он смотрит по url, что запросили, выбирает из базы нужное, находит подходящий шаблон и с его помощью выводит то, что выбрал. «На основе шаблона» ничего не создается, шаблон только используется, шаблон вторичен.

    И очень рекомендую прочитать в Кодексе статью Страницы

    Я создал файл category-news.php, чтобы немного поменять внешний вид отображения записей из рубрики «Новости». Т.е. при переходе по ссылке /category/news/ я попадаю в созданный мной шаблон, а не в стандартный category.php.
    Я что-то не так сделал?

    Модератор Yuri

    (@yube)

    Вроде все так. Тогда зачем Вы пишете «Создал страницу»? «Страница» — очень многозначное слово, вносит много путаницы.

    Имеется в виду <title> в <head> или вывод the_title()?

    С шаблоном category.php title нормальный?

Просмотр 15 ответов — с 1 по 15 (всего 18)
  • Тема «Не работает постраничная навигация при wp_query» закрыта для новых ответов.