WordPress

【WordPress】トップページではページ内リンク、下層ページからはトップページの特定の位置に遷移する方法

※ 当サイトではアフィリエイト広告を利用しています

ヘッダーメニューをクリックするとトップページではページ内リンクで、他のページではトップページの特定の位置に遷移させる方法ない?

つまり同じメニューをクリックしても『トップページ』と『トップページ以外』では別の動きをするということですね。

トップページとトップページ以外でヘッダーを分ければいいのですが、WordPressの場合はヘッダーは『header.php』など共通のパーツとするので、トップページと下層ページではなるべく同じコードにしたいところです(分けるときもありますが)

かなりマニアックな話のように見えますが、実務でも使う事があるので解説します。

 

完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
  • 30日間でWeb制作を学べる
  • 完全無料
  • 現役エンジニアへの質問無制限
  • オンラインの動画学習なので時間場所を問わず勉強可能
  • 最大4回の学習サポート面談
  • 受付は1日25名までの先着制
無料なのに専属のメンターが付き、現役エンジニアへの質問も無制限という破格のサービスです。
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇

\ 完全無料 /

ZeroPlus Gate公式サイト

先着1日25名まで!

トップページではページ内リンク、下層ページではトップページの特定の位置に遷移

今回のイメージはヘッダーメニューに『ABOUT』というメニューがあり、これはトップページ内にあるABOUTセクションに遷移するという想定です。

順番に解説していきます。

 

トップページ内でクリックした場合

トップページでこのメニューをクリック場合、ページ内リンクでスルスルっとABOUTセクションまで移動するイメージです。

ページ内リンクのスムーススクロールについては以下の記事を参照下さい。

あわせて読みたい
【コピペOK!】jQueryを使ったスムーススクロールで移動するページ内リンク(アンカーリンク)の作り方
【コピペOK!】jQueryを使ったスムーススクロールで移動するページ内リンクの作り方

続きを見る

この場合はメニューのaタグは以下になります。

<!-- トップページのヘッダーメニュー -->
<a href="#about">ABOUT</a>

遷移先はこのようにidを付けます。

<!-- トップページ -->
<section id="about">
  コンテンツ
</section>

 

トップページ以外でクリックした場合

他のページでクリックした場合は、トップページのABOUTセクションまで遷移します。

ここで重要なのが、ただトップページに移動するだけでなく、トップページのABOUTセクションの位置に遷移するという事です。

別ページの指定した場所に遷移する方法は以下の記事を参照下さい。

あわせて読みたい
【WordPressも解説】別ページの指定した場所に遷移するアンカーリンクの設定方法
【WordPressも解説】別ページの指定した場所に遷移するアンカーリンクの設定方法

続きを見る

この場合はメニューのaタグは以下になります。

<!-- トップページ以外のヘッダーメニュー -->
<a href="<?php echo esc_url( home_url( '/' ) ); ?>#about">ABOUT</a>

遷移先については先ほどと同じです。

<!-- トップページ -->
<section id="about">
  コンテンツ
</section>

 

条件分岐を使ってトップページと下層ページを分ける

それでは先ほどの2つのパターンを条件分岐を使って振り分けたいと思います。

まずはトップページの場合はaタグがこちらになるようにして、

<a href="#about">ABOUT</a>

トップページ以外の場合はaタグがこちらになるようにします。

<a href="<?php echo esc_url( home_url( '/' ) ); ?>#about">ABOUT</a>

これを条件分岐を使うと以下になります。

<a href="<?php if ( is_front_page() ) : ?>#about<?php else: ?><?php echo esc_url( home_url( '/' ) ); ?>#about<?php endif;?>">ABOUT</a>

ちょっと長いのですが、こちらが『トップページの場合』という意味になります(front-page.phpをトップページとしている場合)

<?php if ( is_front_page() ) : ?>

そしてトップページの場合の内容が『#about』になります。

そしてこちらが『もしそうでない場合』という意味で、ここでは『トップページではない場合』となります。

<?php else: ?>

そしてトップページではない場合の内容が<?php echo esc_url( home_url( '/' ) ); ?>/#aboutになります。

まとめ

今回はWordPressのトップページではページ内リンク、下層ページからはトップページの特定の位置に遷移する方法を解説しました。

条件分岐を使えば無駄にテンプレートを増やさずに済むので、ぜひ活用してみて下さい。

以上になります。

あわせて読みたい
【コピペOK!】よく使うWordPress条件分岐タグまとめ
【コピペOK!】よく使うWordPress条件分岐タグまとめ

続きを見る

あわせて読みたい
【WordPressも解説】別ページの指定した場所に遷移するアンカーリンクの設定方法
【WordPressも解説】別ページの指定した場所に遷移するアンカーリンクの設定方法

続きを見る

あわせて読みたい
【WordPress】条件分岐で特定の固定ページのみclassやidを付ける方法
【WordPress】条件分岐で特定の固定ページのみclassやidを付ける方法

続きを見る

 

Web制作おすすめ教材と案件獲得サービス
当ブログではWeb制作学習におすすめの教材を厳選してご紹介しています。
こちらの記事を参考に教材を購入して成果を出している人もたくさんいるので、自分に必要な教材を探してみて下さい。
また、学習面だけでなく営業面である案件獲得サービスもご紹介しています。
スキルが身についても仕事がなければ意味がないので、営業に不安がある人はこちらの記事をぜひ参考にしてみて下さい。
この記事を参考にスキルと営業力を身につけて稼げるようになりましょう!

-WordPress
-