Если вы столкнулись с критической ошибкой Fatal error: Call to undefined function wp_kses в WordPress, значит в вашем коде вызывается функция, которая не найдена. Это может произойти из‑за конфликтов файлов, некорректных подключений или повреждённой установки. Ниже подробно разберём, как быстро и надёжно исправить эту проблему, используя ключевые слова wordpress, fatal error, wp_kses и functions.php в естественном контексте.
Разбор задачи
Функция wp_kses() отвечает за безопасную очистку HTML‑содержимого. Она определена в файле wp-includes/kses.php. Если вызов происходит до загрузки этого файла, PHP выдаст ошибку. Причины могут быть: 1) пользовательский код в functions.php загружается раньше, чем ядро WordPress; 2) плагин или тема не подключили нужные файлы; 3) повреждённый core. Ошибка выглядит так: Fatal error: Uncaught Error: Call to undefined function wp_kses(). Важно быстро определить источник и применить правильный fix.
Пошаговое решение
1. Проверьте порядок загрузки. Убедитесь, что ваш код в functions.php выполняется после wp_enqueue_scripts или внутри колбэка after_setup_theme. Добавьте add_action('after_setup_theme', 'my_theme_setup'); function my_theme_setup(){ /* ваш код */ }. Это гарантирует, что все ядро‑функции, включая wp_kses, уже доступны.
2. Проверьте наличие файла kses.php. Откройте wp-includes/kses.php и убедитесь, что файл существует и не повреждён. Если файл отсутствует, скачайте свежую копию WordPress 6.x и замените.
3. Проверьте плагины. Отключите все плагины и включайте их по одному, чтобы увидеть, какой из них вызывает конфликт. Многие плагины используют wp_kses без проверки загрузки ядра.
4. Используйте условную проверку. Если вы не уверены, что файл загружен, оберните вызов в if( function_exists('wp_kses') ) { wp_kses(...); }. Это предотвратит падение сайта.
5. Перезапустите сайт. После внесения изменений очистите кеши (WP‑Cache, браузер) и перезапустите сервер. Ошибка должна исчезнуть.
6. Проверьте логи. Если ошибка сохраняется, посмотрите wp-content/debug.log при включённом WP_DEBUG для точного места вызова.
7. Обновите ядро и темы. Убедитесь, что используете совместимую версию WordPress 6.x и актуальные темы/плагины. Это минимизирует риски конфликтов в будущем.
Следуя этим шагам, вы быстро устраняете Fatal error: Call to undefined function wp_kses и обеспечиваете стабильную работу вашего WordPress‑сайта.
Рабочий код
// 1. Подключаем core WordPress, если он не подключён в вашем плагине
if ( ! function_exists( 'wp_kses' ) ) {
// В WordPress это функция из wp-includes/kses.php
require_once ABSPATH . 'wp-includes/kses.php';
}
// 2. Пример безопасной вывода пользовательского контента
$user_input = $_POST[ 'comment' ] ?? '';
$allowed_html = [
'a' => [ 'href' => [], 'title' => [] ],
'br' => [],
'em' => [],
'strong' => [],
];
$sanitized = wp_kses( $user_input, $allowed_html );
echo $sanitized;
Типичные ошибки
- Подключение функции wp_kses из неправильного пути (например, wp-core/kses.php вместо wp-includes/kses.php).
- Отключённый autoload WordPress в кастомных скриптах – забыли подключить wp-load.php.
- Переопределение функции wp_kses в другом плагине без проверки существования.
- Использование wp_kses в теме до полной загрузки WordPress (до wp_head).
FAQ
Как проверить, что wp_kses подключён?
Вызовите var_dump( function_exists( ‘wp_kses’ ) ); – должно вернуть bool(true). Если false, подключайте wp-includes/kses.php вручную.
Можно ли использовать wp_kses в пользовательском плагине без загрузки WordPress?
Нет, wp_kses зависит от ядра. В кастомных скриптах подключайте wp-load.php, чтобы получить все функции.
Что делать, если после подключения ошибка всё ещё появляется?
Проверьте, нет ли конфликтов с другими плагинами, которые переопределяют wp_kses. Отключите их и проверьте изолированно.
Заключение и чек‑лист
- Убедитесь, что wp-includes/kses.php подключён.
- Проверяйте наличие функции через function_exists перед использованием.
- Не переопределяйте wp_kses без проверки.
- Используйте wp_kses только после полной загрузки WordPress.
- Периодически обновляйте ядро WordPress, чтобы избежать конфликтов.
