При переходе сайта на HTTPS важно обеспечить корректную работу всех AJAX-запросов и REST API вызовов внутри WordPress. Часто возникает проблема смешанного контента (mixed content), когда часть запросов идёт по HTTP, а не по HTTPS, что приводит к ошибкам в консоли браузера и нарушению безопасности.
Почему возникают ошибки смешанного контента в AJAX и REST API запросах WordPress
Ошибки смешанного контента появляются, если URL для AJAX или REST API запросов формируется с протоколом HTTP, а страница загружается по HTTPS. Это может случаться из-за жёстко прописанных ссылок в скриптах, неправильных настроек сайта или некорректной работы плагинов.
Например, при использовании функции admin_url('admin-ajax.php') или REST API URL, если в настройках WordPress указан HTTP, то эти запросы будут строиться с незащищённым протоколом.
Результатом станут предупреждения в браузере, а иногда и блокировка запросов, что ухудшает пользовательский опыт и безопасность.
Проверка и исправление URL для AJAX-запросов в WordPress
Первым шагом убедитесь, что в настройках WordPress (Настройки — Общие) прописаны корректные адреса сайта и WordPress с протоколом https://
Для гарантированной работы AJAX-запросов используйте функцию wpssl_admin_url_ajax для формирования правильного пути:
function wpssl_admin_url_ajax() {
return admin_url('admin-ajax.php', 'https');
}
Замените вызовы admin_url('admin-ajax.php') на wpssl_admin_url_ajax() в своих скриптах и плагинах.
Также при локализации скриптов через wp_localize_script передавайте AJAX URL с HTTPS:
wp_localize_script('my-script', 'MyAjax', [
'ajax_url' => wpssl_admin_url_ajax(),
]);
Исправление URL для REST API запросов в WordPress
По умолчанию REST API URL строится через rest_url(). Чтобы убедиться, что ссылки идут с HTTPS, используйте следующий фильтр:
add_filter('rest_url', function($url) {
return preg_replace('/^http:/', 'https:', $url);
});
Если REST API используется в JavaScript, убедитесь, что базовый URL передаётся с HTTPS, например:
wp_localize_script('my-rest-script', 'MyRest', [
'root' => esc_url_raw(rest_url()),
]);
При необходимости можно дополнительно проверить, что site_url() и home_url() возвращают HTTPS.
Примеры плагинов для управления SSL и смешанным контентом в WordPress
Для автоматизации решения проблем смешанного контента и работы с SSL можно использовать плагины, совместимые с вашей тематикой:
- Clearfy Pro — помогает оптимизировать и исправить проблемы с URL, включая SSL.
- WPRemark — улучшает работу REST API и AJAX с учётом безопасности.
Эти плагины позволяют автоматически подменять URL и устранять смешанный контент без ручного вмешательства.
Дополнительные советы по устранению проблем смешанного контента в AJAX и REST API
1. Проверьте, что в базе данных WordPress все ссылки заменены на https://. Для этого можно использовать плагин Clearfy Pro или WP CLI команду search-replace.
2. Убедитесь, что в шаблонах и плагинах не используются абсолютные URL с http://.
3. При работе с кэшированием проверьте, что кэш правильно отдаёт версии с HTTPS.
4. Используйте инструменты разработчика браузера для отслеживания запросов и выявления источников смешанного контента.
Как вручную исправить AJAX и REST API в custom скриптах
Если вы пишете собственные JavaScript решения, обязательно используйте динамическое получение URL через PHP, чтобы гарантировать HTTPS:
function wpssl_enqueue_scripts() {
wp_enqueue_script('custom-ajax', get_template_directory_uri() . '/js/custom-ajax.js', ['jquery'], null, true);
wp_localize_script('custom-ajax', 'wpsslData', [
'ajax_url' => wpssl_admin_url_ajax(),
'rest_url' => esc_url_raw(rest_url()),
]);
}
add_action('wp_enqueue_scripts', 'wpssl_enqueue_scripts');
В JavaScript обращайтесь к wpsslData.ajax_url и wpsslData.rest_url — они гарантированно будут с HTTPS.
Таким образом, продуманная настройка внутренних URL для AJAX и REST API запросов в WordPress поможет избежать многих ошибок смешанного контента и повысит безопасность сайта с SSL.