Avec cette Q & R de StackOverflow , je ne parviens pas à utiliser la fonction unregister_sidebar()
.
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.
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 );