web-dev-qa-db-ja.com

load_child_theme_textdomainがfunction.phpで機能しない

ローカライズされていない子テーマがあります。だから私はfunction.phpでこれを追加しました

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

うまくいきません。私は何時間も検索しました、そして私は誰かがこれをheader.phpの先頭に置くことを勧めました

load_child_theme_textdomain( 'mytheme', get_stylesheet_directory() . '/languages' );

突然それは働き始めました。

問題は解決されましたが、なぜ正当な方法がうまくいかなかったのか私はまだ興味がありません。説明がありますか。

1
borayeris

まず第一に、あなたの言語を気にしてください。あなたのコードに誓い言葉がある場合は、コードを投稿する前にそれを削除してください。

さて、あなたの質問にたどり着くために、あなたのコードには何の問題もありません。それは健全に見えます。どの親テーマを使っていますか?

ローカライズされていない子テーマがあります

あなたはあなたの文字列がどのようにローカライズされているか見ておくべきです。あなたの言語ファイルの命名も見なければなりません。行って、 コーデックス を見てください。常に覚えておいてください。参照としてコーデックスを使用してください。また、この チュートリアル を参照して洞察を得ることもできます。

それとは別にあなたが行ってもいいはずです

編集

私はこの回答の最初の部分を他の人の参考にしたいと思います。あなたの質問は私を困惑させました、そしてそれは稲妻のように私を襲いました、私は同じく最も明白な間違いを逃しました、あなたのテンプレートは間違って命名されます。

function.phpfunctions.phpには大きな違いがあります。 Wordpressは自動的にfunctions.phpを認識し、それをテーマのメイン関数テンプレートとして使用します。このテンプレートは呼び出す必要はありません。一方、function.phpは単なる階層のないテンプレートです。このテンプレートはあなたのテーマの中で何らかの方法で呼び出されなければなりませんので、wordpressはそのテンプレートをいつ、そしてどのように使うべきかを知るでしょう。

それで、あなたの質問では、単にあなたのfunction.phpfunctions.phpに改名してください。

2
Pieter Goosen