WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Как правильно реализовать постраничную пагинацию для произвольных типов записей?

не выводится пагинация.

Есть произвольный тип записи "Мероприятие" к нему таксономия (древовидного типа) "меры" и две категории "Благотворительность" и "Прочее".

вот скрин

вот код регистрации произвольного типа записи "Мероприятие":

// хук для регистрации произвольного поста
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-ую страницу, а теперь я докыварялся в коде что и их вывести не могу.

0
id423516810
4.1 год назад
  • 0
    qwert555154 naytikurs.ru

    вот мой WP_Query запрос, он находится в файле taxonomy-action-offering.php

    Для вывода записей этот код не нужен. Скопируйте для примера все что есть в archive.php, должно работать.

    Все ваши записи уже находятся в глобальной переменной print_r($wp_query);
    а так вы только делаете повторно запрос.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация