Что делает l10n.js в WordPress 3.1 и как его удалить?

16 дек. 2010 г., 01:25:28
Просмотры: 16.1K
Голосов: 8

Я только что установил WP 3.1 Beta 2 на тестовый сервер. Заметил, что теперь в комплекте идет новый файл l10n.js, который автоматически добавляется в заголовок.

Немного покопался и выяснил, что он связан с локализацией. Полагаю, многим этот файл не нужен, поэтому интересуюсь - как его можно убрать?

Если его удаление может вызвать проблемы, пожалуйста, сообщите об этом.

0
Все ответы на вопрос 8
2
12

Он содержит функцию convertEntities(), которая (как следует из названия) преобразует HTML-сущности в их реальные значения. В основном она используется для скриптов, которые передают данные локализации из PHP в JavaScript с помощью wp_localize_script(). Просто найдите l10n_print_after в кодовой базе, и вы увидите, что она используется очень часто.

Данные, которые вы добавляете в wp_localize_script(), добавляются перед скриптом, который они переводят (это необходимо, потому что они на него ссылаются). Однако, если вы используете скрипт-конкатенатор (чтобы сделать только один запрос, который возвращает все используемые JS-файлы), этот файл также будет вызываться после всех локализованных данных — но теперь функция convertEntities() не определена, когда она нам нужна. По этой причине данная функция вынесена из общего файла utils.js и добавлена с высоким приоритетом в начало.

По этой причине не следует удалять её: все скрипты, использующие переводимые строки, используют её (даже если они всё ещё на английском), и вы можете сломать места, где остались HTML-сущности.

16 дек. 2010 г. 13:49:07
Комментарии

Спасибо за такое подробное объяснение! :) Однако у меня остались некоторые вопросы. Моя главная проблема заключается в добавлении еще одного ненужного запроса для каждого пользователя на фронтенде. Единственный JS, который видят пользователи — это мой простой scripts.js и jquery. Меня не беспокоит локализация в админке WordPress, но сайт, над которым я работаю, получает огромный трафик, и я очень требователен к оптимизации. Кто-то упомянул, что причиной может быть панель администратора, но авторов на сайте всего несколько. Мне не важно, если это повлияет на них, но я не хочу, чтобы это замедляло работу остальной части сайта. Что вы посоветуете сделать?

Sahas Katta Sahas Katta
17 дек. 2010 г. 09:54:25

Похоже, что wp_register_script вызывает загрузку l10n.js, даже если у меня НОЛЬ .js файлов в очереди. Меня не беспокоит, если он загружается для авторов, у которых мало трафика, но он загружается на публичных страницах для обычных посетителей, даже если я не отдаю им javascript. Даже если бы мне понадобился скрипт вроде jquery, он не должен зависеть от utils.js. По крайней мере, раньше на фронтенде такого не было.

Sahas Katta Sahas Katta
19 дек. 2010 г. 01:39:11
0
if ( !is_admin() ) {
function my_init_method() {
wp_deregister_script( 'l10n' );
}
add_action('init', 'my_init_method'); 
}

Используйте этот код для отмены регистрации l10n.js в файле functions.php

24 февр. 2011 г. 05:06:35
2

Похоже, что он подключается при добавлении в очередь скрипта 'comment-reply'. Обратите внимание, что желательно убедиться, что 'comment-reply' загружается только на страницах, где могут быть включены комментарии (например, проверьте is_singular() перед добавлением скрипта в очередь).

16 дек. 2010 г. 05:47:19
Комментарии

Хм, я не думаю, что это связано со скриптом comment-reply. На моем тестовом сайте он вообще не подключен в данный момент. Это появляется на каждой странице сайта. Я даже вернулся к WP 3.0.3 для проверки, и проблема исчезла. Возвращается, если я запускаю новую бета-версию 3.1.

Sahas Katta Sahas Katta
16 дек. 2010 г. 08:08:50

Я вижу это только на страницах, где подключается comment-reply, на обоих моих тестовых стендах, работающих на SVN-версии WordPress из trunk.

mtekk mtekk
16 дек. 2010 г. 21:44:40
3

Я обнаружил, что в моей установке этот скрипт загружался вместе с новой панелью администратора, и удаление панели администратора также избавило меня от l10n.js (хотя я думаю, что ответ Яна более точно отвечает на вопрос "почему").

Удаление панели было просто...

remove_action( 'init', 'wp_admin_bar_init' );

Это на самом деле не отвечает на вопрос (как видно из других ответов), но если кто-то захочет убрать эту ужасную панель, выше приведён способ, как это сделать..

16 дек. 2010 г. 13:15:05
Комментарии

Хм, что-то еще в моем коде тоже вызывает это. Я создал очень простую тему только с header/footer/index/sidebar.php, и это удаление действия решило проблему. Но в моей основной теме, даже если я удаляю все enqueue, скрипт все равно загружается. У меня ВООБЩЕ НЕТ JavaScript в head/footer WordPress, кроме Google Analytics, который встроен прямо в шаблон.

Sahas Katta Sahas Katta
17 дек. 2010 г. 09:49:31

При включенной стандартной теме, без плагинов (или с минимумом), я не вижу НИКАКИХ скриптов на фронтенде, когда убираю админ-бар. Думаю, Jan предоставил важную информацию о том, когда и почему этот скрипт вызывается (я говорил только о его удалении и поделился тем, что сработало в моем случае).

t31os t31os
17 дек. 2010 г. 11:50:28

Ладно, вот что я обнаружил после дополнительных экспериментов. У меня были некоторые wp_register_script в functions.php. Это вызывает появление l10n.js, даже если я никогда не подключаю никакие .js файлы. Админ-бар у меня тоже отключен!

Sahas Katta Sahas Katta
19 дек. 2010 г. 01:32:27
0

Как удалить это:

function kill_l10n() {
    if ( !is_admin() )
        wp_deregister_script( 'l10n' );
}
add_action( 'wp_print_scripts', 'kill_l10n' );

Добавьте в functions.php или куда-либо ещё (плагин и т.д.)

Работает у меня.

28 февр. 2011 г. 10:15:57
0

Чтобы удалить его, добавьте следующий код в файл functions.php вашей темы.

wp_deregister_script('l10n');

18 апр. 2011 г. 14:23:05
1

Исходный код разработчиков для файла содержит следующее описание:

//Используется для проверки корректности Entities в строках L10N

и примечание к коммиту гласит:

Переносим вспомогательную функцию l10n в отдельный js-файл, чтобы можно было всегда выводить его первым.

Я ещё не работал с 3.1, поэтому не уверен, что заставляет его загружаться на каждой странице.

16 дек. 2010 г. 08:38:21
Комментарии

Да, я нашел этот файл, но не обнаружил больше деталей. Я подумал, что что-то странное в моей теме вызывает это. Поэтому я попробовал стандартную тему twentyten, и там это тоже было. Похоже, это автоматически добавляется в wp_head в WP v3.1

Sahas Katta Sahas Katta
16 дек. 2010 г. 11:37:25
0

Да, он автоматически добавляется в тему через wp_head... Я удаляю его, размещая следующий код в functions.php темы:

remove_action( 'wp_head', 'l10n' );

15 окт. 2011 г. 07:44:55