web-dev-qa-db-fra.com

unregister_sidebar () dans le thème autonome ne fonctionne pas

Avec cette Q & R de StackOverflow , je ne parviens pas à utiliser la fonction unregister_sidebar().

Scénario

J'ai développé un thème en utilisant une zone de barre latérale, où j'ai utilisé un widget. Mais je ne veux pas que l '"éditeur" ait accès à cette zone widgetisée dans la zone d'administration. Donc, je veux faire un Tweak dans le functions.php de mon thème, où j'ai précédemment déclaré register_sidebar() quelque part pour enregistrer la barre latérale.

J'ai compris que définir une priorité moins déclencherait la fonction d'annulation d'enregistrement plus tôt, alors j'ai essayé avec:

function site_unregister_sidebar() {

    if ( is_admin() && current_user_can('editor') ) {
        unregister_sidebar( 'my_custom_widget_area' );
    }
}

add_action('widgets_init', 'site_unregister_sidebar', 1);

Mais rien ne se passe.

  • Qu'est-ce que je fais vraiment mal?
  • Existe-t-il un autre moyen de réaliser cela?
1
Mayeenul Islam

Merci à Milo et G.M. pour pointer sur la clé principale, comme G.M. m'a dit:

, vous devez utiliser une priorité inférieure à celle d'un registre_serveur_service, mais une priorité inférieure signifie un nombre plus élevé.

Donc, le code final qui fonctionne:

function site_unregister_sidebar() {

    if ( is_admin() && current_user_can('editor') ) {
        unregister_sidebar( 'my_custom_widget_area' );
    }
}

add_action('widgets_init', 'site_unregister_sidebar', 20);

Parce que je règle ma barre latérale avec une priorité de 10 avec le même crochet - widgets_init.

function theme_widgets_init() {

    register_sidebar( array (
        'name' => 'Custom Widget Area',
        'id' => 'my_custom_widget_area'
    ) );
}

add_action( 'widgets_init', 'theme_widgets_init', 10 );
3
Mayeenul Islam