2026年5月20日
2026年5月20日
WPMLの設定方法|インストール・セットアップウィザード・投稿と文字列の翻訳・言語切り替え
WPML(WordPress Multilingual)は、投稿・固定ページ・カスタム投稿タイプ・メニュー・テーマやプラグインの文字列を多言語で管理できる有料プラグインです。WordPress.org のプラグインディレクトリには無く、wpml.org で購入したアカウントからダウンロードします。この記事の画面名・プラン・関数は、2026年11月時点で wpml.org の公式ドキュメントと購入ページで確認したものです。WPML は画面の構成が変わることがあるので、表示が違う場合は公式ドキュメントを確認してください。
プランの違いを先に確認する
2026年11月時点の購入ページの表示は次のとおりです。どのプランも、購入から1年間のアップデートとサポートが付きます。
| プラン | 価格 | 使えるサイト数 | 文字列翻訳(String Translation) | 翻訳管理(Translation Management) | WooCommerce の多言語化 |
|---|---|---|---|---|---|
| Multilingual Blog | €39 | 本番1・開発用3 | なし | なし | なし |
| Multilingual CMS | €99 | 本番3・開発用9 | あり | あり | あり |
| Multilingual Agency | €199 | 無制限 | あり | あり | あり |
- テーマやプラグインの文字列(ヘッダー・フッターの文言、ウィジェットの見出しなど)を翻訳したい、WooCommerce のサイトを多言語にしたい場合は、Multilingual CMS 以上が必要です。
- Multilingual Blog では、投稿一覧の「+」アイコンから言語ごとのページを作って翻訳します(後述)。
- 更新期間が切れてもサイトは動き続けますが、WPML のアップデートは受け取れなくなります。
費用をかけずに多言語化したい場合は、無料の Polylang も選択肢です。手順は「Polylangの設定方法」で説明しています。
インストールとサイトキーの登録
WPML は、OTGS Installer という小さなプラグインを先に入れ、そこから本体とアドオンをインストールする方式です。
- wpml.org のアカウントにログインし、「Downloads」から OTGS Installer の ZIP ファイルをダウンロードします。
- WordPress の管理画面で「プラグイン」メニューのプラグイン追加画面を開き、「プラグインのアップロード」から ZIP を選んで「今すぐインストール」→「有効化」します。
- 管理画面に「WPML → Activate & Update」が表示されるので開き、サイトキーを登録します。サイトキーは wpml.org のアカウント画面でサイトごとに発行します。
- 同じ画面から WPML 本体と、必要なアドオン(String Translation、WooCommerce Multilingual & Multicurrency など)をインストールして有効化します。
アドオンは後から同じ画面で追加できます。最初は本体と、使う予定のものだけ入れておけば十分です。
セットアップウィザードで言語とURL形式を決める
WPML 本体を有効にすると、セットアップウィザードが始まります。公式ドキュメントでは、次の順番で設定します。
- 元の言語(source language)を選ぶ
- 翻訳先の言語を追加する
- 翻訳したページのURL形式を選ぶ
- 翻訳エンジンを選ぶ
- 翻訳の進め方を選ぶ
元の言語と翻訳先の言語
元の言語は、いま記事を書いている言語です。日本語のサイトなら「日本語」を選びます。後から変えるのは手間がかかるので、ここで正しく選びます。翻訳先の言語(英語など)は、後から「WPML → Settings → Languages」で追加・削除できます。
URL形式
翻訳したページのURLは、次の3つから選びます。
| 形式 | URLの例 | 向いている場合 |
|---|---|---|
| ディレクトリ | example.com/en/sample-page/ |
多くのサイト。公式ドキュメントでも最も一般的な選択とされています |
| 言語ごとに別ドメイン | example.com と example.co.uk など |
国ごとにドメインを持っている場合。各ドメインのDNSとSSLの準備が必要です |
| パラメーター | example.com/sample-page/?lang=en |
公式ドキュメントでは最も推奨されない形式です |
翻訳エンジンと翻訳の進め方
2026年11月時点の公式ドキュメントでは、翻訳エンジンは WPML 独自の AI 翻訳(PTC)が推奨され、DeepL・Google・Microsoft は新しいサイトには推奨しない旧方式と表示されています。
翻訳の進め方は次の2つから選び、後から切り替えることもできます。
- Translate Everything Automatically: サイト全体を自動翻訳し、新しい投稿や編集した投稿も追いかけて翻訳します。費用の見積もり画面が出て、「Start Your Site's Translation」を押すまでは翻訳も課金も始まりません。
- Translate Some: 翻訳するものを自分で選びます。「WPML → Translations」から投稿単位で翻訳に回します。
AI 翻訳には、プランごとに含まれる量があります(2026年11月時点の購入ページでは、Multilingual CMS が 22,500 語、Agency が 45,000 語、Blog は含まれません)。まず「Translate Some」で数ページ試し、品質と費用を確かめてから全体に広げると、想定外の費用を避けられます。
投稿を翻訳する
「+」アイコンから手で翻訳する
投稿一覧には言語ごとの列が追加され、まだ翻訳が無い言語には「+」、翻訳済みの言語には鉛筆のアイコンが表示されます。ブロックエディターの右側の「Language」ボックスにも同じアイコンがあります。
- 翻訳したい投稿の行で、翻訳先の言語の「+」をクリックします。
- 翻訳用のページが開きます。白紙から書くか、「Copy content from(元の言語)」で元の内容を写してから書き換えます。
- 「公開」を押すと、言語切り替えから翻訳ページを見られるようになります。
- 後で直すときは、同じ場所の鉛筆アイコンから開きます。
まとめて翻訳に回す(Multilingual CMS 以上)
翻訳管理の機能が使えるプランでは、「WPML → Translations」で翻訳する投稿を選び、自動翻訳・自分・登録した翻訳者のどれに回すかを決められます。複数の翻訳者に分担してもらう場合や、翻訳の進み具合を一覧で見たい場合に使います。
テーマやプラグインの文字列を翻訳する
投稿以外の文字列(テーマのボタンの文言、プラグインの設定画面で入力した文言など)は、String Translation アドオンで翻訳します。Multilingual CMS 以上に含まれます。
- 「WPML → Translations → Strings」を開きます。
- 検索欄やドメイン(どのテーマ・プラグインの文字列か)の絞り込みで、翻訳したい文字列を探します。
- 翻訳先の言語の「+」をクリックし、訳を入力します。
一覧に目的の文字列が無い場合は、同じ画面の「Utilities」にある「Not seeing strings you are looking for?」のリンクから Admin Texts Translation を開き、テーマやプラグインを読み取って文字列を追加します。
自作テーマの文字列を WPML に登録する
管理画面で入力した値(カスタマイザーやオプションに保存した文言など)を翻訳できるようにするには、wpml_register_single_string アクションで文字列を登録し、表示するときに wpml_translate_single_string フィルターを通します。どちらも String Translation アドオンが有効なときに働きます。アドオンが無い環境では、フィルターは元の値をそのまま返すので、表示が壊れることはありません。
<?php
// functions.php
// 管理画面を開いたときに、オプションに保存された文言を WPML に登録する
add_action( 'admin_init', function () {
$hero_title = get_option( 'mytheme_hero_title', '' );
if ( '' !== $hero_title ) {
// 引数: コンテキスト(グループ名), 名前, 元の文字列
do_action( 'wpml_register_single_string', 'mytheme', 'hero_title', $hero_title );
}
} );
// テンプレートで、表示中の言語の訳を出す(訳が無ければ元の文字列)
function mytheme_hero_title() {
$hero_title = get_option( 'mytheme_hero_title', '' );
return apply_filters( 'wpml_translate_single_string', $hero_title, 'mytheme', 'hero_title' );
}
テンプレートでは echo esc_html( mytheme_hero_title() ); のように使います。コードの中に直接書いた固定の文言は、この方法ではなく __( '文言', 'mytheme' ) のような翻訳関数で囲んでおくと、WPML の文字列翻訳でも翻訳ファイルでも扱えます。
言語切り替えを表示する
管理画面で設定する
「WPML → Settings → Language Switchers」で、言語切り替えをメニューの中・ウィジェット・フッターのどこに出すか、旗を出すか、ドロップダウンにするか一覧にするか、言語名をその言語の表記にするかを設定できます。ブロックエディターでは「Language Switcher」ブロックも使えます。
PHPで独自の言語切り替えを作る
デザインを自由に作りたい場合は、wpml_active_languages フィルターで言語の一覧を取得します。このフィルターは wp アクションの後(テンプレートの中など)で呼び出す必要があります。
<?php
// functions.php
function mytheme_language_switcher() {
$languages = apply_filters(
'wpml_active_languages',
null,
array(
'skip_missing' => 0, // 翻訳が無い言語は、その言語のトップページへリンクする
'orderby' => 'code',
)
);
if ( empty( $languages ) ) {
return; // WPML が無効な場合など
}
echo '<ul class="lang-switcher">';
foreach ( $languages as $lang ) {
if ( $lang['active'] ) {
echo '<li class="active"><span>' . esc_html( $lang['native_name'] ) . '</span></li>';
} else {
printf(
'<li><a href="%s" hreflang="%s">%s</a></li>',
esc_url( $lang['url'] ),
esc_attr( $lang['language_code'] ),
esc_html( $lang['native_name'] )
);
}
}
echo '</ul>';
}
header.php などで <?php mytheme_language_switcher(); ?> と呼び出します。リンク先には、言語コードから自分でURLを組み立てず、返ってくる url を使います(URLに使われる言語コードが設定によって違うことがあるためです)。以前の解説で見かける icl_get_languages() よりも、公式ドキュメントで説明されているこのフィルターを使うほうが安全です。
導入後に確認すること
- 翻訳先の言語のURL(例:
/en/)を開き、トップページ・投稿・固定ページ・メニューが表示されるかを確かめます。 - キャッシュ系のプラグインや CDN を使っている場合は、言語ごとに別のページとしてキャッシュされているか(英語ページに日本語のキャッシュが出ていないか)を確認します。
- 翻訳でうまく表示されない箇所がある場合の調べ方は、「WPMLの翻訳が表示されない・エラーを解決する方法」で説明しています。
- 言語ごとのページを検索エンジンに正しく伝える考え方は、「WordPressの多言語サイトで海外SEOに対応する設計とhreflang設定ガイド」を参考にしてください。