@SkyMass

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

Добрый день всем. Прошу помочь с такой проблемой. Создал таксономию и кастомный тип постов. Не работает пагинация, при переходе на последующие страницы получаю 404

На сайте менялся движок и чтобы сделать структуру похожей пришлось много раз переписывать урл в настройках таксономии и типа поста. Вот как я регистрировал это всё добро

function register_shumoizolyatsiya_post_type() {

	// тип записи - вопросы - faq
	register_post_type('shumoizolyatsiya', array(
		'label'               => 'Проекты',
		'labels'              => array(
			'name'          => 'Проекты',
			'singular_name' => 'Проекты шумоизоляции',
			'menu_name'     => 'Наши работы',
			'all_items'     => 'Все проекты',
			'add_new'       => 'Добавить проект',
			'add_new_item'  => 'Добавить новый проект',
			'edit'          => 'Редактировать',
			'edit_item'     => 'Редактировать проект',
			'new_item'      => 'Новый проект',
		),
		'description'         => '',
		'public'              => true,
		'publicly_queryable'  => true,
		'show_ui'             => true,
		'show_in_rest'        => false,
		'rest_base'           => '',
		'show_in_menu'        => true,
		'exclude_from_search' => false,
		'capability_type'     => 'page',
		'map_meta_cap'        => true,
		'hierarchical'        => false,
		'rewrite'             => array( 'slug'=>'shumoizolyatsiya/%shumoizolyatsiyacat%', 'with_front'=>false, 'pages'=>false, 'feeds'=>false, 'feed'=>false ),
		'has_archive'         => 'shumoizolyatsiya',
		'query_var'           => true,
		'supports'            => array( 'title', 'editor' ),
		'taxonomies'          => array( 'shumoizolyatsiyacat' ),
	) );
} 

add_action( 'init', 'register_shumoizolyatsiya_post_type' );

function register_my_taxes_shumoizolyatsiya() {
	// Раздел вопроса - faqcat
	register_taxonomy('shumoizolyatsiyacat', array('shumoizolyatsiya'), array(
		'label'                 => 'Разделы', // определяется параметром $labels->name
		'labels'                => array(
			'name'              => 'Разделы шумоизоляции',
			'singular_name'     => 'Раздел шумоизоляции',
			'search_items'      => 'Искать Раздел шумоизоляции',
			'all_items'         => 'Все Разделы шумоизоляции',
			'parent_item'       => 'Родит. раздел шумоизоляции',
			'parent_item_colon' => 'Родит. раздел шумоизоляции:',
			'edit_item'         => 'Ред. Раздел шумоизоляции',
			'update_item'       => 'Обновить Раздел шумоизоляции',
			'add_new_item'      => 'Добавить Раздел шумоизоляции',
			'new_item_name'     => 'Новый Раздел шумоизоляции',
			'menu_name'         => 'Добавить раздел',
		),
		'description'           => 'Рубрики для раздела шумоизоляции', // описание таксономии
		'public'                => true,
		'show_in_nav_menus'     => false, // равен аргументу public
		'show_ui'               => true, // равен аргументу public
		'show_tagcloud'         => false, // равен аргументу show_ui
		'hierarchical'          => true,
		'rewrite'               => array('slug'=>'shumoizolyatsiyacat', 'hierarchical'=>false, 'with_front'=>false, 'feed'=>false ),
		'show_admin_column'     => true, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5)
	) );
}
add_action( 'init', 'register_my_taxes_shumoizolyatsiya' );
## Отфильтруем ЧПУ произвольного типа
// фильтр: apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample );
add_filter('post_type_link', 'shumoizolyatsiya_permalink', 1, 2);
function shumoizolyatsiya_permalink( $permalink, $post ){
	// выходим если это не наш тип записи: без холдера %products%
	if( strpos($permalink, '%shumoizolyatsiyacat%') === false )
		return $permalink;

	// Получаем элементы таксы
	$terms = get_the_terms($post, 'shumoizolyatsiyacat');
	// если есть элемент заменим холдер
	if( ! is_wp_error($terms) && !empty($terms) && is_object($terms[0]) )
		$term_slug = array_pop($terms)->slug;
	// элемента нет, а должен быть...
	else
		$term_slug = 'no-shumoizolyatsiyacat';

	return str_replace('%shumoizolyatsiyacat%', $term_slug, $permalink );
}


Вывод постов
<?php if ( have_posts() ) : ?>
			<?php

			while ( have_posts() ) :
				the_post();

				get_template_part( 'template-parts/content', 'shum' );

			endwhile;

		else :

		endif;
		?>
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
@SkyMass Автор вопроса
Нашлась причина. В постоянных ссылках нужно было выставить /%postname%/ а у меня стояло /%category%/%postname%/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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