Использование хуков действий в дочерних темах WordPress
Эта статья из цикла статей «Стилизация дочерних тем», который состоит из следующих пунктов:
- Основы создания дочерней темы WordPress
- Модульная CSS-стилизация в дочерних темах WordPress.
- Использование хуков фильтров в дочерних темах WordPress.
- Использование хуков действий в дочерних темах WordPress.
В данной статье мы рассмотрим, как написать свою PHP-функцию, а также пробежимся по основной идее использования хуков действий в теме WordPress. Также мы создадим простой текст приветствия в теме без редактирования кода и посмотрим, как удалить существующий контент, подцепленный к хукам.
Собираем функцию
Хуки действий присутствуют в преобладающем большинстве современных тем. На это есть серьезное основание – хуки действий невероятно удобны и очень мощны.
Чтобы научиться ими пользоваться, давайте напишем простую PHP-функцию. Не волнуйтесь, мы оставим ее настолько простой, насколько это возможно.
function pretty_basic() { // This is a PHP comment. // PHP "stuff" goes here. } function still_pretty_basic() { ?> <!-- HTML comment now --> <!-- Notice how I "broke out" of writing PHP? --> <!-- I added closing and opening PHP tags just inside the curly braces --> <?php // I can even write more familiar-looking PHP here ?> <?php }
Мы создали PHP-функцию. Это достаточно простой шаг. Она содержит в себе определенный код. Вызвать функцию потом можно следующим образом:
<?php pretty_basic() ?> <?php still_pretty_basic() ?>
Вы уже сталкивались ранее с вызовом функций в данном руководстве на примере wp_list_pages () или the_content (). Эти функции уже заполнены необходимым материалом, который хранится где-то глубоко в WordPress – нам достаточно лишь вызвать их где-нибудь в шаблонах.
Основная идея использования хуков действий
Многие действительно умные разработчики стали добавлять к своим темам пустые функции, готовые к заполнению определенным контентом. Мы будем называть такие функции хуками действий. Скорее всего, вы уже сталкивались с ними прежде.
В темах WordPress используется несколько хуков по умолчанию, которые называются wp_head() и wp_footer(). Эти две функции вызываются для добавления материалов к теме WordPress, позволяя избежать редактирования шаблонов.
Давайте вкратце расскажем, какие преимущества открываются перед вами, если ваша любимая тема использует хуки действий: вы можете добавлять любой контент, который захотите, будь то дополнительные функции WordPress, вызовы плагинов, слайдеры на jQuery и т.д., причем все это вы можете сделать, просто добавив вашу функцию к уже существующему хуку действий. К тому же, все ваши коррективы не пропадут после обновлений темы.
Добавление контента к хуку действий
Давайте сделаем что-то на практике, к примеру, добавим текст «Welcome To My Blog» сразу под хэдером темы Thematic с помощью хука действий thematic_belowheader(). Поместите следующий фрагмент кода в файл functions.php вашей дочерней темы:
// First we make our function function childtheme_welcome_blurb() { // We'll show it only on the HOME page IF it's NOT paged // (so, not page 2,3,etc.) if (is_home() & !is_paged()) { ?> <!-- our welcome blurb starts here --> <div id="welcome-blurb"> <p>Welcome to <?php bloginfo('name'); ?>.</p> </div> <!-- our welcome blurb ends here --> <?php } } // end of our new function childtheme_welcome_blurb // Now we add our new function to our Thematic Action Hook add_action('thematic_belowheader','childtheme_welcome_blurb');
Все очень просто. Хотите добавить что-нибудь к теме WordPress, не ковыряясь в файлах и обезопасив себя от последующих обновлений? Просто найдите хуки действий, используемые в теме!
Удаление существующего контента из хуков действий
В некоторых темах, таких как Thematic, отдельные хуки действий уже частично заполнены некоторым материалом. Вы можете легко отключать некоторые части вашей темы. Ниже приведен основной синтаксис для того, чтобы удалить контент из вашей темы, который уже был подцеплен к хуку:
// Unhook default Thematic functions function unhook_thematic_functions() { // Don't forget the position number if the original function has one remove_action('thematic_hook_name','thematic_function_name',postitionnumber); } add_action('init','unhook_thematic_functions');
Также в качестве примера представлен фрагмент кода, который позволит удалить навигационное меню из темы Thematic. Просто вставьте этот код в файл functions.php вашей дочерней темы:
// Unhook default Thematic functions function unhook_thematic_functions() { // Don't forget the position number if the original function has one remove_action('thematic_header','thematic_access',9); } add_action('init','unhook_thematic_functions');
Комбинируя хуки действий и хуки фильтров в вашей теме, вы можете сделать практически все, что вам требуется.
Источник: themeshaper.com