親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

WPML Multilingual CMSでリダイレクトされてしまう問題


WPMLはWordPressで多言語対応する時に最も有名なプラグインですね。
僕も業務でこのプラグインを用いた対応を行ったのですが、ブラウザの言語でリダイレクト設定をし、日本語を母国語として設定した状態で他の言語を選択すると1回目はなぜか反映されないという事象が発生しました。
プラグインのバージョンは3.3.7でした。
ソースを読むと以下の修正をしたことでリダイレクトしなくなりました。
ご参照ください。
元々ブラウザのリダイレクトはSEOの観点からは良くないようなので、そこは気をつけて設定してください。
プラグインの「browser-redirect.js」を変更してください。(58行目あたりで、ソースはsitepress-multilingual-cms/res/js/にあります。)

if (false !== redirectUrl) {
    self.setCookie(browserLanguage);
    window.location = redirectUrl;
    break;
}

となっている箇所を、

if (false !== redirectUrl) {
    self.setCookie(browserLanguage);
    // ここから
    if((browserLanguage == 'ja' || browserLanguage == 'ja-JP' || browserLanguage == 'ja-jp') && (pageLanguage != 'ja' && pageLanguage != 'ja-JP' && pageLanguage != 'ja-jp')) {
        break;
    }
    // ここまで
    window.location = redirectUrl;
    break;
}

とすれば大丈夫です。
browserLanguageが「ja」、「ja-JP」、「ja-jp」と3種類ありますが、これはブラウザの種類によって表記が変わるためです。
僕が調べた限りではこの3種類をやっておけば主要ブラウザ全てに対応できました。