O que o l10n.js faz no WordPress 3.1? E como faço para removê-lo?

8

Acabei de instalar o WP 3.1 Beta 2 no meu servidor de teste. Notei que ele vem com um novo l10n.jsarquivo que é inserido automaticamente no cabeçalho.

Eu cavei um pouco e isso tem algo a ver com localização. Suponho que muitas pessoas não usam isso, então estou me perguntando como eu poderia removê-lo.

Se for importante não removê-lo, informe-me também.

Sahas Katta
fonte

Respostas:

12

Ele contém a convertEntities()função que (como o nome diz) converte entidades HTML em seu valor real. É usado principalmente para scripts que enviam dados de localização do PHP para o lado JS usando wp_localize_script(). Basta procurar l10n_print_afterna base de código e você a verá bastante.

Os dados que você adiciona wp_localize_script()são adicionados antes do script convertido (deve ser, porque é mencionado aqui). No entanto, se você usar um concatenador de script (para ter apenas uma solicitação que retorne todos os arquivos JS usados), esse arquivo também será chamado após todos os dados localizados - mas agora convertEntities()não será definido quando for necessário. Por esse motivo, essa função é separada do utils.jsarquivo geral e adicionada com alta prioridade na parte superior.

Por esse motivo, você não deve removê-lo: todos os scripts que usam seqüências de caracteres traduzíveis o usam (mesmo que ainda estejam em inglês), e você pode quebrar lugares que ainda possuem entidades.

Jan Fabry
fonte
11
Obrigado por elaborar tão bem! :) Ainda tenho algumas perguntas. Minha principal preocupação é apenas adicionar outra solicitação desnecessária para cada usuário no front-end. Os únicos usuários que JS veem são os meus scripts.jse simples jquery. Não me importo que l10n apareça no WP Dashboard, mas o site em que estou trabalhando obtém uma grande quantidade de tráfego e estou sendo muito exigente em manter tudo otimizado. Alguém mencionou uma barra de administrador como a causa, mas apenas alguns autores para o site. Eu não me importo se isso os afeta, só não quero que isso larde o resto do site. O que você sugere fazer?
perfil completo de Sahas Katta
11
Parece que wp_register_scriptestá sendo l10n.jscarregado para carregar, mesmo que eu tenha .jsarquivos ZERO na fila. Não me importo se isso carrega para autores com pouco tráfego, mas carrega em páginas públicas para visitantes regulares, mesmo que eu não sirva javascriptpara eles. Mesmo que eu precisasse de um script como jquery, não deveria depender disso utils.js. Isso nunca aconteceu no passado pelo front-end, pelo menos.
Sahas Katta
4
if ( !is_admin() ) {
function my_init_method() {
wp_deregister_script( 'l10n' );
}
add_action('init', 'my_init_method'); 
}

use o código acima para cancelar o registro de l10n.js em function.php

ZHAO Xudong
fonte
1

Parece que ele está incluído quando você enfileira o script 'comment-reply'. Observe que você provavelmente deseja garantir que 'comment-reply' seja carregado apenas em páginas que possam ter comentários ativados (por exemplo, verifique is_singular()antes de enfileirar o script).

mtekk
fonte
Hmm, acho que não tem nada a ver com o comment-replyscript. Na verdade, não tenho isso enfileirado no meu local de teste no momento. Ele aparece em toda e qualquer página do site. Eu até mudei de volta para o WP 3.0.3 para testar e ele desaparece. Volte se eu executar o novo 3.1 beta 2. #
Sahas Katta
Eu o vejo apenas nas páginas que estão comment-replyem fila nos meus bancos de testes executando a versão de tronco SVN do WordPress.
mtekk
1

Eu descobri na minha instalação que esse script foi carregado ao lado da nova barra de administração, se livrando da barra de administração do l10n.js para mim (mas acho que a resposta de Jan está mais alinhada com a resposta ao "porquê").

Remover a barra foi fácil ..

remove_action( 'init', 'wp_admin_bar_init' );

Na verdade, isso não aborda a questão (como evidenciado pelas outras respostas), mas no caso de alguém querer remover essa barra horrível, o acima é como você o faz.

t31os
fonte
Hmm, outra coisa no meu código também está ativando. Eu criei um tema super básico com just header/footer/index/sidebar.phpe que remover ação resolveu o problema. Mas no meu tema regular, mesmo que eu remova todos os enfileiramentos, ele continuará carregando. Eu tenho javascript ZERO no WP cabeça / rodapé, além do google analytics, que é codificado no modelo de qualquer maneira.
Sahas Katta
11
Com o tema padrão ativado, sem plugins (ou mínimo), não vejo absolutamente nenhum script carregado na frente quando removo a barra de administração. Eu acho que Jan postou algumas informações cruciais sobre quando e por que esse script é chamado (eu estava falando apenas sobre removê-lo e postou o que achei que funcionava).
T31os
Ok, então aqui está o que eu encontrei depois de um pouco mais de experiências. Eu tinha algumas wp_register_scriptdeclarações no meu functions.php. Isso dispara l10n.jspara aparecer mesmo se eu nunca colocar na fila nenhum .jsarquivo. Também tenho a barra de administração desativada!
Sahas Katta
1

Como removê- lo:

função kill_l10n () {
    if (! is_admin ())
        wp_deregister_script ('l10n');
}
add_action ('wp_print_scripts', 'kill_l10n');

Solte no functions.php ou o que for (plugin, etc.)

Funciona para mim.


fonte
1

Para removê-lo, adicione o seguinte ao arquivo functions.php do seu tema.

wp_deregister_script ('l10n');


fonte
0

A origem dos desenvolvedores para o arquivo tem a seguinte descrição:

// Usado para garantir que as entidades usadas nas strings L10N estejam corretas

e commit note diz:

Mova a função auxiliar l10n para um arquivo js separado, para que possamos sempre imprimi-la primeiro.

Eu ainda não tinha jogado com o 3.1, por isso não tenho certeza do que pode carregá-lo em todas as páginas.

Rarst
fonte
Sim, encontrei esse arquivo, mas não encontrei mais detalhes. Eu pensei que algo estranho no meu tema estava provocando isso. Então, eu tentei o tema padrão vinte e ele também. Parece que ele está jogado na wp_headautomaticamente por WP v3.1
Sahas Katta
0

Sim, ele é lançado dentro do tema por wp_head automaticamente ... Eu removo-o colocando o código abaixo nas funções do tema.php

remove_action( 'wp_head', 'l10n' );

Jack
fonte