マルチ言語サイトをプラグインなしで構築する

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>

301リダイレクト

記入したら更新ボタンをクリックして完了です。

リダイレクトしたいページが複数ある場合は以下のように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” />

参考にした記事英語

\記事が役に立ったらシェアしてね/
★フォローする★