Intereting Posts
Есть ли WordPress, эквивалентный шаблонам MediaWiki Расширение локализации wordpress замените регистрационные формы wp-login.php с помощью пользовательских форм hook и используйте собственные формы с подтверждением формы wp-login Как отправить запрос обновления (Pull) на плагины WordPress? Кто-нибудь использовал require.js для обработки сценариев плагина? Как сделать короткий код для моей WP_Query Loop? BBPress Результаты поиска в WordPress search Как я могу динамически генерировать args для wp_query? Что я могу сделать, когда внешняя сторона взламывает мой блог и изменяет мое отображаемое имя? W3 Total Cache, облачные файлы RackSpace и принудительные загрузки Выпадающее меню с несколькими уровнями Как удалить апостроф фильтра и одинарную цитату Показать URL-адрес с несколькими URL-адресами одного показанного изображения / миниатюры? Пользовательские почтовые метатеги Пользовательское поле из xml

Роли для пользовательских типов сообщений

Я создал некоторые пользовательские типы сообщений, но я хотел бы скрыть их в панели управления от подписчиков, авторов и редакторов (по сути, просто разрешить администраторам обращаться к ним).

Могу ли я сделать это без установки плагина?

Solutions Collecting From Web of "Роли для пользовательских типов сообщений"

Я уверен, что вы могли бы указать некоторые возможности при регистрации самого типа сообщения. Хотя, вот более надежная версия, которую можно широко использовать на панели управления.

/** * Hide dashboard administrator menus from disallowed user roles. * * @author Michael Ecklund * @access public * * @return void */ public function hide_menus(){ global $current_user, $menu; /* Set list of disallowed user roles. */ $disallowed_roles = array('subscriber', 'author', 'editor'); $disallowed = false; /* Check current user role against all disallowed roles. */ foreach($disallowed_roles as $disallowed_role){ /* Current user role must not be disallowed. */ if(in_array($disallowed_role, $current_user->roles)){ $disallowed = true;// User role disallowed. break; } } /* User passed the check. Bail before hiding the menu. */ if($disallowed === false){ return; } /* Set list of disallowed dashboard administration menus. */ $restricted = array( __('INSERT MENU NAME HERE')// Text as it appears in the admin menu. ); /* Attempt to hide admin menus. */ foreach($menu as $index => $menu_data){ if(in_array($menu_data[0], $restricted)){ unset($menu[$index]); } } } 

Чтобы запустить функцию, вы должны добавить действие.

 add_action('admin_menu', array($this, 'hide_menus'), 101); 

Вышеприведенный код касается только того, что скрывает отображение формы меню администратора пользователю. Они могут по-прежнему напрямую обращаться к страницам, если они знают правильные URL-адреса.

Вы можете использовать это, чтобы запретить доступ к определенным страницам администрирования непривилегированным пользователям.

 /** * Restrict admin pages from unprivileged users. * * @author Michael Ecklund * @access public * * @return void */ public function mbe_disallow_admin_pages(){ global $pagenow; /* Skip checking administrative users. */ if(current_user_can('administrator')){ return; } /* Set denyable & hookable list of admin pages.*/ $page_slugs = apply_filters('mbe_disallowed_admin_pages', array( 'admin.php' => 'jetpack', 'options-general.php' => '' )); /* Page parameter isn't always present. */ if(isset($_GET['page'])){ $page = $_GET['page']; } else{ $page = ''; } /* Check current admin page against denied admin page list. */ if(array_key_exists($pagenow, $page_slugs) && in_array($page, $page_slugs)){ wp_die('You do not have sufficient permissions to access this page.'); } } add_action('admin_init', array($this, 'mbe_disallow_admin_pages'));