Как заставить WordPress использовать JSON_UNESCAPED_UNICODE?

Всем привет!

Давно заметил, что WordPress кодирует кириллические строки крайне не рационально, в результате получаются скрипты на тысячи строк. Вот небольшой пример такого скрипта:

jQuery(document).ready(function(jQuery){jQuery.datepicker.setDefaults({"closeText":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c","currentText":"\u0421\u0435\u0433\u043e\u0434\u043d\u044f","monthNames":["\u042f\u043d\u0432\u0430\u0440\u044c","\u0424\u0435\u0432\u0440\u0430\u043b\u044c","\u041c\u0430\u0440\u0442","\u0410\u043f\u0440\u0435\u043b\u044c","\u041c\u0430\u0439","\u0418\u044e\u043d\u044c","\u0418\u044e\u043b\u044c","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c","\u041e\u043a\u0442\u044f\u0431\u0440\u044c","\u041d\u043e\u044f\u0431\u0440\u044c","\u0414\u0435\u043a\u0430\u0431\u0440\u044c"],"monthNamesShort":["\u042f\u043d\u0432","\u0424\u0435\u0432","\u041c\u0430\u0440","\u0410\u043f\u0440","\u041c\u0430\u0439","\u0418\u044e\u043d","\u0418\u044e\u043b","\u0410\u0432\u0433","\u0421\u0435\u043d","\u041e\u043a\u0442","\u041d\u043e\u044f","\u0414\u0435\u043a"],"nextText":"\u0414\u0430\u043b\u0435\u0435","prevText":"\u041d\u0430\u0437\u0430\u0434","dayNames":["\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435","\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a","\u0412\u0442\u043e\u0440\u043d\u0438\u043a","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440\u0433","\u041f\u044f\u0442\u043d\u0438\u0446\u0430","\u0421\u0443\u0431\u0431\u043e\u0442\u0430"],"dayNamesShort":["\u0412\u0441","\u041f\u043d","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041f\u0442","\u0421\u0431"],"dayNamesMin":["\u0412\u0441","\u041f\u043d","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041f\u0442","\u0421\u0431"],"dateFormat":"dd.mm.yy","firstDay":1,"isRTL":false});});


Как видите, слово "Закрыть" оно выводит как \u0417\u0430\u043a\u0440\u044b\u0442\u044c.

Я подозреваю, что дело в функции wp_json_encode(), а точнее в отсутствии JSON_UNESCAPED_UNICODE, но не уверен. Если что, в настройка прописано define('DB_CHARSET', 'utf8');.

Есть ли какой-нибудь способ заставить WordPress выводить UTF-8 без кодировки символов? Что для этого нужно поменять или прописать?
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
@alexalexes
Это параметр для подключения к базе данных, в какой кодировке писать/читать из/в нее. К обмену сервера и клиента он не относится.
define('DB_CHARSET', 'utf8');
Попробуйте определить флаг JSON_UNESCAPED_UNICODE как значение по умолчанию в описании функции (предположительно, файл wp-includes/functions.php).
Если при формировании интересуемого JSON ответа со стороны wp не используется этот параметр, то сработает то, что по умолчанию.
function wp_json_encode( $data, $options = JSON_UNESCAPED_UNICODE, $depth = 512 ) 
{
...

PS: С WP не работал, пробуйте на свой риск.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы