WordPress как на ладони

Свой тип записи

Дорабатываю сайт, делаю новый раздел, как обычно создаю новый тип записи

add_action('init', 'init_post_type');
function init_post_type() {
register_post_type('experts', array(
			'public'    => true,
			'supports'  => array('title', 'excerpt', 'thumbnail'),
			'labels'    => array(
					'name'      =>  'Эксперты',
					'all_items' =>  'Все',
					'add_new'   =>  'Добавить нового'
			)
	));
}

Вывожу записи

<?php $experts = new WP_Query(array('post_type' => 'experts', 'posts_per_page' => -1, 'order' => 'ASC')); ?>
<?php while ($experts->have_posts()) : $experts->the_post(); ?> 
 <div class="personal">
 <?php the_post_thumbnail('experts'); ?>
 <div class="name"><?php the_title(); ?></div>
 <div class="profession"><?php the_excerpt(); ?></div>
 <div class="wrap-btn"><a href="<?php the_permalink(); ?>" class="btn">Получить <br /> консультацию</a></div>
 </div>
<?php endwhile;?>

потом задаю шаблон для отображения записи

add_filter( 'template_include', 'include_template_function', 1 );
function include_template_function( $template_path ) {
	if ( get_post_type() == 'experts' ) {
		if ( is_single() ) {
			if ( $theme_file = locate_template( array ( 'experts_single.php' ) ) ) {
				$template_path = $theme_file;
			} else {
				$template_path = plugin_dir_path( __FILE__ ) . '/experts_single.php';
			}
		}
	}
}

когда перехожу по ссылке записи, то кидает на главную страницу.
Попробовал посмотреть глобальную переменную global $post; она пустая
не могу понять в чем проблема.

Заметки к вопросу:
FensterTeam 8.3 года назад

Забыли return $template_path;

-1
Гость
8.5 лет назад
  • 0

    Создайте single-experts.php в теме. Подобное работает даже без подключение темплейта, согласно иерархии

    Комментировать
  • 0

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

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