Rimuovi la barra di amministrazione per gli iscritti - Soluzioni WordPress

12 set 2018, 16:17:51
Visualizzazioni: 16.7K
Voti: 5

Ho un sito a pagamento. Devo disabilitare la barra di amministrazione per gli iscritti.

Ho utilizzato questo codice:

add_action('after_setup_theme', 'remove_admin_bar');

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

che rimuove la barra di amministrazione dal frontend per gli iscritti, ma quando accedono alla loro pagina del profilo wp-admin/profile.php, la barra amministrativa è ancora visibile.

Sto utilizzando il plugin Paid Membership Pro che penso abbia fatto in modo che il codice non funzionasse nel backend per gli iscritti.

Ho anche provato con questo codice per rimuovere la barra di amministrazione ovunque:

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

Ma anche questo codice non funziona.

Voglio solo rimuovere la barra di amministrazione per gli iscritti sia dalle pagine frontend che backend.

Manca qualche codice specifico? Sto usando Paid Membership Pro.

Grazie per l'aiuto.

2
Commenti

Questa risposta risolve il tuo problema? Rimuovi la barra di amministrazione superiore

T.Todua T.Todua
14 mag 2020 23:32:43
Tutte le risposte alla domanda 7
0

Per nascondere la barra di amministrazione agli utenti non amministratori, aggiungi il seguente codice al tuo file functions.php

// mostra la barra di amministrazione solo per gli amministratori
if (!current_user_can('manage_options')) {
    add_filter('show_admin_bar', '__return_false');
}
// mostra la barra di amministrazione solo per amministratori e editor
if (!current_user_can('edit_posts')) {
    add_filter('show_admin_bar', '__return_false');
}
22 lug 2019 16:26:20
0

Ho dovuto fare la stessa cosa ma mantenere la barra per gli editor e gli amministratori rimuovendola per gli altri ruoli. L'ho fatto in questo modo:

in 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;
}

sempre in functions.php

// mostra la barra di amministrazione solo per amministratori e editor
if (!check_user_role(array('administrator','editor'))) {
  add_filter('show_admin_bar', '__return_false');
}
19 feb 2020 19:26:12
0

Il team di PMPro ha creato un plugin per fare questo: https://wordpress.org/plugins/hide-admin-bar-from-non-admins/

Include il codice PHP e CSS necessario per nascondere completamente la barra di amministrazione: 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) non funziona nelle pagine di backend. Dovrai rimuovere gli hook della barra di amministrazione se vuoi rimuoverla dal backend.

function remove_admin_bar_hooks() {
    
    // Rimuove gli hook che renderizzano la barra di amministrazione.
    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);
    
    // Rimuove la classe admin-bar dal tag body.
    add_filter('body_class',function($wp_classes, $extra_classes) {
        // Elimina la classe admin-bar dagli array se presente.
        return array_diff( 
            array_merge( $wp_classes, (array) $extra_classes ), 
            array('admin-bar')
        );
    },10000,2);
}

Puoi fare riferimento a questo articolo per maggiori informazioni: https://blog.terresquall.com/2021/09/remove-the-admin-bar-on-the-wordpress-admin-backend/

26 set 2021 18:35:52
0
// Disabilita la topbar di amministrazione per tutti i ruoli tranne gli amministratori:
add_action('after_setup_theme', 'remove_admin_bar');

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

}

10 gen 2022 06:17:05
0

Puoi utilizzare il plugin "AdminBar Editor" per modificare gli elementi della barra di amministrazione: https://wordpress.org/plugins/admin-bar/ oppure, usa il codice seguente per nascondere la barra di amministrazione per gli utenti con ruolo Subscriber.

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

Ho fatto una rapida ricerca su questo argomento e non credo sia possibile farlo con una funzione, come detto nel codex.

Nota: Non è più possibile nascondere la Barra degli strumenti quando si visualizzano le Schermate di Amministrazione, ma gli utenti possono disabilitarla sul front-end del sito nella schermata del loro Profilo.

Disabilitarla nel frontend equivale a quello che hai già fatto.

Suggerirei di nasconderla con il css.

#wpadminbar {
    display: none;
}
html {
    padding-top: 0; // Sposta verso l'alto il contenuto della pagina in base all'altezza della barra
}
12 set 2018 17:01:43
Commenti

Riuscito a farlo con CSS e reso permanente aggiungendo il file CSS nel Child Theme.

Jitendra Mishra Jitendra Mishra
12 set 2018 20:00:49

La barra di amministrazione esiste ancora con questa "soluzione", solo che non è visibile. Inoltre viene caricata, con impatto sulle prestazioni. Se hai utenti con un minimo di conoscenza degli strumenti di sviluppo web nel browser, la barra di amministrazione torna visibile.

bueltge bueltge
22 lug 2019 16:45:31

Sì @bueltge, ma qual è una soluzione migliore?

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