Как отключить страницы постов (single-тип.php) определённого типа?

Типы записей — это такой мега-удобный, а благодаря произвольным полям, ещё и расширяемый функционал в WordPress, и именно поэтому его используют довольно много для каких целей, а не только для создания товаров в интернет-магазинах.

В этой статье я подробно рассмотрю ситуацию, когда при создании постов какого-то типа нам не нужно, чтобы на сайте для них создавалась страница. В качестве примера возьму иногда встречающуюся, не совсем удачную реализацию слайдера — это когда для слайдов регистрируется отдельный тип поста, в результате чего у каждого слайда появляется своя страница на сайте. А как вы знаете, если WordPress не находит файла single-тип_поста.php, то он использует файл записей single.php.

Обычно о таких вещах владельцы сайтов и не подозревают до тех пор, пока не обнаруживают свои слайды отдельными страницами в результатах поиска Google. Обратившись к сеошникам, они получают ответ — проставить 301 редирект с этих страниц например на главную.

add_action( 'template_redirect', 'true_slider_301' );
 
function true_slider_301() {
 
	if ( is_singular('slide') ) { // проверка того, что находимся на странице типа slide (я обозвал так для примера)
		wp_redirect( home_url(), 301 ); // редиректим
		exit;
	}
 
}

А на самом то деле, всё, что было нужно сделать — это указать при регистрации типа поста параметр publicly_queryable равным false. Тогда даже пропадут кнопки «Просмотреть» и «Просмотреть изменения» из админки WordPress.

При установке publicly_queryable false кнопки просмотра исчезнут для данного типа поста
$args = array(
	...
	'publicly_queryable' => false,
 
	...
);
register_post_type( 'slide', $args );

Это может быть полезно также например тогда, когда все работы из портфолио у вас выводятся на одной странице и вы не хотите, чтобы каждая из работ была доступна отдельно.

Миша Рудрастых Разработчик WordPress WooCommerce

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.

По теме: