Как использовать хуки WordPress для автоматизации задач

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

Что такое хуки WordPress: actions и filters

WordPress предоставляет два основных типа хуков: actions и filters. Actions — это точки в коде, где можно выполнить дополнительный код. Filters — это точки, где можно изменить данные перед их выводом или сохранением.

Например, action wp_footer позволяет добавить код в футер сайта, а filter the_content позволяет изменять содержимое поста перед выводом.

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

Автоматизация публикации постов с помощью action-хуков

Одна из частых задач — автоматическое добавление метаданных или изменение статуса поста при публикации. Для этого можно использовать action-хук publish_post или более универсальный save_post.

Например, добавим автоматическую установку пользовательского поля при публикации:

function wpdemo_auto_set_meta_on_publish($post_id) {
    // Проверяем тип поста и права
    if (get_post_type($post_id) !== 'post') return;
    if (wp_is_post_revision($post_id)) return;

    // Устанавливаем метаполе
    update_post_meta($post_id, '_wpdemo_auto_meta', 'published');
}
add_action('publish_post', 'wpdemo_auto_set_meta_on_publish');

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

Фильтрация и изменение содержимого с помощью filter-хуков

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

Пример добавления текста в конец контента:

function wpdemo_append_text_to_content($content) {
    if (is_singular('post')) {
        $content .= '<p><em>Спасибо за прочтение!</em></p>';
    }
    return $content;
}
add_filter('the_content', 'wpdemo_append_text_to_content');

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

Пример автоматического создания резервной копии базы данных при сохранении поста

Автоматизация рутинных задач — ключ к стабильности сайта. Рассмотрим пример: при сохранении любого поста будет запускаться создание резервной копии базы данных.

Для этого используем action save_post. Ниже упрощенный пример функции, которая сохраняет дамп базы в папку uploads/wp-backup:

function wpdemo_backup_db_on_save_post($post_id) {
    if (wp_is_post_revision($post_id)) return;

    global $wpdb;
    $upload_dir = wp_upload_dir();
    $backup_dir = $upload_dir['basedir'] . '/wp-backup/';

    if (!file_exists($backup_dir)) {
        wp_mkdir_p($backup_dir);
    }

    $filename = $backup_dir . 'backup-' . date('Y-m-d-H-i-s') . '.sql';

    // Команда mysqldump требует настроек, здесь пример через exec
    $db_host = DB_HOST;
    $db_name = DB_NAME;
    $db_user = DB_USER;
    $db_pass = DB_PASSWORD;

    $command = "mysqldump --host=$db_host --user=$db_user --password=$db_pass $db_name > $filename";
    exec($command);
}
add_action('save_post', 'wpdemo_backup_db_on_save_post');

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

Использование хуков для интеграции плагина Clearfy Pro и оптимизации сайта

Если на сайте установлен плагин Clearfy Pro, можно использовать его API вместе с хуками для автоматического включения или отключения модулей в зависимости от условий.

Пример отключения XML-RPC при сохранении настроек:

function wpdemo_clearfy_disable_xmlrpc($option_name, $old_value, $value) {
    if ($option_name === 'clearfy_disable_xmlrpc' && $value) {
        remove_action('xmlrpc_call', 'some_xmlrpc_handler');
    }
}
add_action('update_option', 'wpdemo_clearfy_disable_xmlrpc', 10, 3);

Так можно гибко настраивать поведение плагина в зависимости от бизнес-логики.

Советы по работе с хуками для автоматизации

  • Проверяйте условия вызова — добавляйте проверки типа поста, прав пользователя, чтобы код не выполнялся в ненужных местах.
  • Избегайте тяжелых операций в хуках, которые вызываются часто, например, на каждом запросе. Для таких задач лучше использовать WP-Cron.
  • Используйте префиксы в названиях функций, чтобы избежать конфликтов с другими плагинами.
  • Логируйте действия во время разработки, чтобы отследить выполнение своих функций.
  • Тестируйте на локальной копии сайта, чтобы избежать ошибок на рабочем ресурсе.

Как найти нужный хук

Используйте официальную справку по хукам WordPress. Там подробно описаны все доступные хуки, их параметры и места вызова.

Также можно использовать плагины типа Query Monitor для отслеживания хуков, которые срабатывают на странице.

Пример создания своего action-хука для расширения плагина

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

function wpdemo_plugin_process_data($data) {
    /**
     * Хук для обработки данных плагина
     *
     * @param array $data
     * @return array
     */
    return apply_filters('wpdemo_plugin_process_data', $data);
}

// В другом месте темы или плагина
add_filter('wpdemo_plugin_process_data', function($data) {
    $data['added_by_hook'] = true;
    return $data;
});

Так вы обеспечите расширяемость и гибкость своего кода.

Заключение

Хуки — основа автоматизации и расширения WordPress. Понимание как и когда их использовать позволяет создавать гибкие и удобные решения под любые задачи. В этой статье мы рассмотрели практические примеры работы с actions и filters, добавления метаданных, автоматизации резервного копирования, интеграции с плагинами и создания собственных хуков. Используйте эти знания для улучшения своих проектов на WordPress.

Как сделать удалённый вывод данных в WordPress с помощью WP REST API
24.01.2026
WP-Cron не работает: как исправить проблему в WordPress
15.11.2025
Как создать собственный блок Гутенберг в WordPress
15.12.2025
Как создать настройки для своего плагина WordPress с примерами кода
24.11.2025
Как добавить свои свойства в метаданные постов WordPress
11.11.2025