Возвращаем код ошибки 404

Допустим мы хотим ограничить доступ к некоторой странице и, если пользователь не администратор, то вернуть ему код ошибки 404 (страница не найдена).

Скопировано
if( ! is_user_logged_in() || ! current_user_can( 'administrator' ) ) {
	global $wp_query;
	$wp_query->set_404();
	status_header( 404 );
	get_template_part( 404 );
	exit();
}
Показать код

Этот код надо вставлять в один из ранних хуков, например, в template_redirect.

Пример как скрыть одну рубрику от неавторизованных пользователей:

Скопировано
add_action( 'template_redirect', function {
	// ID рубрики которую нужно скрыть
	$hidden_category_id = 555;
    
    // Проверяем, что это страница рубрики и пользователь не авторизован
    if( is_category( $hidden_category_id ) && ! is_user_logged_in() ) {
		global $wp_query;
		$wp_query->set_404();
		status_header( 404 );
		get_template_part( 404 );
		exit();
	}
});
Показать код

В этом примере надо указать верный ID рубрики, которую надо скрыть.