С 2004 года, когда был виден светлый мир WordPress 1.2, фильтры и действия были одними из краеугольных камней при разработке тем и модулей.
Хуки (общий термин для этих двух разных групп функций PHP) позволяют вам изменять или расширять функциональность WordPress без какого-либо вмешательства в файлы ядра. Ниже мы покажем, что фильтр изменяет значение содержимого, а действие может одновременно добавлять другое к вызываемой функции. Благодаря этому у нас есть очень мощный инструмент для создания уникального блога или сайта, и в то же время нам не нужно беспокоиться о проблемах с обновлением до последней версии WP.
Фильтр запускает WordPress, когда вы меняете текст или другие типы контента, прежде чем добавить его в базу данных или отправить в браузер. Ваш модуль может указать, что одна или несколько функций PHP изменяют данный тип содержимого в заданное время.
Простой пример для понимания того, что лежит в основе хуков — демонстрация существующей функции и ее модификаций.
function get_excerpt($text, $length = 150) { $excerpt = substr($text,$length); return $excerpt; }
Эта функция содержит два параметра: строку и длину, до которой мы хотим ее сократить. Вы хотите двести символов в сообщении вместо стандартных 150 символов? Нет проблем, меняем параметр при использовании функции. Прежде всего, мы применяем фильтр для функции, которая регулирует длину отчета.
function get_excerpt($text, $length = 150) { $length = apply_filters('excerpt_length', $length); $excerpt = substr($text,$length); return $excerpt; }
Имя этого фильтра — excerpt_lenght, и к нему пока не привязана ни одна функция, поэтому длина листинга составляет 150 символов. Таким образом, мы должны сообщить системе, что хотим «подцепить» фильтр excerpt_length и определить новое значение. Мы изменим это с помощью следующей записи:
function get_excerpt($text, $length = 150) { $length = apply_filters('excerpt_length'); $excerpt = substr($text,$length); return $excerpt; } function modify_excerpt_length() { return 200; } add_filter('excerpt_length', 'modify_excerpt_length');
Готово, правило для всех утверждений состоит в том, что они должны содержать 200 символов. Не вмешиваясь в исходную функцию, мы скорректировали длину списка вкладов, применив фильтр, и изменение будет отражено в каждом отображаемом заявлении.
Действие запускает WordPress в определенные моменты во время выполнения команды или при возникновении определенного события. Ваш модуль может использовать действие, чтобы указать, что одна или несколько функций PHP будут выполняться в этих точках.
Пример полезного действия — вставить ссылку на иконку страницы в файле header.php в вашей активной теме. Функция с именем theme_favicon содержит HTML-код с адресом, где хранится файл favicon.ico, с записью add_action(‘wp_head’, ‘theme_favicon’); мы сообщаем системе, что хотим добавить нашу функцию к функции wp_head , вставив упомянутый код между тегами< голова>< / хаед> .
function theme_favicon() { ?> <link rel="shortcut icon" href="<?php bloginfo('stylesheet_directory') ?>/images/favicon.ico"/> <?php } add_action('wp_head', 'theme_favicon');
Хорошей новостью является то, что WordPress использует функции везде, а возможности редактирования практически безграничны, но начинающих разработчиков может отпугнуть их количество (в настоящее время более 1500). Нелегко ориентироваться в таком количестве функций, но в официальной документации WordPress есть хорошо продуманные фильтры и отчеты о действиях , а база данных ловушек Адама Р. Брауна — хорошее начало для изучения ловушек.
Was this article helpful for you? Support me by sharing, please. 👍