Поеми контрол върху потребителските роли в WordPress

Публикувано на 23.05.2017
Поеми контрол върху потребителските роли в WordPress

Въведение

Днешните функции могат да ни бъдат изключително полезни, когато искаме да контролираме достъпа на потребителите до определени части от WordPress администрацията.

Например — когато трябва да дадем на клиент достъп до админ панела, но без възможност да редактира плъгини или теми.

💡 Съвет: Пазете администраторските права само за себе си!
В повечето случаи на потребителите не им е необходим пълен контрол.


Скриване на страници от админ менюто

Да приемем, че даден потребител (или група потребители) не трябва да вижда секцията "Разширения (Plugins)".
Следният код ще я премахне от менюто в админ панела:

function remove_menu_pages() {
    $user = wp_get_current_user();
    if ($user->nickname == 'pe6o') {
        remove_menu_page('plugins.php');
    }
}
add_action('admin_menu', 'remove_menu_pages', 101);

➡️ Ако логнатият потребител е pe6o, разделът “Плъгини” ще изчезне от менюто.


Забрана за редакция на файлове

Следният ред в wp_config.php ще забрани възможността за редактиране на теми и плъгини директно от панела:

define('DISALLOW_FILE_EDIT', true);

Така значително намалявате риска някой да повреди нещо по невнимание.


Премахване на подменю страници

Ако искате да премахнете само второстепенна страница, например “Менюта” от секцията “Външен вид”, използвайте:

remove_submenu_page('themes.php', 'nav-menus.php');

Това ще скрие подменюто “Менюта (Menus)” за всички потребители.


Премахване на мета боксове от таблото

Може да персонализирате таблото (Dashboard), като скриете ненужните мета боксове.
Примерно, ако не искате да виждате новините от WordPress, добавете следното:

function cw_remove_dashboard_element() {
    remove_meta_box('dashboard_primary', 'dashboard', 'side');
    // remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal');
    // remove_meta_box('dashboard_plugins', 'dashboard', 'normal');
    // remove_meta_box('dashboard_secondary', 'dashboard', 'normal');
    // remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
    // remove_meta_box('dashboard_recent_drafts', 'dashboard', 'side');
    // remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
    // remove_meta_box('dashboard_right_now', 'dashboard', 'normal');
    // remove_meta_box('dashboard_activity', 'dashboard', 'normal'); //since 3.8
}
add_action('admin_init', 'cw_remove_dashboard_element');

Оставените в коментар редове показват другите възможни елементи, които можете да скриете.


Лично мнение

Лично аз предпочитам да разработвам тези примери като плъгини, за да са изолирани от темата и по-лесни за прехвърляне.
Разбира се, може да ги поставите и в functions.php, ако предпочитате.

Ако откриете грешки или просто имате въпроси — пишете през контактната форма. 🙂