2026年5月20日

2026年5月20日

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

はじめに

PolylangはWPMLの無料代替として人気の多言語プラグインです。投稿・固定ページ・カテゴリー・タグ・メニューを複数言語で管理でき、基本機能は無料で使えます。WooCommerce対応はPolylang for WooCommerce(有料)が必要です。

症状・原因

  • WPMLの年間費用をかけずに多言語サイトを作りたい
  • 日本語・英語の2言語サイトを無料で運営したい
  • 言語ごとにカテゴリーやタグを分けて管理したい
  • 翻訳ページのURLを /en/ 形式にしたい

解決手順

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

wp plugin install polylang --activate

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

言語 → 言語を追加:
→ 言語名: 英語 / 言語コード: en / ロケール: en_US
→「言語を追加」をクリック

→ 言語名: 日本語(デフォルト) / 言語コード: ja
→ 既に追加済みの場合は「デフォルトに設定」

URL設定(メディア設定 → 言語):
→ URL修正方法: 言語コードをURLに追加(推奨)
  例: example.com/en/about/
→ デフォルト言語にもコードを追加するか選択

ステップ3:投稿・固定ページを翻訳する

投稿一覧 → 各投稿の言語列:
→「+」をクリック → 翻訳投稿を新規作成
→ 翻訳エディターが開く(内容を英語で入力)
→ 公開

または既存の投稿を紐付け:
→ 投稿編集画面 → 右サイドバー「言語」
→「翻訳」セクションで既存投稿を選択

ステップ4:カテゴリー・タグを翻訳する

投稿 → カテゴリー:
→ 各カテゴリーの「英語」列の「+」をクリック
→ 英語カテゴリーを作成・紐付け

または WP-CLI で確認:
# 言語別の投稿数を確認
wp post list --meta_key=language --format=table

# Polylangのオプション設定を確認
wp option get polylang --format=json

# 英語の投稿一覧
wp post list --lang=en --format=table

# 日本語の固定ページ一覧
wp post list --post_type=page --lang=ja --format=table

ステップ5:言語スイッチャーをテンプレートに追加する

// functions.php — ウィジェットとショートコードで言語切り替え
// ウィジェット: 外観 → ウィジェット → Polylang言語スイッチャーを追加

// テンプレートに直接出力する場合
function mytheme_polylang_switcher(): void {
    if (!function_exists('pll_the_languages')) {
        return;
    }
    $args = [
        'show_flags'    => 1,   // フラグ表示
        'show_names'    => 1,   // 言語名表示
        'display_names_as' => 'name', // name または slug
        'hide_current'  => 0,   // 現在の言語も表示
        'raw'           => 0,   // HTMLで出力
    ];
    echo '<ul class="lang-switcher">';
    pll_the_languages($args);
    echo '</ul>';
}
add_action('wp_footer', 'mytheme_polylang_switcher');

// 現在の言語を取得
$current_lang = pll_current_language(); // 'ja' or 'en'

// 特定の言語の投稿URLを取得
$en_url = pll_get_post_language(get_the_ID()) === 'en'
    ? get_permalink()
    : pll_get_post(get_the_ID(), 'en');

ステップ6:テーマ文字列を翻訳する

// functions.php — Polylangで翻訳可能な文字列を登録
add_action('init', function() {
    if (!function_exists('pll_register_string')) {
        return;
    }
    pll_register_string('hero_title', 'メインタイトル', 'mytheme');
    pll_register_string('cta_button', 'お問い合わせ', 'mytheme');
});

// テンプレートで翻訳済み文字列を出力
echo pll__('メインタイトル');    // 翻訳して返す
pll_e('お問い合わせ');          // 翻訳して直接出力

注意事項

  • Polylangは基本無料ですが、WooCommerce対応・カスタム投稿タイプの完全対応にはPolylang Pro(有料)が必要です
  • 言語設定後にパーマリンクを再保存してください
  • 既存の単言語サイトに後から追加する場合、全投稿に言語を設定し直す作業が発生します

まとめ

Polylangは無料で多言語サイトを構築できます。pll_the_languages() で言語スイッチャーを表示し、pll_register_string() でテーマ文字列も翻訳対象に追加できます。WPMLより設定がシンプルで、小〜中規模サイトに最適です。

お気軽にご相談ください

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