調べても具体的な情報が出てこず結構な期間悩んでいたのですが、先日のマルチサイトの調査で使えそうな方法がわかり、サブドメインの方はようやく実現できました。
サブディレクトリ型は簡単にできるのですが、サブドメインと別ドメインに関してはあまり具体的な情報が見つけられず、実際にどうすればいいのかもわからず。
前提と実現したいこと
- Xserverかさくらインターネットのレンタルサーバーを利用
- Polylangを入れて多言語化
- URLはサブドメイン
上記が前提で以下が実現したい事柄です。
- パターン1(サブドメイン)
example.comが本体でen.example.comを別言語として設定 - パターン2(別ドメイン)
ja.example.comが本体でen.example.comを別言語として設定
以降に続く内容で、「パターン1(サブドメイン)」に関しては、どのレンタルサーバーでも同じなのかはわからないもののXserverとさくらインターネットはとりあえず動作を確認しています。
パターン2(別ドメイン)の注意点
「パターン1(サブドメイン)」と同様の方法で「パターン2(別ドメイン)」の方もある程度実現可能でしたが、以下のような問題が発生し解決策が見つけられていません。
何かの設定が足りないだけではなく、当記事の方法では対応できない可能性もあります。
- フロントページが表示されない(投稿ページなど他のページは表示可能)
- フロントページの設定を最新の投稿にしても固定ページにしても、パーマリンクの設定を変更しても表示されさない
サブドメインと別ドメインの補足
「パターン1(サブドメイン)」と「パターン2(別ドメイン)」の部分は少々わかりにくいので簡単に説明します。
通常であればサブドメイン型といえば以下の状態を指すことが多いと思います。
これが「パターン1(サブドメイン)」です。
- example.comにWPをインストール
- Polypangでサブドメインを選んで、en.example.comで英語版を表示させる
しかし、案件によっては以下のような状態もありえます。
これが「パターン2(別ドメイン)」です。
- ja.example.comにWPをインストール
- Polypangでサブドメインを選んで、en.example.comで英語版を表示させる
上記もドメインの構造的にはサブドメインですが、Polylangの設定ではja.example.comのWPではサブドメインとしてen.example.comが選べず、en.ja.example.comになってしまいます。
つまり言語別のサブドメイン同士の関係は「hoge.comとfuga.com」と同様に別ドメイン関係となります。
結果としてPolylangの設定では別ドメインを選び設定する必要があります。
実現方法
- 事前に必要なサブドメインを設定しておく
- 作成されたサブドメイン用ディレクトを削除かリネームして、シンボリックリンクを設定
- Polylangをインストールして、サブドメインか別ドメインを設定
ポイントは2の工程で、ここが調べてもよく話からなかった部分です。
以下のマルチサイトの記事と同じなのでそのままこちらにも記載します。
参考情報と手順は以下のとおり。
- 【WordPressマルチサイト】温泉ブログを作ったよ!~エックスサーバーでのWordPressマルチサイト化手順 | Shirako’s Business Site
- エックスサーバーでサブドメイン型のワードプレスマルチサイトを設定する方法 | 銀行のギモン
大まかな手順は以下の通り。
- サーバー管理画面でサブドメインを設定した際に自動で作成されるサブドメイン用ディレクトリを消すかリネームする
- ターミナルなどでSSH接続する
- 該当のドメインのpublic_htmlディレクトリまで移動
- サブドメイン用ディレクトリを指定してシンボリックリンクを設定(en.example.comを設定したならen)
//cd でpublic_htmlディレクトリに移動 ここには本体となるWPがインストールされている前提
$ cd /home/サーバーID/あなたのドメイン/public_html
//ln -s でシンボリックリンク設定 記述の内容は以下のような書式
//ln -s 本体のパス polylangで指定したサブドメインのパス
$ ln -s /home/サーバID/あなたのドメイン/public_html /home/サーバID/あなたのドメイン/public_html/en
//ll で設定されたかどうかを確認。以下のような記述が表示がされるはず
//en -> /home/サーバID/あなたのドメイン/public_html
$ ll
上記はXserverでの方法ですが、さくらインターネットでもSSHでログインして同じ処理を行います。
ただし他のサーバーでも同じなのかはわからないので、シンボリックリンク以外の方法も視野に入れつつ対策を練る必要があるかもしれません。
フロントページを固定ページで表示する方法
すでに記載しましたが、サブドメイン設定での方法です。別ドメイン設定の場合はフロントページ自体が表示できていないので、この方法が有効かどうか不明です。
- 固定ページでデフォルトの言語のフロントページとブログページを作る
- 管理画面の固定ページ一覧で、作成したフロントページとブログページの別言語の「+」ボタンを押して該当別言語のコンテンツを入力する
- WPの「設定>表示設定」でデフォルト言語用の各ページを選んで保存する(または上部の言語切り替えボタンで言語を切り替えて該当の言語用の各ページを設定する)
うまく表示されない場合は2をやり直すか再設定する必要があるかもしれません。
単純ミスに気がつかなったからかもしれませんが、テストで設定した際に翻訳の紐付けができていなかったようで、表示設定で設定した言語の固定ページが他の言語で表示されるようになってしまいました。 別の言語の方を選択すると、今度はその言語の固定ページしか表示されません。
解決するためにページを消してやり直したところうまく表示できました。
なお、表示設定の部分は一つの言語の設定しか表示に反映されない模様です。
具体的には、日本語ではフロントとブログの設定項目が意図通りに表示されていても、他の言語に切り替え後の同じ箇所は「未設定」になります。しかしこの状態でも表示には問題がないようで、この状況は無視できる模様です。
関連情報
- URL modifications – Polylang
公式のドキュメント。サブドメインと別ドメインの場合はマッピングが必要とあるが詳細はなし。一概に言えないのはわかるがせめて一例は書いて欲しかった。 - Polylang was unable to access the URL | WordPress.org
サポートフォーラムのスレッド。質問者はほぼ自力で解決したらしく、探した中では唯一の具体的な断片が見える。ただ何をしたのかは結局よくわからず。.htaccessとindex.phpを別言語のディレクトリに入れても当然動作しない。ただ、index.phpの中にある/wp-blog-header.phpのパスを本体のWPの方に向ければ記事の表示自体はできた。しかしCSSやJSなどは当然リンク切れになるので使えず。 - The language is set from different domains does not work on multisite | WordPress.org
サポートフォーラムのスレッド。プラグインでマッピングをする方法が書かれているようだが、該当のWordPress MU Domain Mappingは4年前で更新が途切れており使いたくないので却下。 - Multiple Domain Mapping on Single Site – WordPress plugin | WordPress.org
ドメインマッピング用のプラグイン。これが使えるのかと思ったが意図した動作にならず(設定方法がちがうのかも)。 - 登録済みのドメイン名をマッピング (ドメインマッピング) – 日本語サポート
ドメインマッピングに関するWPのドキュメント - サブドメインをマッピングする – 日本語サポート
サブドメイン用のマッピングに関するWPのドキュメント
実際のところ、作業内容だけで言えば上記最上部のPolylang公式ドキュメント以外を読む必要はありませんが、調査過程とそのメモ書きのメモ用に記載しています。
さくらインターネットでのサブドメイン用ディレクトリ
- さくらインターネットでサブドメインを設定時、「web公開フォルダ」に該当のサブドメイン用のフォルダ名を入力する必要がある
- 入力したフォルダ名とパスのとうりに、手動でディレクトリを作成する必要がある
今回のPolylang用の作業ではディレクトリはいりませんが、普通にサブドメインを運用する場合には上記のようにディレクトリを手動で作成する必要があります。
この件はサポートに問い合わせましたら、以下の「マルチドメインの設定」のヘルプが該当するとのことでした。
結び
どうにか実現方法は見つけましたが、探した範囲ではどこを見てもシンボリックリンクのことは書かれていないかったので、当記事の方法は間違っていて別の正規の方法があるのかもしれません。
特に別ドメインでどうやってもフロントページが表示できず、手法に問題があるのではという疑念が消せません。
いずれであっても、公式にしても外部のブログにしても具体例を一つでも良いので書いて欲しいなと思う次第です。
補足
Polylangには有料プランがあり、そちらではちゃんとしたサポートが受けられる模様です。
誰でも利用できる公式のフォーラムに書き込んだこともありますが、一切返答がつかず放置されましたので、個人的には有料版にしないと別ドメイン実現の方策がわからないのではと思っています。
3人がこの記事を評価
役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。
連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。