Что l10n.js делает в WordPress 3.1? И как мне это убрать?

8

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

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

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

Сахас Катта
источник

Ответы:

12

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

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

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

Ян Фабри
источник
1
Спасибо за разработку так хорошо! :) Есть еще вопросы, хотя. Моя главная задача - просто добавить еще один ненужный запрос для каждого пользователя в интерфейсе. Только JS пользователи видят мой собственный простой scripts.jsи jquery. Я не возражаю против появления l10n в WP Dashboard, но сайт, на котором я работаю, получает большой объем трафика, и я очень требователен к тому, чтобы все оптимизировать. Кто-то упомянул админ-бар в качестве причины, но только несколько авторов для сайта. Мне все равно, влияет ли это на них, просто не хочу, чтобы это замедляло работу остальной части сайта. Что вы предлагаете делать?
Сахас Катта
1
Таким образом, похоже, wp_register_scriptзапускается l10n.jsзагрузка, даже если у меня есть ZERO .jsфайлы в очереди. Я не против, если он загружается для авторов с низким трафиком, но загружается на общедоступных страницах для постоянных посетителей, даже если я им не javascriptотвечаю. Даже если бы мне нужен был такой скрипт jquery, он не должен зависеть от utils.js. Это никогда не делалось в прошлом для внешнего интерфейса, по крайней мере.
Сахас Катта
4
if ( !is_admin() ) {
function my_init_method() {
wp_deregister_script( 'l10n' );
}
add_action('init', 'my_init_method'); 
}

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

Чжао Сюдун
источник
1

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

mtekk
источник
Хм, я не думаю, что это имеет какое-либо отношение к comment-replyсценарию. У меня нет того, что это на самом деле ставится в очередь на моем тестовом участке на данный момент. Он появляется на любой странице сайта. Я даже переключился обратно на WP 3.0.3 для тестирования, и он уходит. Возвращается, если я запускаю новую 3.1 beta 2.
Sahas Katta
Я вижу это только на страницах, которые ставятся в очередь comment-replyна обоих моих испытательных стендах, использующих магистральную версию WordPress SVN.
mtekk
1

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

Снять планку было легко ..

remove_action( 'init', 'wp_admin_bar_init' );

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

t31os
источник
Хм, что-то еще в моем коде также вызывает это. Я создал супер базовую тему с just header/footer/index/sidebar.phpи что действие по удалению решило проблему. Но в моей обычной теме, даже если я удаляю все очереди, она все равно продолжает загружаться. У меня есть ноль JavaScript в WP верхний / нижний колонтитул, кроме Google Analytics, который в любом случае жестко запрограммирован в шаблон.
Сахас Катта
1
С включенной темой по умолчанию, без плагинов (или минимальных), я не вижу абсолютно никаких скриптов, загруженных лицевой стороной, когда я удаляю панель администратора. Я думаю, что Ян опубликовал некоторую важную информацию относительно того, когда и почему этот сценарий называется (я говорил только о его удалении и опубликовал то, что я нашел сработавшим).
t31os
Итак, вот что я нашел после еще нескольких экспериментов. У меня были некоторые wp_register_scriptзаявления в моем functions.php. Это вызывает l10n.jsпоявление, даже если я никогда не ставлю в очередь какие-либо .jsфайлы. У меня также отключена панель администратора!
Сахас Катта
1

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

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

Вставьте файл functions.php или что-то еще (плагин и т. Д.)

Работает для меня.


источник
1

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

wp_deregister_script ( 'l10n');


источник
0

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

// Используется для проверки правильности сущностей, используемых в строках L10N

и коммит записка говорит:

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

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

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

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

remove_action( 'wp_head', 'l10n' );

Джек
источник