¿Qué hace l10n.js en WordPress 3.1? ¿Y cómo lo elimino?

8

Acabo de instalar WP 3.1 Beta 2 en mi servidor de prueba. Noté que se envía con un nuevo l10n.jsarchivo que se inserta automáticamente en el encabezado.

Investigué un poco y tiene algo que ver con la localización. Supongo que muchas personas no usan esto, así que me pregunto cómo podría eliminarlo.

Si es importante no eliminarlo, házmelo saber también.

Sahas Katta
fuente

Respuestas:

12

Contiene la convertEntities()función que (como su nombre lo indica) convierte las entidades HTML a su valor real. Se utiliza principalmente para scripts que envían datos de localización desde PHP al lado JS mediante wp_localize_script(). Simplemente busque l10n_print_afteren la base del código y lo verá mucho.

Los datos que agregue wp_localize_script()se agregan antes del script que traduce (debe ser, porque allí se hace referencia). Sin embargo, si usa un concatenador de script (por lo que solo tiene una solicitud que devuelve todos los archivos JS usados), este archivo también se llamará después de todos los datos localizados, pero ahora convertEntities()no está definido cuando lo necesitamos. Por esta razón, esta función se divide del utils.jsarchivo general y se agrega con una alta prioridad en la parte superior.

Por esta razón, no debe eliminarlo: todos los scripts que usan cadenas traducibles lo usan (incluso si todavía están en inglés), y puede romper lugares que todavía tienen entidades.

Jan Fabry
fuente
1
Gracias por elaborar tan bien! :) Todavía tengo algunas preguntas sin embargo. Mi principal preocupación es simplemente agregar otra solicitud innecesaria para cada usuario en el front-end. Lo único que ven los usuarios de JS es mi propio simple scripts.jsy jquery. No me importa que aparezca en el Panel de control de WP, pero el sitio en el que estoy trabajando recibe una gran cantidad de tráfico y soy muy exigente con respecto a mantener todo optimizado. Alguien mencionó una barra de administración como la causa, pero solo unos pocos autores para el sitio. No me importa si les afecta, simplemente no quiero que eso ralentice el resto del sitio. ¿Qué sugieres hacer?
Sahas Katta
1
Parece que se wp_register_scriptestá l10n.jscargando incluso si tengo CERO .jsarchivos en cola. No me importa si se carga para los autores, que tienen poco tráfico, pero se carga en las páginas públicas para los visitantes habituales, incluso si no les sirvo javascript. Incluso si tuviera que necesitar un script como jquery, no debería depender de él utils.js. Nunca lo hizo en el pasado para el front-end al menos.
Sahas Katta
4
if ( !is_admin() ) {
function my_init_method() {
wp_deregister_script( 'l10n' );
}
add_action('init', 'my_init_method'); 
}

use el código anterior para cancelar el registro de l10n.js en function.php

ZHAO Xudong
fuente
1

Parece que se incluye cuando pone en cola el script 'comentario-respuesta'. Tenga en cuenta que probablemente quiera asegurarse de que 'comment-reply' se cargue solo en las páginas que puedan tener comentarios habilitados (por ejemplo, verifique is_singular()antes de poner en cola el script).

mtekk
fuente
Hmm, no creo que tenga nada que ver con el comment-replyguión. No tengo eso puesto en cola en mi sitio de prueba en realidad en este momento. Aparece en todas y cada una de las páginas del sitio. Incluso volví a WP 3.0.3 para probar y desaparece. Vuelve si ejecuto el nuevo 3.1 beta 2.
Sahas Katta
Solo lo veo en páginas que están en cola comment-replyen mis dos bancos de pruebas que ejecutan la versión troncal SVN de WordPress.
mtekk
1

En mi instalación, descubrí que este script se cargó junto con la nueva barra de administración, al deshacerme de la barra de administración se deshizo de l10n.js por mí (pero creo que la respuesta de Jan está más en línea con la respuesta al "por qué").

Quitar la barra fue fácil ...

remove_action( 'init', 'wp_admin_bar_init' );

En realidad, esto no aborda la pregunta (como lo demuestran las otras respuestas), pero en caso de que alguien quiera eliminar esa barra horrible, lo anterior es cómo lo hace.

t31os
fuente
Hmm, algo más en mi código también lo está activando. Creé un tema súper básico con solo header/footer/index/sidebar.phpy esa acción de eliminar resolvió el problema. Pero en mi tema habitual, incluso si elimino todas las colas, sigue cargando. Tengo cero JavaScript en el encabezado / pie de página de WP, aparte de Google Analytics, que de todos modos está codificado en la plantilla.
Sahas Katta
1
Con el tema predeterminado habilitado, sin complementos (o mínimo), no veo absolutamente ninguna secuencia de comandos cargada cuando elimino la barra de administración. Creo que Jan ha publicado información crucial sobre cuándo y por qué se llama a este script (solo estaba hablando con respecto a eliminarlo, y publiqué lo que encontré que funcionó).
t31os
Bien, esto es lo que encontré después de experimentar un poco más. Tenía algunas wp_register_scriptdeclaraciones en mi functions.php. Eso se activa l10n.jsincluso si nunca pongo en cola ningún .jsarchivo. ¡También tengo la barra de administración desactivada!
Sahas Katta
1

Cómo quitarlo :

función kill_l10n () {
    if (! is_admin ())
        wp_deregister_script ('l10n');
}
add_action ('wp_print_scripts', 'kill_l10n');

Suelte en functions.php o lo que sea (complemento, etc.)

Funciona para mi.


fuente
1

Para eliminarlo, agregue lo siguiente al archivo functions.php de su tema.

wp_deregister_script ('l10n');


fuente
0

La fuente del desarrollador para el archivo tiene la siguiente descripción:

// Se utiliza para garantizar que las entidades utilizadas en las cadenas L10N sean correctas

y la nota de compromiso dice:

Mueva la función auxiliar l10n a un archivo js separado para que siempre podamos generarla primero.

Todavía no había jugado con 3.1, así que no estoy seguro de qué puede hacer que se cargue en cada página.

Rarst
fuente
Sí, encontré ese archivo, pero no encontré más detalles. Pensé que algo extraño en mi tema lo estaba desencadenando. Así que probé el tema predeterminado de twentyten y también lo tenía. Parece que fue lanzado wp_headautomáticamente por WP v3.1
Sahas Katta
0

Sí, wp_head lo lanza dentro del tema automáticamente ... Lo elimino colocando el código a continuación en las funciones del tema.php

remove_action( 'wp_head', 'l10n' );

Jack
fuente