wake-up-neo.com

unregister_sidebar () im Standalone-Design funktioniert nicht

Mit dieser Fragen und Antworten zu StackOverflow kann ich die unregister_sidebar() nicht für mich zum Laufen bringen.

Szenario

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.

  • Was mache ich eigentlich falsch?
  • Gibt es eine andere Möglichkeit, dies zu erreichen?
1
Mayeenul Islam

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 );
3
Mayeenul Islam