2026年5月20日

2026年5月20日

WPMLの設定方法と多言語サイト構築ガイド

はじめに

WPML(WordPress Multilingual Plugin)はWordPressで最も広く使われる多言語プラグインです。投稿・固定ページ・カスタム投稿タイプ・メニュー・ウィジェットを複数言語で管理でき、WooCommerceの多言語化にも対応しています。

症状・原因

  • WordPressサイトを日本語・英語など複数言語で運営したい
  • 言語ごとに異なるURL構造(/en/・/ja/)を設定したい
  • 翻訳コンテンツを効率的に管理したい
  • WooCommerceを多言語対応させたい

解決手順

ステップ1:WPMLをインストールする

WPMLは公式ディレクトリにないため、wpml.orgから購入してインストール:

プラグイン → 新規追加 → プラグインのアップロード
→ wpml-multilingual-cms.zip をアップロード → 有効化
→ ライセンスキーを入力 → 認証

必要なアドオン:

  • WPML String Translation(文字列翻訳)
  • WPML Translation Management(翻訳管理)
  • WPML Media Translation(メディア翻訳)

ステップ2:言語を設定する

WPML → 言語:
→ サイトのデフォルト言語: 日本語
→「言語を追加」→ English(英語)を追加
→ 言語切り替えボタンの表示: フラグ + 言語名
→「設定を保存」

URL構造(言語ディレクトリ):
→ 言語コードをURLに追加: /en/page-slug/(推奨)
→ 異なるドメイン: example.com / en.example.com
→ 言語パラメーター: ?lang=en(非推奨)

ステップ3:投稿を翻訳する

投稿一覧 → 翻訳列の「+」アイコンをクリック
→ 翻訳エディターが開く
→ 左側: 元言語(日本語)
→ 右側: 翻訳先(英語)を入力
→「翻訳を完了」

または WPML Translation Management で:
→ 翻訳ジョブとして送信 → 外部翻訳者に依頼
→ XLIFF形式でエクスポート/インポート

ステップ4:文字列翻訳を設定する

テーマ・プラグインの文字列(ナビゲーション・フッターテキストなど)を翻訳:

WPML → String Translation:
→ スキャン: 翻訳可能な文字列を検出
→ 各文字列の「+翻訳を追加」で翻訳入力
→「翻訳を保存」
// テーマでWPML対応の文字列を登録
// functions.php
function mytheme_register_strings() {
    if (function_exists('icl_register_string')) {
        icl_register_string('mytheme', 'hero_title', 'メインタイトルを入力');
        icl_register_string('mytheme', 'cta_button', 'お問い合わせ');
    }
}
add_action('after_setup_theme', 'mytheme_register_strings');

// テンプレートで翻訳済み文字列を出力
echo apply_filters('wpml_translate_single_string', 'メインタイトルを入力', 'mytheme', 'hero_title');

ステップ5:WP-CLIで言語設定を確認する

# 有効な言語一覧を確認
wp option get icl_sitepress_settings --format=json | \
  python3 -c "import sys,json; s=json.load(sys.stdin); [print(k) for k in s.get('active_languages',{}).keys()]"

# 翻訳済みの投稿を確認
wp post list --meta_key=wpml_language --meta_value=en --format=table

# WPML関連のオプションを確認
wp option list --search="icl_*" --format=table

ステップ6:言語切り替えメニューを追加する

// functions.php — ヘッダーに言語スイッチャーを表示
function mytheme_language_switcher(): void {
    if (!function_exists('icl_get_languages')) {
        return;
    }
    $languages = icl_get_languages('skip_missing=0&orderby=code');
    if (empty($languages)) {
        return;
    }
    echo '<ul class="lang-switcher">';
    foreach ($languages as $lang) {
        $active = $lang['active'] ? ' class="active"' : '';
        printf('<li%s><a href="%s">%s</a></li>',
            $active,
            esc_url($lang['url']),
            esc_html($lang['native_name'])
        );
    }
    echo '</ul>';
}

注意事項

  • WPMLは有料プラグインです(年間$99〜)。無料代替はPolylangを検討してください
  • 言語追加後にパーマリンクを再保存してください(設定 → パーマリンク → 保存)
  • WooCommerce多言語化にはWPML WooCommerceアドオンが別途必要です

まとめ

WPMLはデフォルト言語を設定後、言語を追加して各投稿の翻訳を作成します。icl_register_string() でテーマ文字列も翻訳対象に登録でき、URLは言語ディレクトリ形式(/en/)が最もSEOに有利です。

お気軽にご相談ください

お見積りへ お問い合わせへ