Я использую рамки Thematic для детской темы. У этого есть несколько крючков, но я смотрю thematic_header () в частности. Ключ thematic_header () добавляет следующие действия (через add_action):
<?php add_action('thematic_header', 'thematic_brandingopen', 1); add_action('thematic_header', 'thematic_blogtitle', 3); add_action('thematic_header', 'thematic_blogdescription', 5); add_action('thematic_header', 'thematic_brandingclose', 7); add_action('thematic_header', 'thematic_access', 9); ?>
Содержание действий не имеет значения.
Мой вопрос таков: как я могу изменить приоритеты пяти рассматриваемых действий. Например, я хочу, чтобы thematic_access () загружался до thematic_brandingopen (). Единственный способ сделать это, который я смог выяснить, – удалить и повторно добавить действия, ala:
<?php function remove_thematic_actions() { remove_action('thematic_header', 'thematic_access'); add_action('thematic_header', 'thematic_access', 0); //puts it above thematic_brandingopen } add_action ('init', 'remove_thematic_actions');
Это похоже на глупый способ сделать что-то очень простое. Есть ли способ доступа и сортировки / изменения порядка хранения данных в WP?
Из WordPress
если крючок был зарегистрирован с использованием приоритета, отличного от значения по умолчанию 10, тогда вы также должны указать приоритет в вызове remove_action ().
Поэтому я думаю, что вы можете сначала удалить, используя следующие
remove_action('thematic_header', 'thematic_brandingopen', 1); remove_action('thematic_header', 'thematic_access', 9);
и добавить снова, используя другой priority
add_action('thematic_header', 'thematic_access', 1); add_action('thematic_header', 'thematic_brandingopen', 2);
не для самообучения, но я проделал некоторую работу над этим, чтобы предоставить некодирование с помощью плагина WordPress, называемого Prioritize Hooks . Мой плагин позволяет вам устанавливать приоритеты различных зарегистрированных крючков через пользовательский интерфейс и выполняет переопределение во время выполнения, поэтому код не изменяется.
На всякий случай это помогает кому-то, переменные действия хранятся в
global $wp_filter; var_dump( $wp_filter[$hook_name] );
Что представляет собой массив массивов с ключевыми приоритетами, когда действие было добавлено.