So überschreiben Sie Sprachdateien in WP-Inhalten / Sprachen / Themen mit untergeordnetem Thema

Ich möchte ein Kinderthema für TwentyFifteen Theme erstellen, das viele Dinge anpassen wird, einschließlich der Übersetzung. Wenn ich WordPress in meiner Sprache (Farsi) installiere, enthält es TwentyFifteen Sprachdateien in wp-content/languages/themes

Wenn ich also einen languages in meinem Kind-Thema load_theme_textdomain( 'twentyfifteen', get_stylesheet_directory() . '/languages' ) und ihm angepasste Sprachdateien hinzufüge und load_theme_textdomain( 'twentyfifteen', get_stylesheet_directory() . '/languages' ) zu den functions.php meines load_theme_textdomain( 'twentyfifteen', get_stylesheet_directory() . '/languages' ) Themas hinzufüge, functions.php meine angepassten Sprachdateien nicht geladen Stattdessen werden die Dateien in wp-content/languages/themes geladen. Was kann ich tun, um diese Dateien zu überschreiben?

Solutions Collecting From Web of "So überschreiben Sie Sprachdateien in WP-Inhalten / Sprachen / Themen mit untergeordnetem Thema"

Seit WP 4.6 load_theme_textdomain() (und folglich load_child_theme_textdomain() ) .mo-Dateien, die von der Online-Übersetzungsplattform von WP (translate.wordpress.org) heruntergeladen wurden. Aufgrund eines neuen Codes ( hier in Zeile 769 ) ignorieren diese functionen Ihre lokalen .mo-Dateien vollständig, wenn die Textdomäne im allgemeinen Sprachenverzeichnis gefunden wird .

Sie können jedoch die grundlegendere function load_textdomain() verwenden, um Ihre .mo-Datei direkt zu laden und Strings von der ursprünglichen Domäne zu überschreiben:

 $domain = 'textdomain-to-override'; $path = get_stylesheet_directory() . '/languages/'; // adjust to the location of your .mo file $locale = apply_filters( 'theme_locale', get_locale(), $domain ); load_textdomain( $domain, $path . $locale . '.mo' ); 

Hier ist ein Zitat aus der Quelle von load_textdomain (in WP 4.6):

Wenn die Textdomäne bereits vorhanden ist, werden die Übersetzungen zusammengeführt. Wenn beide Sätze die gleiche Zeichenfolge haben, wird die Übersetzung vom ursprünglichen Wert übernommen.

Mit anderen Worten, um Ihre Übersetzung von TwentyFifteen zu überschreiben, müssen Sie sicherstellen, dass Ihre Mo-Dateien zuerst geladen werden, so dass sie als “das Original” angesehen werden. Dazu können Sie die Tatsache verwenden, dass die functions.php eines untergeordneten Themas vor die des übergeordneten geladen wird.

Suchen Sie im übergeordneten Thema nach der function, die die Textdomäne lädt. Es verwendet wahrscheinlich den after_setup_theme Hook. Stellen Sie sicher, dass Ihr untergeordnetes Thema dieselbe Textdomäne wie das übergeordnete Element verwendet. Laden Sie dann Ihre Textdomäne mit load_child_theme_textdomain auf demselben Hook, aber mit einer höheren Priorität .