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より設定がシンプルで、小〜中規模サイトに最適です。