Flector

Как скрыть в админке сайта определенные страницы?

Иногда требуется скрыть некоторые страницы в админке сайта (например, чтобы другие админы не редактировали какие-нибудь служебные страницы). Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

//скрытие страниц от редактирования в админке start
function wph_hide_page_admin($query) {
	if (!is_admin()) return $query;
	global $pagenow;
	if('edit.php' == $pagenow && (get_query_var('post_type') 
        && 'page' == get_query_var('post_type')))
            $query->set('post__not_in', array(2,8,9) ); // id страниц
	return $query;
}
add_action('pre_get_posts' ,'wph_hide_page_admin');
//скрытие страниц от редактирования в админке end

Этот сниппет скроет страницы только в админке сайта. Для скрытия ссылки "Редактировать" в верхней панели надо использовать следующий код:

//скрытие ссылки редактирования в верхней панели start
function wph_hide_page_bar($wp_admin_bar) {
    if (is_page(array(2,8,9))) {  // id страниц
        $wp_admin_bar->remove_node('edit');
    }
}
add_action('admin_bar_menu', 'wph_hide_page_bar', 999);
//скрытие ссылки редактирования в верхней панели end

Однако, помните, что по прямой ссылке ('/wp-admin/post.php?post=8&action=edit') страницы все равно будут доступны для редактирования, так как скрываются только ссылки на редактирование страниц, но не сами страницы.

При желании данные сниппеты легко изменяются для скрытия обычных записей или записей произвольного типа ('page' меняется на 'post', а 'is_page' на 'is_single').


Комментарии (1 комментарий)
  1. Денис:

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

Написать комментарий

Для вставки кода воспользуйтесь кнопкой "Код". Используйте предпросмотр!