С каких причин можно условно добавлять действия?

Я попытался получить зарегистрированный на крючке «init» сибербар на основе переменной из массива параметров темы, указывающей, следует ли использовать боковую панель в проекте.

Теперь кажется, что это условие работает нормально (проверено каким-то другим кодом), но если я использую

add_action( 'init', 'register_sidebar_x' ); или add_action( 'wp_loaded', 'register_sidebar_x' );

исходя из того, что условие истинно, ничего не происходит, и боковая панель не будет зарегистрирована, тогда как она будет зарегистрирована только с использованием кода вне структуры управления, используя либо hook.

Таким образом, кажется, что функция init выполняется до того, как функции.php имеет доступ к массиву параметров темы (который включен). Например, структура управления работает с «wp_head».

Итак, мой вопрос: от какого крючка можно использовать условные обозначения и есть ли тот, который можно использовать для регистрации боковых панелей после этой точки?

ОБНОВИТЬ:

ОК, вот текущий код, пытающийся включить некоторые предложения снизу … Боковая панель зарегистрирована просто отлично, если я не тестирую условие, но условие явно «да». Есть ли способ условно зарегистрировать боковые панели?

 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' ); } } 

Так что он все еще не работает … спасибо за любые дополнительные предложения!

Я нашел это в кодексе

Вы можете использовать только теги условного запроса в или после крючка инициализации в WordPress. Для тем это означает, что условный тег никогда не будет работать должным образом, если вы используете его в теле functions.php, т.е. вне функции.

Обновить

вам не нужно подключать функцию боковой панели регистра, просто назовите ее так:

 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(); } } 

но убедитесь, что вы можете получить доступ к своему параметру option_tree, потому что вы проверяете, существует ли функция get_option_tree, но вы используете «get_option», а также, может быть, только, может быть, в вашем коде вы вызываете «aad_register_sidebar_function ()» вместо «add_register_sidebar_function () «два« аа », а не два« дд »?

Крючок after_setup_theme называется очень ранним (сразу после поиска и включения файла functions.php), и вы должны иметь возможность использовать get_option на этом крючке.

init , однако, вызывается перед register_sidebars , поэтому я не уверен, почему вы не можете зарегистрировать боковые панели в этот момент. Что вы используете для проверки таблицы опций? Является ли это простой функцией get_option или вы в зависимости от параметров автозагрузки?