Использование терминов 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 файл был включен, поэтому, если я ищу термины непосредственно в файле функций, я делаю это до того, как они были фактически зарегистрированы.

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

Моя проблема в том, что я не знаю, как извлечь термины после инициализации.

Любой ответ будет очень признателен!

Спасибо вам! Мадалин

Author: Madalin, 2012-11-21

3 answers

Вы можете добавить действие для самого инициализации, просто увеличьте приоритет вызова add_action. Чем выше приоритет, тем позже вызывается функция.

add_action('init', 'retrieve_my_terms', 9999);

Но я предлагаю, чтобы вы делали подобные вещи как можно позже, предпочтительно непосредственно перед их первым использованием. Есть действие 'wp_loaded', которое вызывается после полной загрузки wordpress и готово начать работу над выводом. Это действие может сработать для вас.

 1
Author: Mridul Aggarwal, 2012-11-21 12:09:11

Это правда, что functions.php загружается раньше init - и что большинство типов сообщений будут зарегистрированы с помощью этого крючка. Но есть более поздние крючки, которые вы можете использовать - и которые будут более подходящими.

Вы говорите, что вам нужен доступ к терминам внутри functions.php. Но когда они вам понадобятся? init срабатывает при каждой загрузке страницы - спереди и сзади - и я не думаю, что вы хотите получать термины при каждой загрузке страницы. Вам доступно множество крючков, и все они срабатывают в различных контексты. Если вы точно сообщите нам, что вы хотите сделать с условиями, которые определят, какой крючок вам следует использовать.

(Меня немного смущает включить их в панель администратора темы ). Похоже, вы пытаетесь вывести список в метабоксе администратора. В любом случае, можете ли вы включить какой-нибудь код?

 1
Author: Stephen Harris, 2012-11-21 12:20:11

Вы можете определить свою функцию в глобальной области functions.php без каких-либо проблем.

Проблема в том, что использует функцию до регистрации. Вместо того, чтобы делать что-то в functions.php в глобальном масштабе делайте их крючками. Единственное, что в functions.php это должно быть разрешено, чтобы не быть на крючке, - это призывы к add_action.

Поэтому поместите все в крючки и сделайте свои звонки в крючок/действие после регистрации ваших типов сообщений, не до этого в свободном коде в глобальном

 0
Author: Tom J Nowell, 2012-11-21 12:32:52