Intereting Posts
Как защитить блог WordPress с помощью OpenID от одного поставщика? Получить параметр cat из admin-ajax WordPress AJAX Pagination с query_posts Как я могу получить трассировку вызовов функций? Невозможно вручную изменить постоянную ссылку сообщения в секции EDIT Как сделать изображение видеоролика YouTube отображаемым в виде миниатюры в списке сообщений в блоге Получить архив сообщений, разделенных таксономиями и субтаксонами Все страницы загружают главную страницу, если используются довольно постоянные ссылки что такое do_action (); в WordPress? Могу ли я использовать изображения в качестве якорных тегов с <? Php previous_post (); ?> <? php next_post (); ?> Удаление текста + короткий код из всех сообщений Страница архива для пользовательской таксономии, сгруппированной по месяцам Как предотвратить смешные символы на главной странице Как перенаправить конкретного пользователя после входа в систему? Бесконечный свиток для индекса, категории и архива

Запретить пользователю редактировать собственную информацию о профиле

В настоящее время я занимаюсь разработкой интрасети, и я использую плагин членов Justin Tadlock для управления ролями и возможностями.

Я создал роль HR чтобы сотрудники Human Resources могли создавать и редактировать учетные записи пользователей. Все сотрудники, созданные в WP, получают роль contributor с избранными немногими сотрудниками, которым предоставлены роли editor и administrator .

Я хочу, чтобы персонал не мог войти в систему и изменить свою собственную информацию о профиле. Только персонал роли HR должен иметь возможность редактировать информацию профиля.

Solutions Collecting From Web of "Запретить пользователю редактировать собственную информацию о профиле"

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

 // ===== remove edit profile link from admin bar and side menu and kill profile page if not an admin if( !current_user_can('activate_plugins') ) { function mytheme_admin_bar_render() { global $wp_admin_bar; $wp_admin_bar->remove_menu('edit-profile', 'user-actions'); } add_action( 'wp_before_admin_bar_render', 'mytheme_admin_bar_render' ); function stop_access_profile() { if(IS_PROFILE_PAGE === true) { wp_die( 'Please contact your administrator to have your profile information changed.' ); } remove_menu_page( 'profile.php' ); remove_submenu_page( 'users.php', 'profile.php' ); } add_action( 'admin_init', 'stop_access_profile' ); } 

Проработал это с небольшим количеством времени. Вот код, который я использую:

 <?php /* Plugin Name: Restrict User Editing Own Profile Plugin URI: http://www.philosophydesign.com Description: Restricts users from editing their own profile information. Author: Scott Cariss Version: 0.1 Author URI: http://www.philosophydesign.com/scott-cariss.html */ add_action( 'admin_menu', 'stop_access_profile' ); function stop_access_profile() { remove_menu_page( 'profile.php' ); remove_submenu_page( 'users.php', 'profile.php' ); if(IS_PROFILE_PAGE === true) { wp_die( 'You are not permitted to change your own profile information. Please contact a member of HR to have your profile information changed.' ); } } ?> 

Приведенный выше код не позволяет кому-либо редактировать свою собственную информацию о профиле, несмотря на то, кто они. Люди, у которых есть возможность создавать и редактировать использование, все еще могут сделать это, но не могут изменить свои собственные.

Решение как плагин (MU-)

Я проверил все предоставленные решения и подумал, что могу сделать из него хороший MU-Plugin. Единственное реальное изменение заключается в том, что он избегает

 <?php ! defined( 'ABSPATH' ) AND exit; /** * Plugin Name: Disable profile page link * Description: Remove edit profile link from admin bar and side menu and kill profile page if user isn't an administrator. */ # Version: 2012-09-15.2245 function oxo_stop_access_profile() { // Remove AdminBar Link if ( 'wp_before_admin_bar_render' === current_filter() AND ! current_user_can( 'manage_options' ) ) return $GLOBALS['wp_admin_bar']->remove_menu( 'edit-profile', 'user-actions' ); // Remove (sub)menu items remove_menu_page( 'profile.php' ); remove_submenu_page( 'users.php', 'profile.php' ); // Deny access to the profile page and redirect upon try if ( defined( 'IS_PROFILE_PAGE' ) AND IS_PROFILE_PAGE AND ! current_user_can( 'manage_options' ) ) { wp_redirect( admin_url() ); exit; } } add_action( 'wp_before_admin_bar_render', 'oxo_stop_access_profile' ); add_action( 'admin_menu', 'oxo_stop_access_profile' ); 

Все приведенные выше решения используют константу: IS_PROFILE_PAGE

 if(IS_PROFILE_PAGE === true) { 

Но если для параметра wordpress debug установлено значение true, он будет вызывать ошибку «неопределенной константы». Исправить это :

 if(defined('IS_PROFILE_PAGE') && IS_PROFILE_PAGE === true){ ........................ }