load_plugin_textdomain
PSR-4 を使用して、サービス クラス内から関数を使用して翻訳ファイルを読み込んでいたときに、同様の問題が発生しました。これは、dirname( plugin_basename( __FILE__ ) )
文字列が間違ったパスを返したことを意味していました。
- 正しいパスは相対パス
your-plugin/languages
です (ディレクトリから翻訳ファイルをロードしていると仮定します/languages
)。
- などの絶対パスは機能し
/var/www/html/wp-content/plugins/my-plugin/languages
ません。
私のプラグインファイル構造は次のようになります。
- my-plugin
- assets
- languages
- services
- Api
- Base
Translation.php
- ...
Plugin.php
- vendor
- views
composer.json
composer.lock
index.php
my-plugin.php
uninstall.php
私の翻訳サービスは/services/Base/
ディレクトリに配置されているため、これはうまくいきました:
$root = plugin_basename(dirname(__FILE__, 3));
load_plugin_textdomain( 'my-plugin', false, "$root/languages/");
init
また、 orの代わりにアクション フックをまったく使用せず、プラグインの最初に関数をplugins_loaded
起動しました。load_plugin_textdomain