Использование терминов get для пользовательской таксономии в functions.php
Я пытаюсь получить названия элементов таксономии и включить их в панель администратора темы.
function retrieve_my_terms() { global $terms; $terms = get_terms('taxonomy'); foreach ($terms as $term) { $option = $term->name; return $option; } }
Функция добавлена после функций, которые создали пользовательский тип записи и таксономию.
Из того, что я узнал, кажется, что действие init
происходит после того, как тема functions.php файл был включен, поэтому, если я ищу термины непосредственно в файле функций, я делаю это до того, как они были фактически зарегистрированы.
В других слова, действие инициализации не запускается до тех пор, пока не будет включен файл функций темы, поэтому любое извлечение терминов должно происходить после инициализации.
Моя проблема в том, что я не знаю, как извлечь термины после инициализации.
Любой ответ будет очень признателен!
Спасибо вам! Мадалин
3 answers
Вы можете добавить действие для самого инициализации, просто увеличьте приоритет вызова add_action
. Чем выше приоритет, тем позже вызывается функция.
add_action('init', 'retrieve_my_terms', 9999);
Но я предлагаю, чтобы вы делали подобные вещи как можно позже, предпочтительно непосредственно перед их первым использованием. Есть действие 'wp_loaded'
, которое вызывается после полной загрузки wordpress и готово начать работу над выводом. Это действие может сработать для вас.
Это правда, что functions.php
загружается раньше init
- и что большинство типов сообщений будут зарегистрированы с помощью этого крючка. Но есть более поздние крючки, которые вы можете использовать - и которые будут более подходящими.
Вы говорите, что вам нужен доступ к терминам внутри functions.php
. Но когда они вам понадобятся? init
срабатывает при каждой загрузке страницы - спереди и сзади - и я не думаю, что вы хотите получать термины при каждой загрузке страницы. Вам доступно множество крючков, и все они срабатывают в различных контексты. Если вы точно сообщите нам, что вы хотите сделать с условиями, которые определят, какой крючок вам следует использовать.
(Меня немного смущает включить их в панель администратора темы ). Похоже, вы пытаетесь вывести список в метабоксе администратора. В любом случае, можете ли вы включить какой-нибудь код?
Вы можете определить свою функцию в глобальной области functions.php без каких-либо проблем.
Проблема в том, что использует функцию до регистрации. Вместо того, чтобы делать что-то в functions.php в глобальном масштабе делайте их крючками. Единственное, что в functions.php это должно быть разрешено, чтобы не быть на крючке, - это призывы к add_action
.
Поэтому поместите все в крючки и сделайте свои звонки в крючок/действие после регистрации ваших типов сообщений, не до этого в свободном коде в глобальном