Ab welchem ​​Haken ist es möglich, bedingte Aktionen hinzuzufügen?

Ich habe versucht, eine Siderbar am “init” -Hook basierend auf einer Variablen aus dem theme options-Array registrieren zu lassen, die angibt, ob die Sidebar im Design verwendet werden soll.

Nun scheint es, dass die Bedingung gut funktioniert (getestet mit etwas anderem Code), aber wenn ich sie benutze

add_action( 'init', 'register_sidebar_x' ); oder add_action( 'wp_loaded', 'register_sidebar_x' );

wenn die Bedingung wahr ist, passiert nichts, und die Seitenleiste wird nicht registriert, während sie nur unter Verwendung des Codes außerhalb der Kontrollstruktur unter Verwendung eines Hooks registriert wird.

So scheint es, dass die init-function ausgeführt wird, bevor die functions.php Zugriff auf das theme options-Array hat (welches enthalten ist). Die Kontrollstruktur arbeitet beispielsweise mit “wp_head”.

Also meine Frage ist – ab welchem ​​Haken ist es möglich, Bedingungen zu verwenden und gibt es einen, der verwendet werden kann, um Seitenleisten nach diesem Punkt zu registrieren?

AKTUALISIEREN:

OK, hier ist der aktuelle Code, der versucht, einige Vorschläge von unten einzubeziehen … Die Seitenleiste ist gut registriert, wenn ich nicht für die Bedingung teste, aber die Bedingung ist eindeutig “ja”. Gibt es eine Möglichkeit, Sidebars bedingt zu registrieren?

 add_action( 'after_setup_theme', 'aad_theme_setup' ); function aad_theme_setup() { if ( function_exists( 'get_option_tree') ) { $theme_options = get_option('option_tree'); } if ($theme_options['aad_sliding_sidebar']=='yes') { add_action( 'widgets-init', 'aad_register_sidebar_function' ); } } 

So funktioniert es immer noch nicht … danke für weitere Anregungen!

Solutions Collecting From Web of "Ab welchem ​​Haken ist es möglich, bedingte Aktionen hinzuzufügen?"

Ich habe das auf dem Codex gefunden

Sie können bedingte Abfragetags nur in oder nach dem Aktionshaken in WordPress verwenden. Bei Themen bedeutet dies, dass das bedingte Tag niemals richtig funktioniert, wenn Sie es im body von functions.php verwenden, also außerhalb einer function.

aktualisieren

Sie müssen nicht die Register Sidebar function haken einfach so nennen:

 add_action( 'after_setup_theme', 'aad_theme_setup' ); function aad_theme_setup() { if ( function_exists( 'get_option_tree') ) { $theme_options = get_option('option_tree'); } get_option_tree if ($theme_options['aad_sliding_sidebar']=='yes') { aad_register_sidebar_function(); } } 

aber vergewissere dich, dass du auf deine option_tree-Option zugreifen kannst, weil du nachprüfst, ob die “get_option_tree” -function existiert, aber du “get_option” verwendest und vielleicht nur in deinem Code “aad_register_sidebar_function ()” anstelle von “add_register_sidebar_function ()” “zwei” aa “und nicht zwei” dd “?

Der after_setup_theme Hook wird sehr früh aufgerufen (direkt nach dem Finden und after_setup_theme der functions.php-Datei), und Sie sollten get_option auf diesem Hook verwenden können.

init wird jedoch vor register_sidebars aufgerufen, weshalb ich mir nicht sicher bin, warum Sie die sidebars an dieser Stelle nicht registrieren können. Was verwenden Sie, um die Optionstabelle zu überprüfen? Ist es eine einfache get_option function oder hängt es von den get_option Optionen ab?