Удалить панель администратора для подписчиков


У меня есть сайт для подписчиков. Мне нужно отключить панель администратора для подписчиков.

Я использовал этот код ниже:

add_action('after_setup_theme', 'remove_admin_bar');

function remove_admin_bar() {
if (!current_user_can('administrator') && !is_admin()) {
  show_admin_bar(false);
}
}

, который удаляет панель администратора с внешнего интерфейса для подписчика, но когда они переходят на страницу своего профиля wp-admin/profile.php, панель администратора все еще отображается там.

Я использую плагин Paid Membership Pro, который, как я думаю, сделал код не работающим на бэкэнде для подписчиков.

Кроме того, я использовал этот код для удалите панель администратора отовсюду:

if (!function_exists('disableAdminBar')) {

    function disableAdminBar(){

    remove_action( 'admin_footer', 'wp_admin_bar_render', 1000 );

    function remove_admin_bar_style_backend() {
      echo '<style>body.admin-bar #wpcontent, body.admin-bar #adminmenu { padding-top: 0px !important; }</style>';
    }

    add_filter('admin_head','remove_admin_bar_style_backend');

  }

}

add_filter('admin_head','remove_admin_bar_style_backend');

Но этот код также не работает.

Я просто хочу удалить панель администратора для подписчиков как с интерфейсной, так и с внутренней страниц.

Есть ли какой-то конкретный код, которого мне не хватает? Я использую Платное членство Pro.

Спасибо вам за помощь.

Author: Pim, 2018-09-12

4 answers

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

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

Отключение во внешнем интерфейсе приводит к тому же, что вы уже сделали.

Я бы предложил скрыть это с помощью css.

#wpadminbar {
    display: none;
}
html {
    padding-top: 0; // Move up the page's content by the bar's height
}
 -2
Author: Gonçalo Figueiredo, 2018-09-12 14:01:43

Чтобы скрыть панель администратора от пользователей, не являющихся администраторами, добавьте следующий код functions.php файл

// show admin bar only for admins
if (!current_user_can('manage_options')) {
    add_filter('show_admin_bar', '__return_false');
}
// show admin bar only for admins and editors
if (!current_user_can('edit_posts')) {
    add_filter('show_admin_bar', '__return_false');
}
 2
Author: Deepak Rana, 2019-07-22 13:26:20

Команда PMPro создала плагин для этого: https://wordpress.org/plugins/hide-admin-bar-from-non-admins/

Включает код PHP и CSS, необходимый для полного скрытия панели администратора: https://plugins.svn.wordpress.org/hide-admin-bar-from-non-admins/trunk/hide-admin-bar-from-non-admins.php

function habfna_hide_admin_bar_settings()
{
?>
    <style type="text/css">
        .show-admin-bar {
            display: none;
        }
    </style>
<?php
}
function habfna_disable_admin_bar()
{
    if(!current_user_can('administrator'))
    {
        add_filter( 'show_admin_bar', '__return_false' );
        add_action( 'admin_print_scripts-profile.php', 'habfna_hide_admin_bar_settings' );
    }
}
add_action('init', 'habfna_disable_admin_bar', 9);
 1
Author: Jason Coleman, 2018-11-22 00:16:17

Мне пришлось сделать то же самое, но сохранить планку для редакторов и администраторов, но удалить для других ролей. Я сделал это так:

в functions.php

function check_user_role($roles, $user_id = null) {
    if ($user_id) $user = get_userdata($user_id);
    else $user = wp_get_current_user();
    if (empty($user)) return false;

    foreach ($user->roles as $role) {
        if (in_array($role, $roles)) {
            return true;
        }
    }
    return false;
}

также в functions.php

// show admin bar only for admins and editors
if (!check_user_role(array('administrator','editor'))) {
  add_filter('show_admin_bar', '__return_false');
}
 0
Author: mica, 2020-02-19 17:26:12