@AndersDir

Почему tag.php не видит записи по тегу?

Всем примет!

Дело такое, у меня есть кастомные посты для блога. У них включена поддержка тегов.Все стандартными методами, без плагинов.

Я решил реализовать архивы для тегов, чтобы человек тыкал на тег в посте и ему выдавалась страница с постами по этому тегу.

Создал файл tag.php и прописал там стандартную петлю. Я захожу в блог, тыкаю на любой тег в посте, происходит переход на страницу шаблона tag.php, все верно, но петля говорит, что постов нету.
Заголовок самого тега при этом выдает верный. Я в ступоре.

Постоянные ссылки обновлял, да.

Петля стандартного вида:
<?php 
if (have_posts()) {
	while (have_posts()) {
		the_post();
		the_title();
	}
} else {
	echo "Ничего нету, говорят";
} ?>


В functions.php тоже все стандартно:
register_post_type( 'blog',
        array(
            'public' => true,
            'supports' => array( 'title','editor', 'thumbnail', 'excerpt' ),
            'taxonomies' => array( 'post_tag' ),
            'has_archive' => true,
        )
    );
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Потому что основной $query по умолчанию грузит только записи типа post_type='post'. Чтобы добавить к ним ваши post_type='blog' (или вообще использовать их вместо стандартных постов), необходимо захукаться в pre_get_posts и модифицировать основной запрос:
function my_pre_tag_query( $query ) {

	if ( $query->is_admin || ! $query->is_main_query() ) {
		return;
	}

	if ( $query->is_tag() ) {
		$query->set( 'post_type', array( 'post', 'blog' ) );
	}

}
add_action( 'pre_get_posts', 'my_pre_tag_query' );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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