Was macht l10n.js in WordPress 3.1? Und wie entferne ich es?

8

Ich habe gerade WP 3.1 Beta 2 auf meinem Testserver installiert. Ich habe festgestellt, dass es mit einer neuen l10n.jsDatei geliefert wird, die automatisch in den Header eingefügt wird.

Ich habe ein bisschen gegraben und es hat etwas mit Lokalisierung zu tun. Ich vermute, dass viele Leute dies nicht benutzen, also frage ich mich, wie ich es entfernen könnte?

Wenn es wichtig ist, es nicht zu entfernen, lassen Sie es mich bitte ebenfalls wissen.

Sahas Katta
quelle

Antworten:

12

Es enthält die convertEntities()Funktion, die (wie der Name schon sagt) HTML-Entitäten in ihren tatsächlichen Wert konvertiert. Es wird hauptsächlich für Skripte verwendet, die mithilfe von Lokalisierungsdaten von PHP an die JS-Seite senden wp_localize_script(). Suchen Sie einfach l10n_print_afterin der Codebasis nach und Sie sehen es oft.

Die Daten, die Sie hinzufügen, werden wp_localize_script()vor dem zu übersetzenden Skript hinzugefügt (dies muss der Fall sein, da dort darauf verwiesen wird). Wenn Sie jedoch einen Skriptverketter verwenden (Sie haben also nur eine Anforderung, die alle verwendeten JS-Dateien zurückgibt), wird diese eine Datei auch nach allen lokalisierten Daten aufgerufen - sie ist jetzt convertEntities()jedoch nicht definiert, wann wir sie benötigen. Aus diesem Grund wird diese Funktion von der allgemeinen utils.jsDatei abgespalten und oben mit hoher Priorität hinzugefügt.

Aus diesem Grund sollten Sie es nicht entfernen: Alle Skripte, die übersetzbare Zeichenfolgen verwenden, verwenden es (auch wenn sie noch auf Englisch sind), und Sie können Orte aufbrechen, die noch Entitäten haben.

Jan Fabry
quelle
1
Danke, dass du so gut ausgearbeitet hast! :) Habe aber noch ein paar Fragen. Mein Hauptanliegen ist es, nur eine weitere unnötige Anfrage für jeden Benutzer am Frontend hinzuzufügen. Die einzigen JS-Benutzer sehen meine eigenen einfachen scripts.jsund jquery. Es macht mir nichts aus, wenn l10n im WP-Dashboard angezeigt wird, aber die Site, an der ich arbeite, hat viel Verkehr und ich bin sehr wählerisch, wenn es darum geht, alles zu optimieren. Jemand erwähnte eine Admin-Leiste als Ursache, aber nur wenige Autoren für die Site. Es ist mir egal, ob es sie betrifft, ich möchte nur nicht, dass das den Rest der Seite verlangsamt. Was schlagen Sie vor?
Sahas Katta
1
Es sieht also so aus , als würde das Laden wp_register_scriptausgelöst l10n.js, selbst wenn ich .jsNULL Dateien in die Warteschlange gestellt habe. Es macht mir nichts aus, wenn es für Autoren geladen wird, die wenig Verkehr haben, aber es wird auf öffentlichen Seiten für regelmäßige Besucher geladen, selbst wenn ich ihnen nicht diene javascript. Selbst wenn ich ein Skript wie jquerydieses brauchen würde, sollte es nicht davon abhängen müssen utils.js. Zumindest für das Frontend war das in der Vergangenheit noch nie der Fall.
Sahas Katta
4
if ( !is_admin() ) {
function my_init_method() {
wp_deregister_script( 'l10n' );
}
add_action('init', 'my_init_method'); 
}

Verwenden Sie den obigen Code, um l10n.js in function.php abzumelden

ZHAO Xudong
quelle
1

Sieht so aus, als wäre es enthalten, wenn Sie das Skript "Kommentar-Antwort" in die Warteschlange stellen. Beachten Sie, dass Sie wahrscheinlich sicherstellen möchten, dass "Kommentar-Antwort" nur auf Seiten geladen wird, auf denen Kommentare aktiviert sein könnten (z. B. is_singular()vor dem Einreihen des Skripts überprüfen ).

