Shopify Web制作 コーディング

【Shopify多言語ストア】特定の言語だけ「メニューやページ」を非表示にするカスタマイズ術

こんにちは、もっつーです!

Shopifyで多言語サイトを運営していると、こんな悩みはありませんか?

「英語版にはある専門ページを、日本語版では非表示にしたい」
「特定の言語でだけ、このメニュー項目を消したい」

実はShopifyの標準機能や公式翻訳アプリ「Translate & Adapt」には、「特定の言語の時だけページやメニューを消す」という機能がありません。

この画像のように、公式翻訳アプリには『翻訳を入力する欄』はありますが、
『特定の言語だけページを非表示にする(ON/OFFする)』というスイッチはどこにもありません。
 もちろん、デフォルト言語である日本語のページ自体を消してしまうと、翻訳元がなくなるため英語版のページも消えてしまいます。

そこで今回は、アプリを一切使わず、
テーマコード(Liquid)を少し書き換えるだけで、特定の言語の時だけページやメニューを「消す」カスタマイズ方法を公開します。

この記事でわかること

  • 言語判定(Liquid)を使って表示を制御する方法
  • 日本語版だけページをトップへリダイレクトさせる方法
  • メニューから特定の項目だけを隠すCSSテクニック
  • トップページの特定セクション(バナー等)だけを非表示にする方法
  • 【SEO対策】検索エンジンに日本語版のページをインデックスさせない方法

実装の全体像

今回行うのは「物理的にページを消す」のではなく、「ユーザーがアクセスした言語を判定して、特定の条件なら非表示にする」というアプローチです。

  1. アクセス制御: 日本語環境でのアクセスなら、特定のページをトップへ飛ばす。
  2. メニュー制御: 特定のメニューを日本語環境でのみCSSで隠す。
  3. SEO制御: 日本語ページが検索に出ないよう noindex を設定する。

【STEP1】アクセス制御とSEO対策(リダイレクト)

まずは、特定のページに日本語版でアクセスされた場合、自動的にトップページへ戻す設定を行います。

テーマのコード編集画面から layout/theme.liquid を開き、</head> の直前に以下のコードを貼り付けます。

{% if request.locale.iso_code == 'ja' %}
  {% if page.handle == '対象ページA' or page.handle == '対象ページB' %}
    <meta name="robots" content="noindex">
    <script>window.location.href = '/';</script>
    <style>body { display:none !important; }</style>
  {% endif %}
{% endif %}

※ 対象ページ の部分は、URLの末尾(ハンドル)に書き換えてください。

これで、万が一URLを直接叩かれても、日本語版なら強制的にトップへ戻り、かつGoogle検索にもヒットしなくなります。

【STEP2】メニューから特定の項目を消す

メニュー(ヘッダー・フッター)から項目を消すには、CSSを使います。同じく theme.liquid の <style> タグの中に追記します。

{% if request.locale.iso_code == 'ja' %}
  <style>
    /* 指定したリンクへのメニュー項目を非表示にする */
    a[href*="/pages/対象ページA"],
    a[href*="/pages/対象ページB"] {
      display: none !important;
    }
    
    /* 親メニューごと消したい場合はクラス名を指定 */
    .navmenu-id-販売代理店一覧 {
      display: none !important;
    }
  </style>
{% endif %}

※ クラス名はブラウザの「検証」機能で確認してください。

【STEP3】トップページの一部セクションを言語ごとに非表示にする

トップページは「顔」ですが、キャンペーンや研究内容など、「日本市場だけで見せたい(あるいは隠したい)」セクションが混在することもありますよね。

Shopifyのセクションは、Liquidコード(theme.liquid)からIDを指定して非表示にすることで、特定の言語でのみ隠すことができます。

1. 消したいセクションのIDを調べる

トップページをブラウザ(Google Chrome)で開き、消したいセクションの上で 右クリック > 検証 を選択します。
HTMLコードを少し上に遡ると、以下のような id が見つかります。

例:
id="shopify-section-template--24412494299437__dynamic_slideshow"

この長い文字列をすべてメモしておきましょう。

2. CSSで非表示にする

調査したIDを使い、以下のコードを先ほどの <style> タグの中に追加します。

{% if request.locale.iso_code == 'ja' %}
  <style>
    {% if template == 'index' %}
      /* トップページの特定セクションを日本語の時だけ非表示にする */
      #shopify-section-template--24412494299437__dynamic_slideshow {
        display: none !important;
      }
    {% endif %}
  </style>
{% endif %}

ここがポイント!

  • {% if template == 'index' %}:これが「トップページ限定」という指示です。
  • IDをカンマで繋げれば、複数のセクションを一括で消すことも可能です。
  • これを使えば、「特定の言語だけバナーを消す」「期間限定のセクションを日本だけ隠す」といった柔軟な運用が誰でもできるようになります!

実装時の注意点

  1. キャッシュに注意:
    反映されない場合はブラウザのキャッシュが原因です。シークレットモードで確認しましょう。
  2. スマホメニューへの対応:
    スマホのハンバーガーメニューなどは独自のクラス名を持っていることが多いです。
    PCで消えてもスマホで残る場合は、スマホ用のクラスを探してCSSを追加してください。
  3. 検証は全言語で:
    修正後は必ず「日本語(非表示になっているか)」だけでなく、「英語・その他言語(表示されているか)」の両方をチェックしてください!

まとめ

今回のカスタマイズのポイントです。

  • request.locale.iso_code を使えば、アクセスしている言語を正確に判定できる
  • ページ自体を消すのではなく、リダイレクトとCSSで「見えなくする」のが安全
  • トップページのバナーや特定コンテンツも、セクションIDを指定すれば個別に隠せる
  • 検索結果に残らないよう、noindex の設定も忘れずに!

Shopifyの多言語サイトは奥が深く、今回のように「標準機能の隙間を埋める」ちょっとしたコードカスタマイズで、運用の質がぐっと向上します。

「特定の言語だけ見せたくない」という細かな要望は、ショップのブランディングやリージョンごとの戦略において重要ですよね。

もしコードの書き換えに自信がない、あるいは「もっと複雑な条件分岐をしてほしい!」という場合は、
無理せずShopify専門のエンジニアに相談するのも一つの手です。

今回のカスタマイズで、より快適な多言語ストア運営を目指しましょう!

-Shopify, Web制作, コーディング
-, ,

Copyright© ゆるふわなねこ , 2026 All Rights Reserved.