Как правильно реализовать постраничную пагинацию для произвольных типов записей?
не выводится пагинация.
Есть произвольный тип записи "Мероприятие" к нему таксономия (древовидного типа) "меры" и две категории "Благотворительность" и "Прочее".
вот скрин
вот код регистрации произвольного типа записи "Мероприятие":
// хук для регистрации произвольного поста add_action( 'init', 'register_post_types' ); function register_post_types(){ register_post_type('affairs', array( 'label' => null, 'labels' => array( 'name' => 'Мероприятие', // основное название для типа записи 'singular_name' => 'Мероприятие', // название для одной записи этого типа 'add_new' => 'Добавить мероприятие', // для добавления новой записи 'add_new_item' => 'Добавление мероприятии', // заголовка у вновь создаваемой записи в админ-панели. 'edit_item' => 'Редактирование мероприятии', // для редактирования типа записи 'new_item' => 'Новое мероприятие', // текст новой записи 'view_item' => 'Смотреть мероприятие', // для просмотра записи этого типа. 'search_items' => 'Искать мероприятие', // для поиска по этим типам записи 'not_found' => 'Не найдено', // если в результате поиска ничего не было найдено 'not_found_in_trash' => 'Не найдено в корзине', // если не было найдено в корзине 'parent_item_colon' => '', // для родителей (у древовидных типов) 'menu_name' => 'Мероприятие', // название меню ), 'description' => 'Благотворительные акции, событии, праздники, уагызы, соревнование, викторины', 'public' => true, 'publicly_queryable' => true, // зависит от public 'exclude_from_search' => true, // зависит от public 'show_ui' => true, // зависит от public 'show_in_nav_menus' => true, // зависит от public 'show_in_menu' => true, // показывать ли в меню адмнки 'show_in_admin_bar' => true, // зависит от show_in_menu 'show_in_rest' => true, // добавить в REST API. C WP 4.7 'rest_base' => null, // $post_type. C WP 4.7 'menu_position' => 4, 'menu_icon' => 'dashicons-megaphone', //'capability_type' => 'post', //'capabilities' => 'post', // массив дополнительных прав для этого типа записи //'map_meta_cap' => null, // Ставим true чтобы включить дефолтный обработчик специальных прав 'hierarchical' => false, 'supports' => [ 'title', 'editor' ], // 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats' 'taxonomies' => ['action'], 'has_archive' => true, 'rewrite' => array( 'pages' => true, ), 'query_var' => true, ) ); }
вот код регистрации таксономии "меры":
// хук для регистрации ТАКСАНОМИИ add_action( 'init', 'create_taxonomy' ); function create_taxonomy(){ // список параметров: wp-kama.ru/function/get_taxonomy_labels register_taxonomy( 'action', [ 'affairs' ], [ 'label' => '', // определяется параметром $labels->name 'labels' => [ 'name' => 'Меры', 'singular_name' => 'Мера', 'search_items' => 'Искать меру', 'all_items' => 'Все меры', 'view_item ' => 'Посмотреть меру', 'parent_item' => 'Родительская мера', 'parent_item_colon' => 'Родительская мера:', 'edit_item' => 'Изминить меру', 'update_item' => 'Обновить меру', 'add_new_item' => 'Добавить новую меру', 'new_item_name' => 'Название новоой меры', 'menu_name' => 'Меры', ], 'description' => 'все что косается мероприятии проводимые мечетью', // описание таксономии 'public' => true, 'publicly_queryable' => true, // равен аргументу public 'show_in_nav_menus' => true, // равен аргументу public 'show_ui' => true, // равен аргументу public 'show_in_menu' => true, // равен аргументу show_ui 'show_tagcloud' => true, // равен аргументу show_ui 'show_in_quick_edit' => true, // равен аргументу show_ui 'hierarchical' => true, 'rewrite' => array( 'with_fron' => true, 'pages' => true, ), //'query_var' => $taxonomy, // название параметра запроса 'capabilities' => array(), 'meta_box_cb' => true, // html метабокса. callback: `post_categories_meta_box` или `post_tags_meta_box`. false — метабокс отключен. 'show_admin_column' => true, // авто-создание колонки таксы в таблице ассоциированного типа записи. (с версии 3.5) 'show_in_rest' => true, // добавить в REST API 'rest_base' => null, // $taxonomy // '_builtin' => false, //'update_count_callback' => '_update_post_term_count', ] ); }
вот мой WP_Query запрос, он находится в файле taxonomy-action-offering.php
<?php $paged = (isset($_REQUEST['pages'])) ? $_REQUEST['pages'] : 1; $pagination_args = array( 'prev_text' => __( '«' ), 'next_text' => __( '»' ) ); $args = array( 'post_type' => 'affairs', 'action' => 'offering', 'posts_per_archive_page' => 9, 'paged'=>$paged ); $query = new WP_Query( $args ); ?> <?php if ( $query->have_posts() ) : ?> <!-- пагинация --> <!-- цикл --> <?php while ( $query->have_posts() ) : $query->the_post(); ?> <article class="article"> <h3 class="article-title"><a class="article-link" href="<?php the_permalink(); ?>"><?php the_title() ?></a></h3> <time><?php the_date('d/m/Y') ?></time> <p class="article-preview"> <?php echo kama_excerpt( array('maxchar'=>125) ); ?> <a class="more" href="<?php the_permalink(); ?>">Читать дальше...</a> </p> </article> <?php endwhile; ?> <!-- конец цикла --> <?php wp_reset_postdata(); the_posts_pagination($pagination_args); ?> <?php else : ?> <p><?php esc_html_e( 'Нет постов по вашим критериям.' ); ?></p> <?php endif; ?>
до этого мне удавалось выводить ссылки пагинации, но все они вели на 404-ую страницу, а теперь я докыварялся в коде что и их вывести не могу.
Для вывода записей этот код не нужен. Скопируйте для примера все что есть в archive.php, должно работать.
Все ваши записи уже находятся в глобальной переменной print_r($wp_query);
а так вы только делаете повторно запрос.