マルチ言語サイトをプラグインなしで構築する
2023年9月5日
WordPressサイトのマルチ言語化をプラグインなしで実装する方法です。
WordPressのマルチ言語化にはサブドメイン型・サブディレクトリ型があり、URLに以下のような違いがあります。
サブドメイン型 「en.example.com」
サブディレクトリ型 「example.com/en」
ドメインパワー強化、SEO対策にはサブディレクトリ型の方が有効なのでサブディレクトリ型の方法を紹介します。
注意点
プラグインを使わずにマルチ言語化をするのはメリットも大きいですが大きなデメリットがあります。それはパーマリンクが自動的に変わってしまうことです。
パーマリンクが変わってしまっても元に戻すことは可能ですが、元に戻すまでの時間、一時的にアクセスが集まらない可能性があります。
この記事ではパーマリンクを元に戻す方法も記載しています。
マルチサイト構築
①wp-config.phpを編集
エックスサーバーにログインし、ファイル管理へ行きます。
マルチ言語にしたいドメインのファイルをダブルクリック→public_htmlをダブルクリックするとwp-config.phpというファイルがあるのでこれを編集します。
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */の上に以下を追記して更新。
/* マルチ言語サイト */
define(‘WP_ALLOW_MULTISITE’, true);
②プラグインを全て停止
有効になっているプラグインを全て停止して、無効化します。
ツール→サイトネットワークの設置をクリック。
↑1ヶ月以上前の記事があるとこのような画面になりますのでfunctions.phpを編集します。
③functions.phpを編集
functions.phpの一番下に以下を追記します。
add_filter( ‘allow_subdirectory_install’, create_function( ”, ‘return true;’ ) );
そうすると、サブディレクトリの選択ができるようになります。
サブディレクトリを選択し、サイトネットワーク名、サイトネットワーク管理者のメールアドレスを入力してインストールをクリック。
④wp-config.phpと.htaccessにコード追記
③の手順の後、以下のような画面になりますので赤枠内をコピーします。
wp-config.phpの/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */の上に張り付けて更新します。
またワードプレス管理画面に戻り、赤枠内をコピー。
.htaccessファイルの赤枠内の文字を消します。
先ほどコピーした内容を貼り付け更新ます。
⑤サイトを新規追加
ワードプレス管理画面をリロードするとログイン画面になるので再度ログインします。
参加サイト→サイトネットワーク管理とカーソルをあて、ダッシュボードをクリックします。
画面左のメニューのサイトをクリックし、新規追加をクリックします。
URL、サイトのタイトル、サイトの言語、管理者メールアドレスを入力してサイトを追加をクリックして完了です。
パーマリンクから「/blog」を消す
マルチサイト化すると、自動的に以下画像のように「/blog」というのがパーマリンクについてしまいます。
しかもカスタム構造にしていたはずなのに日付と投稿名に勝手になっていました。この/blogを消し、元のパーマリンクに戻す作業をしていきます。
画面左上の参加サイト、サイトネットワーク管理にカーソルをあてサイトをクリック。
親サイトのURLの下に出る編集をクリック。
設定をクリック。
Permalink Structureに希望のパーマリンク構造を入力。ここではポスト名の「/%postname%/」と入力しました。
一番下までスクロールし変更を保存をクリック。
これでパーマリンク上の/blogが消えました。
パーマリンク変更時の注意点
/blogを消して以前のパーマリンク設定にすればパーマリンクは元に戻り、アクセスにもさほど影響はないかと思います。
しかしこの際パーマリンクを変えてしまおうという方もいるかと思います。しかしパーマリンクが変更されるということは、せっかく頑張って過去に書いた記事のSEOが引き継げなくなってしまいます。私自身、パーマリンクを変更し一気にアクセスが0になってしまいました。
そんな事態を防ぐためにリダイレクトが有効です。ちなみに、リダイレクトをしなくても3か月くらいでアクセス数は復活しました。そこまで気長に待てないという方はリダイレクトをおすすめします。
301リダイレクト
リダイレクトには301と302があります。301は永続的、302は一時的なリダイレクトで、今回は301リダイレクトをします。
.htaccessファイルの# BEGIN WordPressの前に以下のコードを追記します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^【古いURL】 【新しいURL】 [R=301,L]
</IfModule>
例えば、https://example.com/old,htmlというアドレスからhttps://example.com/new/と変わった場合は以下のようになります。
例
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^old.html https://example.com/new/ [R=301,L]
</IfModule>
記入したら更新ボタンをクリックして完了です。
リダイレクトしたいページが複数ある場合は以下のようにRewriteRuleを足していきます。
リダイレクトしたいページが複数ある場合
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^old.html https://example.com/new/ [R=301,L]
RewriteRule ^old.html https://example.com/new/ [R=301,L]
RewriteRule ^old.html https://example.com/new/ [R=301,L]
</IfModule>
検索エンジンクローラーに多言語サイトであることを知らせる記述をする
検索エンジンクローラーに日本語ページと英語ページがあることを知らせる設定をします。
また、同じ内容を日本語と英語で書くと重複コンテンツとみなされる可能性があるので日本語サイトが本来のサイトであるということを知らせる為canonicalタグも入れておきます。
以下のファイルをheader.phpに追記します。
場所は <head>から </head>の間ならどこでもOK。
<link rel=”alternate” href=”日本語ページのURL” hreflang=”ja” />
<link rel=”alternate” href=”英語ページのURL” hreflang=”en” />
<link rel=”canonical” href=”日本語ページのURL” />
コメント