東京都府中市、九段下のWEB制作会社Maromaroのブログです

2021.02.01

Sasaki

WordPress プラグイン不要!でGutenbergを利用して、日本語・英語対応

今回は、Wordpressプラグインを利用しないGutenberg上で日本語・英語を同時入力できる対応についてです。

実案件の中、クライアント様から投稿画面に、日本語・英語が入力できるといいんだけどなあ・・・というご要望を頂いたので考えてみました!

通常、多言語展開できるプラグインを利用すると、言語切替のために、日本語と英語などで入力画面が切り替わりますよね。
機能的には問題ないのですが、入力忘れをしてしまう・・・という事が多く発生してしまいがちです。

本記事の方法は、そんな入力忘れをなくしつつ、プラグインレスというところが特徴でしょうか。

こんな事ができます

本記事の仕組みを利用すると、下記のように切り替わります(ざっくり)。
例えば、下記のようなテキストを設定すると・・・・
[[お知らせテスト|||Information Text]]

日本語では、
お知らせテスト

英語では、
Information Text
と、表示されるようになります。

[[日本語|||英語]]
のところは、適宜書き換えることで様々なパターンに対応が可能です。

functions.phpに必要な記述を行う


//Gutenbergのブロック表示時
add_filter('render_block', function ($blockContent, $block) {
  return maro_replace_tag($blockContent);
}, 10, 2);

//タイトルの書き換え
add_filter('the_title', function ($title) {
  $title = maro_replace_tag($title);
  return $title;
});

//YoastSEOプラグインを利用している場合のフック。 別途フィルターを追加する必要があるかもしれない。
add_filter('wpseo_title', function($title) {
  $title = maro_replace_tag($title);
  return $title;
});

//日本語・英語の文字列切り替え
function maro_replace_tag($str){
  preg_match("/\[\[(.+?)\]\]/su",$str,$match );
  if(!empty($match[0])){
    $regex = $match[1];
    $strings = explode('|||', $regex);
    if( count($strings) > 1 ){
      $locale = get_locale();
      if( $locale == "en_US" ){
        return maro_replace_tag(str_replace('[['.$regex.']]', $strings[1], $str));
      }else{
        return maro_replace_tag(str_replace('[['.$regex.']]', $strings[0], $str));
      }
    }
  }
  return $str;
}

 

記事投稿をしてみる

下記のように入力してみると・・・。


↓英語に切り替えた時


↓日本語に切り替えた時