Как скрыть записи или страницы из админки WordPress

Иногда бывает полезно скрывать «пустые» функциональные страницы на основе шаблона от глаз клиентов, например страница корзины в интернет-магазине.

Реализовать это довольно легко – вставкой нескольких строк кода в functions.php текущей темы.

Вот общее решение, работает для записей, страниц и любых произвольных типов постов, не забудьте указать через запятую ID постов\страниц, которые нужно скрыть.

function true_hide_posts_from_admin( $query ) {
	global $pagenow;
	if( is_admin() && 'edit.php' == $pagenow ){
		$query->set( 'post__not_in', array(9,54) ); 
		// через запятую указываем ID постов или страниц, которые хотим скрыть
	}
	return $query;
}
 
add_action( 'pre_get_posts' ,'true_hide_posts_from_admin' );

Если хотите, чтобы функция применялась например только для страниц, модифицируем её следующим образом:

function true_hide_pages_from_admin( $query ) {
	global $pagenow;
	if( is_admin() && 'edit.php' == $pagenow && 'page' == get_query_var('post_type') ){
		// в качестве 'page' в условии можно указать любой произвольный тип постов
		$query->set( 'post__not_in', array(300,271) ); 
		// через запятую прописываем ID страниц, которые хотим скрыть
	}
	return $query;
}
 
add_action( 'pre_get_posts' ,'true_hide_pages_from_admin' );

Доступ к скрытым постам по-прежнему можно получить по прямым ссылкам.

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

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

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

Смотрите также