В процессе работы с WordPress часто возникает необходимость отключить или полностью удалить определённые PHP функции, которые либо замедляют сайт, либо конфликтуют с другими плагинами, либо просто не нужны. Однако прямое изменение файлов темы или плагина — не лучший вариант: при обновлении эти изменения будут потеряны, и можно случайно нарушить работу сайта.
Почему стоит отключать функции без правки кода темы
Изменение кода темы или плагина приводит к проблемам с обновлениями и поддержкой сайта. Если вы хотите убрать функцию или фильтр, лучше сделать это с помощью дочерней темы, отдельного плагина или специальных инструментов. Такой подход позволяет сохранить работоспособность сайта после обновлений и легко управлять функционалом.
Кроме того, отключение функций через хуки WordPress даёт гибкость: вы можете отключить функцию только на нужных страницах, в админке или для определённых пользователей.
Рассмотрим, как это сделать на практике, с примерами кода и рекомендациями по плагинам.
Как отключить функцию с помощью remove_action и remove_filter
Самый распространённый способ убрать действие или фильтр — использовать функции remove_action и remove_filter. Для этого нужно знать, с каким хукем связана функция, и её имя.
Например, предположим, что в теме подключается скрипт через хук wp_enqueue_scripts функцией wpMobile_enqueue_scripts. Чтобы её отключить, добавьте в файл functions.php дочерней темы или в отдельный плагин такой код:
function wpmobile_remove_scripts() {
remove_action('wp_enqueue_scripts', 'wpMobile_enqueue_scripts');
}
add_action('wp_loaded', 'wpmobile_remove_scripts');Обратите внимание, что вызов remove_action должен происходить после того, как функция была добавлена, поэтому в некоторых случаях лучше использовать хук wp_loaded или init с приоритетом.
Если функция добавлена с параметрами приоритета, их нужно указать точно, иначе удаление не сработает:
remove_action('hook_name', 'function_name', 20);Поиск названия функции и хука
Чтобы найти, какие функции и фильтры используются, можно:
- Просмотреть исходный код темы или плагина (функции add_action, add_filter)
- Использовать плагин Debug Bar с расширениями для отображения хуков
- Временно добавить отладочный код с
print_rилиerror_logдля вывода списка зарегистрированных хуков
Использование плагинов для отключения функций без кода
Если вы не хотите писать код, существуют плагины, которые помогают деактивировать ненужный функционал. Вот несколько полезных:
- Code Snippets — позволяет добавлять и управлять фрагментами кода без правки
functions.php. Можно легко добавитьremove_actionили другой код для отключения функций. - Asset CleanUp — позволяет отключать загрузку скриптов и стилей на отдельных страницах, тем самым отключая функции, которые работают через эти скрипты.
- Clearfy Pro — комплексный плагин оптимизации, в котором есть возможность отключать различные встроенные функции WordPress и плагины, что полезно для мобильных сайтов.
Использование плагинов удобно для тех, кто не хочет править код напрямую, но всё же требует понимания, какие функции нужно отключать.
Пример: отключаем Emoji и встроенные скрипты без правки темы
WordPress по умолчанию подключает скрипты для поддержки Emoji, которые могут замедлять загрузку страниц. Их отключение улучшит скорость, особенно на мобильных устройствах.
Вместо правки темы добавьте этот код в отдельный плагин или с помощью Code Snippets:
function wpmobile_disable_emojis() {
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_styles', 'print_emoji_styles');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
add_filter('tiny_mce_plugins', 'wpmobile_disable_emojis_tinymce');
}
add_action('init', 'wpmobile_disable_emojis');
function wpmobile_disable_emojis_tinymce($plugins) {
if (is_array($plugins)) {
return array_diff($plugins, array('wpemoji'));
}
return array();
}Этот код полностью отключит Emoji без изменения темы и надёжно сработает на всех страницах.
Создание собственного плагина для отключения функций
Если вы хотите иметь централизованное место для всех подобных изменений, лучше создать собственный небольшой плагин. Это удобно и безопасно.
Создайте файл wpmobile-disable-functions.php в папке wp-content/plugins со следующим содержимым:
<?php
/**
* Plugin Name: WPMobile Disable Functions
* Description: Отключение ненужных функций для оптимизации сайта.
* Version: 1.0
* Author: WPMobile
*/
function wpmobile_disable_functions_init() {
// Пример отключения действий
remove_action('wp_head', 'wp_generator'); // Убрать мета-теґ о версии WordPress
// Добавляйте сюда другие remove_action/remove_filter
}
add_action('init', 'wpmobile_disable_functions_init');Активируйте этот плагин в админке WordPress, и ваши изменения начнут работать без правки темы.
Советы и рекомендации
Правильный выбор хука для удаления функций
Очень важно выбрать правильный момент для вызова remove_action или remove_filter. Если вызвать их слишком рано, функции ещё не добавлены, и удаление не сработает. Слишком поздно — могут уже сработать нежелательные действия.
Рекомендуется использовать хуки after_setup_theme, init с приоритетом 20 или wp_loaded в зависимости от ситуации. Экспериментируйте, чтобы подобрать оптимальный вариант.
Убедитесь, что отключаемая функция не критична
Прежде чем отключать функцию, проверьте её роль. Иногда отключение может привести к ошибкам или потере важного функционала. Тестируйте изменения на тестовом сайте или используйте режим отладки WordPress.
Используйте Clearfy Pro для комплексной оптимизации
Если у вас много таких задач и нужно быстро и безопасно управлять функционалом, рассмотрите использование плагина Clearfy Pro. Он позволяет отключать множество ненужных функций, улучшать производительность и безопасность без правки кода.