Домашняя » WordPress » Как использовать WordPress Action Hooks в настройке темы

    Как использовать WordPress Action Hooks в настройке темы

    Дочерние темы WordPress дают относительно простой способ настроить внешний вид темы. Если параметры темы не обеспечивают адекватного выбора дизайна, вы можете просто добавить новое правило в файл стилей по умолчанию для дочерней темы с именем style.css. Но что происходит, когда вы тоже хотите изменить функциональность темы? Это один из случаев, когда действия WordPress приходят к вам на помощь..

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

    О WordPress Крючки

    Крючки WordPress работают в некоторой степени аналогично реальным хукам в том смысле, что вы можете поймать нужную рыбу в нужном месте, если правильно их использовать..

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

    В WordPress есть два типа хуков: действия а также фильтры. В этом посте мы рассмотрим, как мы можем использовать экшн в настройке темы.

    Как работают WordPress Hooks

    Использовать очень простой язык, действия показывают, что что-то случилось во время жизненного цикла страницы WordPress: определенные части сайта были загружены, определенные параметры или настройки были настроены, плагины или виджеты были инициализированы и т. д..

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

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

    Определенные действия и фильтры, выполняемые во время запроса, зависят от того, какая страница была запрошена пользовательским агентом: например, в запросе с одним постом доступны хуки, относящиеся к отдельным постам, но хуки, относящиеся к другим частям сайта (например, к области администратора) не.

    Найти крючки для действий

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

    Так, например, если мы хотим добавьте наш код Google Analytics на сайт мы должны перехватить наше действие прямо перед загрузкой нижнего колонтитула.

    Если говорить о настройке темы, хуки действий могут происходить из двух разных мест: из WordPress Core а также сама тема. Есть темы, которые вообще не имеют хуков, но другие предоставляют разработчикам некоторые или многие из них - это всегда выбор автора темы. По умолчанию Twenty Fifteen Theme имеет только один хук действия для настройки нижнего колонтитула под именем Twentyfifteen_credits..

    Если вам нравится просматривать исходный код, вы также можете легко найти хуки действий. Хуки действий добавляются в код с помощью функции WordPress do_action ().

    Если вы выполните быстрый поиск выражения «do_action» в более продвинутом редакторе кода - как я это делал в Eclipse ниже - вы можете увидеть список мест, где вы можете подключить свои пользовательские функции к ядру. Я искал в / WP-включает / папку, но вы также можете запустить поиск / WP-администратора / папка, содержащая хуки действий, связанные с панелью управления WordPress (область администратора).

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

    Например, комментарий кода перед хуком действия widgets_init говорит, что он “срабатывает после регистрации всех виджетов WordPress по умолчанию”. Если вы посмотрите на код перед этим действием, вы можете найти инициализацию всех WP-виджетов по умолчанию перед ним - так что вы можете быть уверены, что комментарий не лгал, и если вы хотите зарегистрировать свой собственный виджет, это будет правильное место.

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

    Добавьте свои собственные действия

    Если вы хотите добавить собственное действие, вам нужно создать пользовательскую функцию а также привязать эту функцию к конкретному хуку действий с помощью функции WordPress add_action (). Пользовательские действия, добавляемые с помощью функции add_action (), обычно срабатывает на месте когда ядро ​​вызывает соответствующую функцию do_action ().

    Давайте посмотрим на простой пример.

    Как найти нужный вам крючок

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

    Давай подумаем. Если бы вы хотели добавить значок в виде простой HTML-страницы, куда бы вы его поместили? Конечно, вам нужно разместить его внутри раздел HTML-файла со следующей разметкой:

      

    Таким образом, действие крючок вам нужно должно быть связанные с загрузкой раздел.

    (1) Откройте Справочник действий и посмотрите, что он может предложить. Нам повезло, что если мы просматриваем действия, мы можем найти только одно, wp_head, которое на основе его имени может быть связано с загрузкой раздел.

    (2) Чтобы быть уверенным, давайте проверьте документацию в Кодексе WordPress. Кодекс рекомендует “вы используете этот хук, заставляя вашу функцию выводить эхо в браузер”, так что сейчас это кажется идеальным для нас. Но давайте проверим это в исходном коде.

    (3) Так как этот хук не относится к области администратора, нам нужно запустить наш поиск в / WP-включает / папка. Если мы ищем слово «wp-head», мы получим много результатов, так как это конкретное действие используется WP Core много раз..

    Нам нужно найти место, где оно определено, поэтому ищите выражение do_action ('wp_head'. Обратите внимание, что мы не завершили круглые скобки, так как мы пока не можем быть уверены, имеет ли это действие параметры или нет.

    Eclipse возвращает только один результат, который можно найти внутри /wp-includes/general-template.php файл. Комментарий до определения хука действия говорит, что это “печатает скрипты или данные в теге head на переднем конце”, так что теперь мы можем быть уверены, что wp_head нужен ли нам хук действий.

    Проверка параметров

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

    Синтаксис функции do_action () следующий:

     do_action ('name_of_action' [, $ параметр1, $ параметр2,…]) 

    Требуется только название действия, параметры необязательны. Если вы найдете аргументы в соответствующем вызове функции do_action (), вам нужно включите их в объявление созданной вами пользовательской функции.

    Если вы не найдете ничего, то ваша пользовательская функция должна работать без аргументов. В определении do_action () хука действия wp_head нет параметров.

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

    Давайте посмотрим на разницу в синтаксисе do_action () двух случаев:

     do_action ('wp_head'); do_action ('wp_register_sidebar_widget', $ widget);

    В первом случае нет параметра, поэтому пользовательская функция будет использовать следующий синтаксис:

     function my_function_without_parameters () … 

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

     function my_function_with_parameters ($ widget) … 

    Как подключить вашу пользовательскую функцию в

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

    Сначала создайте новую функцию без каких-либо аргументов, затем привяжите ее к хуку действий wp_head с помощью функции WordPress add_action ().

     function custom_add_favicon () echo '«;  add_action ('wp_head', 'custom_add_favicon');

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

    Это два обязательных параметра add_action (). Он также имеет два дополнительных параметра, приоритет а также принятые аргументы. Давайте посмотрим, как использовать эти.

    Определить приоритеты

    Во многих случаях бывает, что к одному и тому же хуку привязано более одного действия. Так какой из них будет выполнен первым? Здесь мы можем использовать необязательный параметр $ priority функции add_action ().

    Мы добавляем приоритет как положительное целое число, значение по умолчанию 10. Если мы хотим, чтобы действие было выполнено раньше, мы присваиваем ему меньшее значение, если мы хотим, чтобы оно было выполнено позже, мы присваиваем ему более высокое значение..

    Поэтому, если мы думаем, что значок должен быть там раньше, мы можем улучшить наш предыдущий вызов add_action () следующим образом:

     add_action ('wp_head', 'custom_add_favicon', 5); 

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

    Добавить количество принятых аргументов

    Вам необходимо добавить количество принятых аргументов в случае, если вы используете ловушку действия, которая принимает параметры. Давайте посмотрим на пример, который мы использовали ранее.

    Хук действия 'wp_register_sidebar_widget' принимает один параметр, поэтому, когда мы привязываем нашу пользовательскую функцию к этому хуку, мы также должны включить это в качестве аргумента при вызове функции add_action ().

    Наш код в этом случае будет выглядеть так:

     function my_sidebar_widget_function ($ widget) // Ваш код add_action ('wp_register_sidebar_widget', 'my_sidebar_widget_function', 10, 1); 

    Обратите внимание, что мы должны также добавить приоритет (здесь мы выбрали значение по умолчанию 10), чтобы WordPress знал, что означает каждый параметр. Если мы опускаем приоритет, WordPress может предположить, что 1 является приоритетом что не соответствует действительности, так как указывает количество принятых аргументов.

    Заключение

    Вы можете сделать много экспериментов с хуками действий в настройке темы. Например, вы можете добавить свои собственные сценарии (JS) и стили (CSS) с помощью хука действия wp_enqueue_scripts, или свой код Google Analytics с хуком действия wp_footer..

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

    Если вы автор темы и хотите создать расширяемую тему, это может быть хорошей идеей для добавьте свои собственные настраиваемые действия в соответствующие файлы шаблона с функцией do_action ().

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

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