mtekk
quelle
Hmm, ich glaube nicht, dass es etwas mit dem comment-replyDrehbuch zu tun hat . Ich habe nicht, dass es im Moment überhaupt auf meiner Testseite eingekerbt ist. Es erscheint auf jeder Seite der Website. Ich habe sogar zum Testen wieder auf WP 3.0.3 umgestellt und es geht weg. Kommt zurück, wenn ich die neue 3.1 Beta 2
starte
Ich sehe es nur auf Seiten, die sich comment-replyauf beiden Testbeds in der Warteschlange befinden, auf denen die SVN-Trunk-Version von WordPress ausgeführt wird.
Mtekk
1

Ich habe bei meiner Installation festgestellt, dass dieses Skript neben der neuen Admin-Leiste geladen wurde. Durch das Entfernen der Admin-Leiste wurden die l10n.js für mich entfernt (aber ich denke, Jans Antwort entspricht eher der Beantwortung des "Warum").

Das Entfernen der Stange war einfach.

remove_action( 'init', 'wp_admin_bar_init' );

Dies geht nicht wirklich auf die Frage ein (wie aus den anderen Antworten hervorgeht), aber falls jemand diese schreckliche Leiste entfernen möchte, gehen Sie wie oben beschrieben vor.

t31os
quelle
Hmm, etwas anderes in meinem Code löst es ebenfalls aus. Ich habe mit just ein super einfaches Thema erstellt header/footer/index/sidebar.phpund diese Aktion zum Entfernen hat das Problem gelöst. Aber bei meinem regulären Thema wird es immer noch geladen, auch wenn ich alle Warteschlangen entferne. Ich habe NULL Javascript in WP Kopf / Fußzeile abgesehen von Google Analytics, das sowieso fest in der Vorlage codiert ist.
Sahas Katta
1
Wenn das Standarddesign aktiviert ist, keine Plugins (oder nur minimale), werden beim Entfernen der Admin-Leiste absolut keine Skripte auf der Vorderseite geladen. Ich denke, Jan hat einige wichtige Informationen darüber veröffentlicht, wann und warum dieses Skript aufgerufen wird (ich habe nur über das Entfernen gesprochen und veröffentlicht, was ich für funktioniert befunden habe).
t31os
Okay, hier ist, was ich nach ein bisschen mehr Experimentieren gefunden habe. Ich hatte einige wp_register_scriptAussagen in meinem functions.php. Das wird l10n.jsauch dann angezeigt, wenn ich keine .jsDateien in die Warteschlange stelle . Ich habe auch die Admin-Leiste deaktiviert!
Sahas Katta
1

So entfernen Sie es:

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

Drop in functions.php oder was auch immer (Plugin, etc.)

Funktioniert bei mir.


quelle
1

Um es zu entfernen, fügen Sie der Datei functions.php Ihres Themas Folgendes hinzu.

wp_deregister_script ('l10n');


quelle
0

Die Entwicklerquelle für die Datei hat folgende Beschreibung:

// Wird verwendet, um sicherzustellen, dass die in L10N-Zeichenfolgen verwendeten Entitäten korrekt sind

und Commit Note sagt:

Verschieben Sie die l10n-Hilfsfunktion in eine separate js-Datei, damit wir sie immer zuerst ausgeben können.

Ich hatte noch nicht mit 3.1 gespielt, bin mir also nicht sicher, was es auf jeder Seite laden kann.

Selten
quelle
Ja, ich habe diese Datei gefunden, aber keine weiteren Details gefunden. Ich dachte, etwas Seltsames in meinem Thema würde es auslösen. Also habe ich das Standard-20-Thema ausprobiert und es hatte es auch. Es sieht so aus, als würde es wp_headautomatisch von WP v3.1
Sahas Katta
0

Ja, es wird von wp_head automatisch in das Thema geworfen ... Ich entferne es, indem ich den folgenden Code in die Datei functions.php des Themas setze

remove_action( 'wp_head', 'l10n' );

Jack
quelle