web-dev-qa-db-ja.com

単一ページの言語を変更する

RTLに合わせた言語のワードプレスサイトがありますが、英語のページもあります。ただし、英語のテキストはRTL言語と一致しているため、これらのページはひどく見えます。句読点などは間違った側に表示されます。

1ページまたは複数のページに言語を設定するにはどうすればよいですか。

4
Null_Error

locale フィルタを使用すると、ロケールを明確に設定できます。現在のページを確認し、それに基づいて値を変更することができます。

add_filter('locale', 'change_my_locale');
function change_my_locale( $locale ) {
    if ( is_page('slug-here') ) {
        return 'en_US';
    }
    return $locale;
}
2
Jack Johansson

あなたはあなたのタスクを解決するためにlocaleフックを使うべきです。

これは後で定義するので、テーマに追加してis_page関数を使用することはできません。

そのため、 plugin または を作成する必要があります。この方法でURLを解析しながらplugin を使用する必要があります。

add_filter('locale', function($locale) {
    $path = trim($_SERVER['REQUEST_URI'], "/");

    // get last part as slug
    $arr = explode("/", $path);
    $slug = end($arr);

    if($slug === 'MY_SLUG')
      return 'ru_RU';

    return $locale;
});

関連回答: 実行時にロケールを変更しますか?

2
Anton Lukin

これは@ jack-johanssonによるソリューションのタイミングの問題に対する修正です。

add_action('wp', function() {
  if ( is_page('slug-here') ) {
    add_filter('locale', function( $locale ) {
      return 'en_US';
    });
  }
});
0
maxime schoeni