Mit dieser Fragen und Antworten zu StackOverflow kann ich die unregister_sidebar()
nicht für mich zum Laufen bringen.
Ich habe ein Thema mithilfe eines Seitenleistenbereichs entwickelt, in dem ich ein Widget verwendet habe. Ich möchte jedoch nicht, dass der "Editor" Zugriff auf diesen Widget-Bereich in der Seitenleiste im Admin-Bereich erhält. Ich möchte also einen Tweak im functions.php
meines Themas durchführen, in dem ich zuvor register_sidebar()
angegeben habe, um die Seitenleiste zu registrieren.
Ich habe verstanden, dass das Setzen einer niedrigeren Priorität die Funktion zum Aufheben der Registrierung früher auslöst. Deshalb habe ich Folgendes versucht:
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);
Es passiert aber nichts.
Vielen Dank an Milo und G.M. für den Hinweis auf den Hauptschlüssel, als G.M. sagte:
Sie müssen eine niedrigere Priorität verwenden als eine register_sidebar-Ausführung, aber niedrigere Priorität bedeutet höhere Anzahl.
Also der endgültige Code, der funktioniert:
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);
Weil ich meine Sidebar mit der Priorität 10 mit dem gleichen Haken - widgets_init
gesetzt habe.
function theme_widgets_init() {
register_sidebar( array (
'name' => 'Custom Widget Area',
'id' => 'my_custom_widget_area'
) );
}
add_action( 'widgets_init', 'theme_widgets_init', 10 );