Cum să dezactivezi bara de administrare pentru abonați în WordPress

12 sept. 2018, 16:17:51
Vizualizări: 16.7K
Voturi: 5

Am un site de membrii și trebuie să dezactivez bara de administrare pentru abonați.

Am folosit următorul cod:

add_action('after_setup_theme', 'remove_admin_bar');

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

care elimină bara de administrare din partea publică pentru abonați, dar când aceștia accesează pagina de profil wp-admin/profile.php, bara de administrare încă este vizibilă acolo.

Folosesc pluginul Paid Membership Pro care cred că face ca codul să nu funcționeze în zona de administrare pentru abonați.

De asemenea, am încercat acest cod pentru a elimina complet bara de administrare:

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');

Dar nici acest cod nu funcționează.

Vreau doar să elimin bara de administrare pentru abonați atât din partea publică cât și din zona de administrare.

Există vreun cod specific care îmi scapă? Folosesc Paid Membership Pro.

Vă mulțumesc pentru ajutor.

2
Comentarii

Acest răspuns îți rezolvă întrebarea? Eliminarea barei superioare de administrare

T.Todua T.Todua
14 mai 2020 23:32:43
Toate răspunsurile la întrebare 7
0

Pentru a ascunde bara de administrare de la utilizatorii ne-administratori, adăugați următorul cod în fișierul functions.php

// afișează bara de administrare doar pentru administratori
if (!current_user_can('manage_options')) {
    add_filter('show_admin_bar', '__return_false');
}
// afișează bara de administrare doar pentru administratori și editori
if (!current_user_can('edit_posts')) {
    add_filter('show_admin_bar', '__return_false');
}
22 iul. 2019 16:26:20
0

A trebuit să fac același lucru, dar să păstrez bara de administrare pentru editori și administratori, eliminând-o pentru alte roluri. Am procedat astfel:

în 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;
}

tot în functions.php

// afișează bara de administrare doar pentru administratori și editori
if (!check_user_role(array('administrator','editor'))) {
  add_filter('show_admin_bar', '__return_false');
}
19 feb. 2020 19:26:12
0

Echipa PMPro a creat un plugin pentru a face acest lucru: https://wordpress.org/plugins/hide-admin-bar-from-non-admins/

Acesta include codul PHP și CSS necesar pentru a ascunde complet bara de administrare: 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);
22 nov. 2018 02:16:17
0

show_admin_bar(false) nu funcționează pe paginile din backend. Va trebui să eliminați hook-urile pentru bara de administrare dacă doriți să le eliminați din backend.

function remove_admin_bar_hooks() {
    
    // Elimină hook-urile care afișează bara de administrare.
    remove_action('template_redirect','_wp_admin_bar_init', 0);
    remove_action('admin_init','_wp_admin_bar_init');
    remove_action('before_signup_header','_wp_admin_bar_init');
    remove_action('activate_header','_wp_admin_bar_init');
    remove_action('wp_body_open','wp_admin_bar_render',0);
    remove_action('wp_footer','wp_admin_bar_render',1000);
    remove_action('in_admin_header', 'wp_admin_bar_render', 0);
    
    // Elimină clasa admin-bar din tag-ul body.
    add_filter('body_class',function($wp_classes, $extra_classes) {
        // Șterge clasa admin-bar din array-uri dacă este prezentă.
        return array_diff( 
            array_merge( $wp_classes, (array) $extra_classes ), 
            array('admin-bar')
        );
    },10000,2);
}

Puteți consulta acest articol pentru mai multe informații: https://blog.terresquall.com/2021/09/remove-the-admin-bar-on-the-wordpress-admin-backend/

26 sept. 2021 18:35:52
0
// Dezactivează bara de administrare pentru toate rolurile, cu excepția administratorilor:
add_action('after_setup_theme', 'remove_admin_bar');

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

}

10 ian. 2022 06:17:05
0

Puteți utiliza plugin-ul "AdminBar Editor" pentru a edita elementele din bara de administrare: https://wordpress.org/plugins/admin-bar/ sau puteți utiliza codul de mai jos pentru a ascunde bara de administrare pentru abonați.

function wpse_hide_admin_bar(){
    if( current_user_can( 'subscriber' ) ) {
        show_admin_bar(false);
    }
}
28 apr. 2024 15:12:32
4
-3

Am făcut o scurtă cercetare pe această temă și cred că nu poți să faci asta cu o funcție, așa cum este menționat în codex.

Notă: Nu mai este posibil să ascunzi Bara de unelte când vizualizezi Ecranele de Administrare, dar utilizatorii o pot dezactiva în partea frontală a site-ului din ecranul lor de Profil.

Dezactivarea în partea frontală are același efect ca ceea ce ai făcut deja.

Aș sugera să o ascunzi cu css.

#wpadminbar {
    display: none;
}
html {
    padding-top: 0; // Mută conținutul paginii în sus cu înălțimea barei
}
12 sept. 2018 17:01:43
Comentarii

Am reușit să fac asta cu CSS și am făcut-o permanentă prin adăugarea fișierului CSS în Child Theme.

Jitendra Mishra Jitendra Mishra
12 sept. 2018 20:00:49

Bara de administrare încă există cu această 'soluție', doar că nu este vizibilă. De asemenea, este încărcată, afectând performanța. Dacă aveți utilizatori cu puține cunoștințe despre instrumentele de dezvoltare web din browser, bara de administrare revine.

bueltge bueltge
22 iul. 2019 16:45:31

Da @bueltge, dar care este o soluție mai bună?

Rik Lewis Rik Lewis
24 feb. 2020 01:38:51