Seltsames Verhalten functions.php bei Sprachdatei in Child Theme

  • http://www.flohfernsehen.de: Endlich habe ich verstanden, wie ich die Sprachdatei in mein Child Theme einbinden sollte. Nach Erstellung eines Ordners "languages" im Ordner meines Child Themes yoko-changes (basierend auf Theme yoko) habe ich die überarbeiteten Sprachdateien .mo (und .po als Sicherheitskopie) in dieses Verzeichnis "languages" gepackt. Dann habe ich eine neue Funktion in meiner functions.php vom Child Theme mit einem Hook erstellt:

    Code
    function my_child_theme_setup() {  load_child_theme_textdomain('yoko', get_stylesheet_directory().'/languages');
    } 
    add_action( 'after_setup_theme', 'my_child_theme_setup' );

    Sollte doch alles in Ordnung sein, nicht wahr? Ist es aber nicht! Nach wie vor wird die alte Sprachdatei vom Parent Theme genutzt!

    Selbst Änderungen der Priorität von add_action (oder in Verzweiflung von load...) helfen nicht.

    Jetzt passiert Voodoo: Es gibt eine Problemlösung, die ich allerdings lieber vermeiden möchte - durch Verzicht auf Kapselung in eine Funktion und stattdessen Direktausführung lässt sich die richtige Sprachdatei nutzen:

    Code
    load_child_theme_textdomain('yoko', get_stylesheet_directory().'/languages');

    Schon der Austausch von stylesheet gegen template würde das Ergebnis wieder zerstören. In functions.php vom Parent Theme wurde für diese Angelegenheit ebenfalls auf Def. einer Funktion verzichtet:

    Code
    /**
     * Make theme available for translation
     * Translations can be filed in the /languages/ directory
     */
    load_theme_textdomain( 'yoko', get_template_directory() . '/languages' );

    Ich würde gerne hübsch sauber den nötigen Code in eine Funktion stecken, aber das scheint nicht zu klappen? Bereitet vielleicht after_setup_theme in meinem Theme diese Schwierigkeiten? Allerdings habe ich bereits andere Hooks wie init versucht: Nichts! Bisher läuft es nur mit der Direktausführung, also ohne Aufbau einer neuen Funktion.

    Notfalls kann ich damit leben, aber vielleicht erkennt jemand meinen Denkfehler?

    Einmal editiert, zuletzt von DeepSpace9 (21. Juni 2015 um 19:44)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • nimm mal den code in die function.php

    Zitat

    /* Sprachdatei Childtheme de_DE.mo */
    add_action( 'after_setup_theme', 'my_child_theme_setup' );
    function my_child_theme_setup() {
    load_child_theme_textdomain( 'yoko', get_stylesheet_directory() . '/languages' );
    }

  • Vielen Dank für die schnelle Rückmeldung! Bringt leider nicht die gewünschte Wirkung...

    Hätte mich auch gewundert, denn in PHP sollten nach meiner Kenntnis deine und meine Formulierung gleichwertig sein. Aber man hat natürlich schon Wunder bei der Programmierung erlebt... Ich bevorzuge meine Reihenfolge, denn es erscheint mir logisch, erst die Funktion zu definieren und anschließend die Wirkung add_action von dieser Funktion. Allerdings beachtet PHP diesen Zusammenhang nicht streng. Und die meisten bevorzugen wohl deine Vorgehensweise.

    Jedenfalls staune ich noch immer, dass der direkte Weg ohne Kapselung in eine Funktion zum Ziel führt. Vielelicht bin ich mit solchen Spitzfindigkeiten falsch hier im Forum. Jedenfalls ist mir aufgefallen, dass sich die User vornehm zurückhalten, wenn es um Child Themes oder gar um konkreten Code in PHP geht.

    Hingegen sorgen eher Fragen zu Plugins oder Design für Aufregung. Auch ich bin sehr an diesen Problemen interessiert, zumal ich nicht aus dem Development stamme und Wordpress erst jetzt erkunde. Allerdings ist es mir wichtig, meine Wordpress-Installationen sauber und nach aktuellen Regeln zu fahren. Ich bastele lieber stunden- oder sogar tagelang an meiner functions.php, als dass ich faule Plugins einbaue oder immer wieder meine Sprachdateien bei seltsamen Updates überschreiben lasse. Wenn ich alles wunschgemäß eingerichtet habe, würde mein System selbst im Dauerbetrieb reibungslos laufen, zumal ich mit disable_translation_updates.php automatische Updates der Übersetzungsdatei im Core verhindere.

    Vielleicht hat ja noch jemand eine Idee, wie ich zu meiner gewünschten Funktion in der functions.php komme?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!