Снова ищем одного-двух вордпрессеров в нашу команду!

Как отключить страницы постов (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 в 2009 году. С 2014 года меня можно встретить на WordCamp по всему миру — официальной конфе по WordPress, иногда там выступаю, но с 2019 выступаю только на тех, которые сам организовываю. Также периодически школа Epic Skills и LoftSchool приглашают меня вести у них уроки/вебинары.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля — пишите мне.

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, в случае несоблюдения этого условия в 99% случаях ваш коммент будет удалён, а автор заблокирован. Печалька.