ВОПРОС
Сейчас я пользуюсь дочерней темой, которая работает на Thematic Framework. Он имеет несколько различных хуков. В основном я работаю с thematic_header, а также использую topic_header для того, чтобы добавить следующие действия:
<?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(). У меня получилось найти только один способ, как это сделать. Он заключается в том, что можно удалить и повторно добавлять определенные действия:
<?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’);
Но как по мне – задача слишком простая и это решение выглядит просто глупо. Есть ли какой-нибудь способ, который позволяет отсортировать или переупорядочить структуру данных?
Полезно : Комплексная работа с комментариями в WordPress(Откроется в новой вкладке браузера)
ОТВЕТ
Вообще для таких случаев уже есть решение. Поэтому тебе нужно сначала удалить все это таким образом:
remove_action(‘thematic_header’, ‘thematic_brandingopen’, 1);
remove_action(‘thematic_header’, ‘thematic_access’, 9);
А затем просто добавить снова с использованием приоритетов:
add_action(‘thematic_header’, ‘thematic_access’, 1);
add_action(‘thematic_header’, ‘thematic_brandingopen’, 2);