WordPress DemoSite

Тестовый сайт для экспериментов и демонстраций возможностей

Хуки (Hooks)

Хуки (Hooks) — это один из самых мощных механизмов в WordPress, позволяющий разработчикам изменять или расширять функциональность ядра, тем и плагинов без необходимости редактирования исходного кода. Хуки делятся на два типа: Actions (действия) и Filters (фильтры). Давайте разберем их подробно с примерами.


1. Actions (Действия)

Actions позволяют выполнять код в определенный момент работы WordPress. Они не возвращают значения, а просто «цепляются» к определенным событиям.

Как работает Action:

  1. WordPress выполняет определенное действие (например, загрузка страницы, сохранение поста).
  2. Если к этому действию привязаны функции через add_action(), они выполняются.

Пример использования Action:

Допустим, вы хотите добавить текст в подвал сайта. Для этого можно использовать хук wp_footer:

function my_custom_footer_text() {
    echo '<p>Спасибо за посещение нашего сайта!</p>';
}
add_action('wp_footer', 'my_custom_footer_text');

В этом примере:


2. Filters (Фильтры)

Filters позволяют изменять данные перед их выводом или использованием. В отличие от Actions, Filters всегда возвращают значение.

Как работает Filter:

  1. WordPress передает данные через фильтр (например, заголовок поста).
  2. Если к этому фильтру привязаны функции через add_filter(), они могут изменить данные.
  3. Измененные данные возвращаются обратно.

Пример использования Filter:

Допустим, вы хотите добавить текст «Избранное» к заголовкам всех постов:

function modify_post_title($title) {
    return $title . ' - Избранное';
}
add_filter('the_title', 'modify_post_title');

В этом примере:


3. Параметры хуков

И Actions, и Filters могут принимать дополнительные параметры. Например:

Пример с параметрами:

Хук wp_footer может принимать приоритет и количество аргументов:

add_action('wp_footer', 'my_custom_footer_text', 10, 2);

4. Создание собственных хуков

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

Создание Action:

function my_custom_action() {
    // Выполняем код
    do_action('my_custom_action'); // Создаем хук
}

Теперь другие разработчики могут «цепляться» к вашему хуку:

add_action('my_custom_action', 'some_function');

Создание Filter:

function my_custom_filter($content) {
    $content = apply_filters('my_custom_filter', $content); // Создаем хук
    return $content;
}

Теперь другие разработчики могут изменять данные:

add_filter('my_custom_filter', 'modify_content');

5. Примеры популярных хуков

Actions:

Пример:

function my_custom_init() {
    // Код, который выполнится при инициализации
}
add_action('init', 'my_custom_init');

Filters:

Пример:

function custom_excerpt_length($length) {
    return 20; // Устанавливаем длину цитаты в 20 слов
}
add_filter('excerpt_length', 'custom_excerpt_length');

6. Удаление хуков

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

Пример:

remove_action('wp_footer', 'my_custom_footer_text');

7. Приоритет хуков

Хуки могут иметь приоритет выполнения. По умолчанию приоритет равен 10. Чем меньше число, тем раньше выполнится хук.

Пример:

add_action('wp_footer', 'function_one', 5); // Выполнится первой
add_action('wp_footer', 'function_two', 15); // Выполнится позже

8. Практический пример: Добавление кнопки «Наверх»

function add_scroll_to_top_button() {
    echo '<button id="scroll-to-top" style="display:none;">Наверх</button>';
    echo '<script>
        jQuery(document).ready(function($) {
            $(window).scroll(function() {
                if ($(this).scrollTop() > 100) {
                    $("#scroll-to-top").fadeIn();
                } else {
                    $("#scroll-to-top").fadeOut();
                }
            });
            $("#scroll-to-top").click(function() {
                $("html, body").animate({ scrollTop: 0 }, 600);
                return false;
            });
        });
    </script>';
}
add_action('wp_footer', 'add_scroll_to_top_button');

Заключение

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

Полный стэк: .NET | AMQP | Android | api | Bash | Bootstrap | C++ | cms | Composer | css | Data | Elasticsearch | ESP32 | Git | GraphQL | Gulp | JavaScript | JetStream | Joomla | js | Kotlin | Laravel | LEMP | Linux | LMS | Markdown | MODX | Moodle | MySQL | NATS | Nginx | Node.js | OpenCart | Parsedown | PHP | Python | RabbitMQ | SCSS | SEO | Simpla | SOAP | SQL | startup | Swift | Symfony | Tailwind | Translation | Twig | Ubuntu | Unit | web3 | Webasyst | Webpack | WebSocket | WordPress | XML | Бизнес | блокчейн | ИИ | интернет-магазин | ЛК | Руководство | ТЗ | фреймворк | Яндекс.Трекер