web-dev-qa-db-fra.com

Comment remplacer un appel de fonction dans functions.php?

Dans functions.php d’un thème fait un appel à show_admin_bar(false) qui masque la barre d’administration en face avant:

if (!is_admin())
{
    wp_deregister_style( 'bp-admin-bar' );
    if ( function_exists( 'show_admin_bar' ) )
    {
        show_admin_bar( false );
        remove_action( 'bp_init', 'bp_core_load_buddybar_css' );
    }
}

Je souhaite que la barre d'administration apparaisse devant les utilisateurs de admin. Pour ce faire, j'ai ajouté le code suivant à un plugin:

add_action('plugins_loaded', 'show_admin_bar_to_admins', 100);
function show_admin_bar_to_admins()
{
    if (current_user_can('manage_options')) {
        show_admin_bar(true);
    }
}

Mais cet appel n'a pas fait de différence. Je mets 100 en tant que valeur de priorité telle afin que cette fonction soit appelée plus tard que l'appel dans functions.php. Mais cela n'a pas fait de différence.

Existe-t-il un moyen de faire un appel de fonction dans un plug-in à exécuter plus tard que l'appel dans functions.php.

2
Mert Nuhoglu

Tout d'abord: ce thème fait tellement mal. Il ne faut pas simplement insérer des appels en clair dans les fichiers functions.php. Ceux-ci devraient être emballés et accrochés. Il vaut mieux utiliser after_setup_theme(). Vous pouvez d'ailleurs essayer le même crochet.

6
kaiser

Je pense que le meilleur moyen d’afficher ou de masquer la barre d’administration consiste à s’adapter au filtre show_admin_bar et à spécifier les conditions dont vous avez besoin dans la fonction de filtrage:

add_filter('show_admin_bar', 'ad_show_admin_bar');

function ad_show_admin_bar($show) {
    // show front-end admin bar for admins only
    if(current_user_can('manage_options')) {
        return true;
    } else {
        return false;
    }
}

Cela permettra d’ajouter les scripts et les styles nécessaires à la barre d’administration.

0
Ahmad M