d9d9_Sun
@d9d9_Sun
делаю сайты.

Как заставить работать single template для иерархической кастомной таксономии?

Здравствуйте!
Создал таксономию, создал кастомный тип поста. Связал это всё.
Собрал весь путь для древовидных таксономий. URL в админке по итогу формируется правильный.

spoiler
add_filter('post_type_link', 'katalog_permalink', 10, 2);
	function katalog_permalink( $permalink, $post ){

		// выходим если это не наш тип записи
		if( strpos($permalink, '%katalogcat%') === false )
			return $permalink;

		// Получаем элементы таксы
		$terms = get_the_terms($post, 'katalogcat');
		// если есть элемент заменим холдер
		if( ! is_wp_error($terms) && !empty($terms) ) {
			$term_id = $terms[0]->term_id;
			$term_slug =  get_term_parents_list( $term_id, 'katalogcat', array(
				'separator' => '/',
				'format'    => 'slug',
				'link'      => false,
				'inclusive' => true,
			) ); 
		$term_slug = substr($term_slug, 0, -1);
		}

		// элемента нет, а должен быть...
		else
			$term_slug = 'no-category';

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


По итогу категории и подкатегории открываются нормально: site/katalog/category/subcategory/.
При создании поста ссылка отображается правильно site/katalog/category/subcategory/post-link.

Но отдаёт код 404.

Я даже назначил конкретный шаблон для этих постов:

spoiler
function wp_kama_template_include_filter( $template ) {
	$terms = get_the_terms($post, 'katalogcat');
	$term_id = $terms[0]->term_id;
	$parent_page_id = $term_id;
	$post = get_queried_object();

	if( is_page( $parent_page_id ) || $parent_page_id === $post->post_parent ){
		return get_theme_file_path( '/single-katalog.php' );
	}

	return $template;
}


Ссылка правильная, конкретно этот шаблон подгружается. Но сама запись отдаёт код 404 и сам контент записи в шаблоне страницы соответственно не отображается.

Куда копать дальше?
  • Вопрос задан
  • 32 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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