Условный оператор не работает в функции

Почему это не работает? Я пытаюсь выборочно загружать скрипты, но второй оператор if не загружает их там, где должен.

function my_init() { if (!is_admin()) { wp_deregister_script('jquery'); wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js', false, '1.5'); wp_enqueue_script('jquery'); if (in_category('41') ) { wp_register_script('validator', '/wp-content/themes/myTheme/library/jquery.validationEngine.js', array('jquery'), '2.0', false); wp_enqueue_script('validator'); wp_register_script('vEngine', '/wp-content/themes/myTheme/library/jquery.validationEngine-en.js', array('validator'), '2.0', false); wp_enqueue_script('vEngine'); } } } add_action('init', 'my_init'); 

Если я удалю второй оператор if для этой категории, он работает, но я хочу ограничить его одной категорией или даже is_single ('123')

Что я делаю не так?

Я подозреваю, что вы делаете это слишком рано. Цикл еще не настроен, когда init запущен, поэтому вам нужно подключить его где-то еще. wp_print_scripts и wp_print_styles или get_header всегда являются хорошим выбором. 😉

Я ткнул, и кажется, что ссылка Codex, в которой вы можете использовать условные теги, такие как is_category() в hook init неверна. Однако этот код работает очень хорошо:

 function my_init() { if (!is_admin()) { wp_deregister_script('jquery'); wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js', false, '1.5'); wp_enqueue_script('jquery'); } } function my_scripts() { if (in_category('41') ) { wp_register_script('validator', '/wp-content/themes/myTheme/library/jquery.validationEngine.js', array('jquery'), '2.0', false); wp_enqueue_script('validator'); wp_register_script('vEngine', '/wp-content/themes/myTheme/library/jquery.validationEngine-en.js', array('validator'), '2.0', false); wp_enqueue_script('vEngine'); } } add_action('init', 'my_init'); add_action('wp_print_scripts', 'my_scripts');