@Smirator

Почему не работает пагинация в кастомном типе записи?

Столкнулся с проблемой одинакового контента на всех страницах пагинации в кастомном типе. При клике на следующую страницу пагинации в урл добавляется новая страница, но на странице все отображается тоже самое. Структуру ссылок обновлял. Мои шаблоны:

1 front-page.php:
<?php
get_header(); ?>
            <div id="content">

                <?php
                // Получение текущей страницы, если не указано, то по умолчанию 1
                $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

                // Запрос для получения постов
                $args = [
                    'post_type' => 'agency',
                    'post_status' => 'publish',
                    'orderby' => 'date',
                    'order' => 'DESC',
                    'posts_per_page' => 10,  // Количество постов на одной странице
                    'paged' => $paged, // Номер текущей страницы
                ];

                $query = new WP_Query($args);
                ?>

                <?php if ($query->have_posts()):
                    $arr_id = []; ?>
                    <?php while ($query->have_posts()):
                        $query->the_post();
                        the_id();
                        ?>
                    <?php endwhile; ?>

                    <!-- Пагинация -->
                    <div class="pagination">
                        <?php
                        echo paginate_links([
                            'total' => $query->max_num_pages, // Общее количество страниц
                            'current' => $paged, // Текущая страница
                            'prev_text' => __('« Previous'), // Текст для ссылки "Предыдущая страница"
                            'next_text' => __('Next »'), // Текст для ссылки "Следующая страница"
                        ]);
                        ?>
                    </div>

                    <?php wp_reset_postdata(); // Сброс данных после запроса ?>
                <?php endif; ?>
            </div>


<?php get_footer(); ?>


agency.php:
<?php

// Регистрируем свой тип страницы - бюро переводов
function create_agency() {
    $labels = array(
        'name' => _x( 'Бюро переводов', 'Post Type General Name', 'textdomain' ),
        'singular_name' => _x( 'Бюро переводов', 'Post Type Singular Name', 'textdomain' ),
        'menu_name' => _x( 'Бюро', 'Admin Menu text', 'textdomain' ),
        'name_admin_bar' => _x( 'Бюро', 'Add New on Toolbar', 'textdomain' ),
        'archives' => __( 'Список бюро', 'textdomain' ),
        'attributes' => __( 'Атрибуты бюро', 'textdomain' ),
        'parent_item_colon' => __( 'Родительская страница:', 'textdomain' ),
        'all_items' => __( 'Все бюро', 'textdomain' ),
        'add_new_item' => __( 'Добавить новое бюро переводов', 'textdomain' ),
        'add_new' => __( 'Добавить новое бюро', 'textdomain' ),
        'new_item' => __( 'Новое бюро', 'textdomain' ),
        'edit_item' => __( 'Редактировать бюро', 'textdomain' ),
        'update_item' => __( 'Обновить бюро', 'textdomain' ),
        'view_item' => __( 'Посмотреть бюро', 'textdomain' ),
        'view_items' => __( 'Посмотреть все бюро', 'textdomain' ),
        'search_items' => __( 'Искать бюро', 'textdomain' ),
        'not_found' => __( 'Бюро не найдены', 'textdomain' ),
        'not_found_in_trash' => __( 'В корзине ничего не нашлось', 'textdomain' ),
        'featured_image' => __( 'Основное изображение', 'textdomain' ),
        'set_featured_image' => __( 'Установить основное изображение', 'textdomain' ),
        'remove_featured_image' => __( 'Удалить основное изображение', 'textdomain' ),
        'use_featured_image' => __( 'Использовать как основное изображение', 'textdomain' ),
        'insert_into_item' => __( 'Вставить в запись бюро переводов', 'textdomain' ),
        'uploaded_to_this_item' => __( 'Загружено в эту запись типа бюро переводов', 'textdomain' ),
        'items_list' => __( 'Список записей типа бюро переводов', 'textdomain' ),
        'items_list_navigation' => __( 'Навигация по списку записей типа бюро переводов', 'textdomain' ),
        'filter_items_list' => __( 'Отфильтровать список записей типа бюро переводов', 'textdomain' ),
    );

    $args = array(
        'label' => __( 'Бюро переводов', 'textdomain' ),
        'description' => __( 'Все бюро переводов', 'textdomain' ),
        'labels' => $labels,
        'menu_icon' => 'dashicons-translation',
        'rewrite' => array( 'slug' => 'agency', 'with_front' => false ),
        'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'revisions', 'post-formats'),
        //'taxonomies' => array('post_tag'),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'menu_position' => 5,
        'show_in_admin_bar' => true,
        'show_in_nav_menus' => true,
        'can_export' => true,
        'has_archive' => true,
        'hierarchical' => true,
        'exclude_from_search' => false,
        'show_in_rest' => false,
        'publicly_queryable' => true,
        'capability_type' => 'post',
    );
    register_post_type( 'agency', $args );
    
    register_taxonomy( 'agency_tag', array('agency'), array(
        'hierarchical' => false, 
        'label' => 'Теги бюро', 
        'singular_label' => 'Тег бюро', 
        'rewrite' => array( 'slug' => 'agency-tag', 'hierarchical' => true, 'with_front'=> false ),
        )
    );
    
}

add_action( 'init', 'create_agency', 0 );

?>


Гуглил, толком информации не нашел. Кто-то менял параметры hierarchial, но у меня изначально все стояло в true. Пытался делать по разным руководствам - результат один. Вероятно, дело, действительно в настройке кастомного типа. Буду благодарен за мысли и подсказку.
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
@Smirator Автор вопроса
Решилось такой конструкцией:
$paged = (get_query_var('paged')) ? get_query_var('paged') : (get_query_var('page') ? get_query_var('page') : 1);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы