Как скрыть в админке сайта определенные страницы?
Иногда требуется скрыть некоторые страницы в админке сайта (например, чтобы другие админы не редактировали какие-нибудь служебные страницы). Для этого вам необходимо добавить в файл 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').
Подскажите как скрыть в админке записи от всех кроме админа (в основном нужно от редакторов) определенной рубрики?