Таксономии (доступность) (зона видимости)
Добрый день! (Можете подсказать пожалуйста). Почему данный код не работает например в functions.php, а в шаблонах работает.
$categories = get_terms( array( 'taxonomy' => 'portfolio-category','hide_empty' => 0, 'orderby' => 'ASC', 'parent' =>0) );
А работает только вот так
add_filter('init', 'my_get_woo_cats'); function my_get_woo_cats() { $categories = get_terms( array( 'taxonomy' => 'portfolio-category','hide_empty' => 0, 'orderby' => 'ASC', 'parent' =>0) ); if($categories) { foreach($categories as $cat) { } } }
Мне нужно передать в массив в add_options в carbon fields и поэтому второй вариант не подходит!
У меня была такая же ситуация, Тимур всё правильно написал. Ты запрашиваешь то, что ещё на момент регистрации полей не зарегистрировано. Выход есть, я задавал вопрос разрабам и они отвечали в issue, то есть тебе надо такой пример под себя доработать:
Суть кода в том, что поле заполняется ключами только на момент его отрисовки в админки (выполняется функция
my_options_function()
), что достаточно поздно (на этом моменте уже всё доступно, что нужно), а не на момент регистрации поля, как раньше, что достаточно рано (на этом момент почти ничего не доступно).Спасибо, проверю.
Получилось!
Отлично, только почему
$cats[0]
вне функции? Это странно, советую прочесть Область видимости переменной.Да, все верно. Забыл поместить внутрь! В крайнем случае, если бы не поместил внутрь, то просто первый индекс был бы не доступен. Это текст показать все. А так ничего страшного. Но согласен лучше поместить во внутрь.
Скорее всего потому что на момент вызова хука, таксономия portfolio-category еще не зарегистрирована.
Запускай add_options в carbon fields попозже, например так же на хуке init.
Мне нужно было, просто получить все категории таксономии, и передать их вот так
->add_options($cats)
через хук если сделать работает только внутри этой функции! Что только не пробовал.