owned mediaウェブ制作に役立つコンテンツを発信中!

WordPress翻訳プラグイン「WPML」でのサイト作成時に使えるTips

先日クライアントワークのWordPress案件で翻訳プラグインの「WPML」を使った機能を実装する機会があり、その時に使ったTipを備忘録として残しておきたいと思います。WordPressにはいろんな翻訳プラグインがあるようですが、このWPMLは有料ながらも、設定も簡単で多言語サイトが手軽に作成できるとの評判で、比較的よく使われるプラグインです。   多言語サイトを作成している時に、翻訳言語ごとの条件分岐や翻訳ページの情報などを取得したいケースもあると思います。そんな時に使える方法を下記にまとめていきます。   【翻訳設定情報のオブジェクト取得】
global $sitepress;
グローバル変数「$sitepress」には様々な翻訳設定に関する情報が含まれています。機能要件によっては使いたい情報を取得できるのではないでしょうか。   【現在表示中の言語を取得】
ICL_LANGUAGE_CODE
// もしくは 
$sitepress->get_current_language();
現在表示中の言語は上記のような形で取得できます。「ja」や「en」といった言語コードの形で値が返ってきます。   【デフォルトの言語を取得】
$sitepress->get_default_language();
同じようにデフォルトの言語を取得するには上記のように記述します。先ほどの処理と合わせることで翻訳済みのページかどうかをチェックできますね。   【言語ごとの条件分岐】
if ( ICL_LANGUAGE_CODE === 'ja' ) {
  echo '日本語です';
} else if ( ICL_LANGUAGE_CODE === 'en' ) {
  echo '英語です';
}
先ほどの表示中の言語を取得できることで、言語ごとに合わせた条件分岐も可能になります。言語ごとにサイトデザインやコンテンツを変更したい時などに使えますね。   【言語ごとの翻訳されたページのIDを取得】
icl_object_id( get_the_ID(), 'post', false, 'en' );
ページIDは、get_the_ID()などのメソッドが用意されていますが、表示中のページIDは取得できるものの、翻訳されたページのIDまでは取得できません。そこで上記のように記述することで表示中のページを翻訳したページのIDを取得できます。ちなみに、第3引数をtrueにするとデフォルト言語の投稿IDを、falseにするとnullの値が返ってきます。   【現在表示中のページの翻訳されたページが存在するかのチェック】
if ( !is_null( icl_object_id(get_the_ID(), 'post', false, 'en' ) ) ) {
  echo '英語に翻訳されたページが存在します';
} else {
  echo '英語に翻訳されたページはありません';
}
先ほどの処理を応用することで、表示中のページに翻訳されたものが存在するかどうかの条件分岐ができるようになります。第3引数をfalseにしておくと翻訳されたページがない場合にはnullが返ってくるので、その結果でチェックできますね。   【投稿記事の翻訳されたページのパーマリンクを取得】
if ( !is_null( icl_object_id(get_the_ID(), 'post', false, 'en' ) ) ) {
  echo apply_filters( 'wpml_permalink', get_permalink(get_the_ID()), 'en', true );
}
WPMLには指定した言語のパーマリンクを返してくれる「wpml_permalink」というフィルターフックが用意されています。現在のページのパーマリングを渡してあげる形になります。いろんな処理と組み合わせたり、サイト内の導線に使ったりと色々と活用できる場面は多そうですね。   【言語ごとに指定したトップページURLを取得】
get_home_url_language( 'ja' );
get_home_url_language( 'en' );
  上記のようにすることで、翻訳サイト内における指定言語でのサイトトップのURLを取得できます。home_url()メソッドであれば、表示中の言語に合わせて自動的に変換されますが、他の言語が表示されている時に言語別のURLを取得したい場合などは、こちらを使う方が便利ですね。  
  WPMLはこれまであまり使ったことがないのですが、実際に導入してみるととても便利なプラグインという印象がありました。まだあまり詳しく理解できてない部分もあるのですが、、ちょっとずつ勉強していきたいと思います。WPMLプラグインを使う場合には参考にどうぞ。   【参考にさせていただいたサイト】 WPML - Documentation
  • はてなブックマーク
  • Pocket
  • Linkedin
  • Feedly

この記事を書いた人

Twitter

sponserd

    keyword search

    recent posts

    • Twitter
    • Github
    contact usscroll to top
      • Facebook
      • Twitter
      • Github
      • Instagram