24:トップページヘッダと配下ページでヘッダを分ける
トップページのヘッダーと配下ページのヘッダーが両方表示されています。
トップページとそれ以外のページでヘッダーの内容を変更します。

カテゴリー一覧のヘッダーをヘッダーモジュールに移動
カテゴリー一覧のヘッダーパーツは配下ページ共通のヘッダーパーツになるため、ヘッダーモジュール「header.php」に移動します。
category.php
ヘッダーパーツをカットします。
変更前
<?php
get_header();
?>
<div class="header">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="index.html">
<img src="img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<ul class="flex">
<li class="flex-item">
<a href="#">Works</a>
</li>
<li class="flex-item">
<a href="archive.html">Blog</a>
</li>
<li class="flex-item">
<a href="index.html#profile">Profile</a>
</li>
</ul>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .header -->
変更後
<?php get_header(); ?>
header.php
category.phpでカットしたヘッダーパーツをペーストします。
変更前
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>ポートフォリオサイト</title>
<link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>">
<?php wp_head(); ?>
</head>
<body>
<div class="hero">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="index.html">
<img src="<?php echo get_stylesheet_directory_uri(); ?>/img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<?php
wp_nav_menu( array(
'container' => false,
'theme_location' => 'header-nav',
));
?>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .hero -->
変更後
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>ポートフォリオサイト</title>
<link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>">
<?php wp_head(); ?>
</head>
<body>
<div class="hero">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="index.html">
<img src="<?php echo get_stylesheet_directory_uri(); ?>/img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<?php
wp_nav_menu( array(
'container' => false,
'theme_location' => 'header-nav',
));
?>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .hero -->
<div class="header">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="index.html">
<img src="img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<ul class="flex">
<li class="flex-item">
<a href="#">Works</a>
</li>
<li class="flex-item">
<a href="archive.html">Blog</a>
</li>
<li class="flex-item">
<a href="index.html#profile">Profile</a>
</li>
</ul>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .header -->
トップページヘッダ―と配下ページヘッダーを分けて表示
条件分岐関数を使用して表示を分けます。
| 関数名 | 内容 |
|---|---|
| is_front_page() | フロントページか調べる |
| is_home() | トップページか調べる |
| is_singular() | 投稿または固定ページか調べる |
| is_page() | 固定ページか調べる |
| is_single() | 投稿詳細ページか調べる |
| is_sticky() | 投稿が「先頭に固定表示(sticky)」か調べる |
| is_archive() | アーカイブページか調べる |
| is_post_type_archive() | カスタム投稿タイプアーカイブページか調べる |
| is_category() | カテゴリーアーカイブページか調べる |
| is_tag() | タグアーカイブページか調べる |
| is_date() | 日付アーカイブページ(年別/月別/日別アーカイブページ)か調べる |
| is_year() | 年別アーカイブページか調べる |
| is_month() | 月別アーカイブページか調べる |
| is_day() | 日別アーカイブページか調べる |
| is_search() | 検索結果ページか調べる |
| have_posts() | 投稿があるか調べる |
| has_post_thumbnail() | アイキャッチ画像が指定されているか調べる |
| has_tag() | タグがついているか調べる |
| has_category() | カテゴリーに属しているか調べる in_category()とほぼ同じ |
| have_comments() | コメントがあるか調べる |
| comments_open() | コメント投稿を許可しているか調べる |
今回はis_front_page関数を使用してトップページと配下ページを分けます。
header.php
if文でヒーローパーツとヘッダーパーツを分岐させます。
変更前
<div class="hero">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="index.html">
<img src="<?php echo get_stylesheet_directory_uri(); ?>/img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<?php
wp_nav_menu( array(
'container' => false,
'theme_location' => 'header-nav',
));
?>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .hero -->
<div class="header">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="index.html">
<img src="img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<ul class="flex">
<li class="flex-item">
<a href="#">Works</a>
</li>
<li class="flex-item">
<a href="archive.html">Blog</a>
</li>
<li class="flex-item">
<a href="index.html#profile">Profile</a>
</li>
</ul>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .header -->
変更後
<?php if( is_front_page() ) : ?>
<div class="hero">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="index.html">
<img src="<?php echo get_stylesheet_directory_uri(); ?>/img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<?php
wp_nav_menu( array(
'container' => false,
'theme_location' => 'header-nav',
));
?>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .hero -->
<?php else : ?>
<div class="header">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="index.html">
<img src="img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<ul class="flex">
<li class="flex-item">
<a href="#">Works</a>
</li>
<li class="flex-item">
<a href="archive.html">Blog</a>
</li>
<li class="flex-item">
<a href="index.html#profile">Profile</a>
</li>
</ul>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .header -->
<?php endif; ?>
トップページURLを取得
トップページURLを取得する場合はhome_url関数を使用します。表示関数ではなくURL文字列を返すだけなのでecho命令を忘れないようにしましょう。
<?php echo home_url(); ?>
外部ファイルは絶対パス取得関数を使用
get_stylesheet_directory_uri関数を使用してテーマフォルダまでの絶対パスを取得します。echo命令と「/」を忘れないようにしましょう。
<?php echo get_stylesheet_directory_uri(); ?>/
メニュー表示
メニュー表示はwp_nav_menu関数を使用します。
<?php wp_nav_menu( array( 'container' => false, 'theme_location' => 'header-nav', )); ?>
header.php
ヒーローパーツのロゴリンクのhref属性を絶対パスに変更します。
ヘッダーパーツのロゴリンクのhref属性を絶対パスに変更します。
ヘッダーパーツのロゴ画像のsrc属性を絶対パスに変更します。
ヘッダーパーツのメニューをwp_nav_menu関数で出力します。
変更前
<?php if( is_front_page() ) : ?>
<div class="hero">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="index.html">
<img src="<?php echo get_stylesheet_directory_uri(); ?>/img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<?php
wp_nav_menu( array(
'container' => false,
'theme_location' => 'header-nav',
));
?>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .hero -->
<?php else : ?>
<div class="header">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="index.html">
<img src="img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<ul class="flex">
<li class="flex-item">
<a href="#">Works</a>
</li>
<li class="flex-item">
<a href="archive.html">Blog</a>
</li>
<li class="flex-item">
<a href="index.html#profile">Profile</a>
</li>
</ul>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .header -->
<?php endif; ?>
変更後
<?php if( is_front_page() ) : ?>
<div class="hero">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="<?php echo home_url(); ?>">
<img src="<?php echo get_stylesheet_directory_uri(); ?>/img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<?php
wp_nav_menu( array(
'container' => false,
'theme_location' => 'header-nav',
));
?>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .hero -->
<?php else : ?>
<div class="header">
<div class="inner">
<div class="flex">
<div class="flex-item logo">
<a href="<?php echo home_url(); ?>">
<img src="<?php echo get_stylesheet_directory_uri(); ?>/img/logo.png" alt="ロゴ">
</a>
</div><!-- .flex-item -->
<div class="flex-item nav">
<?php
wp_nav_menu( array(
'container' => false,
'theme_location' => 'header-nav',
));
?>
</div><!-- .flex-item -->
</div><!-- .flex -->
</div><!-- .inner -->
</div><!-- .header -->
<?php endif; ?>
このページで出てくる関数
WordPress関数は「公式サイトのドキュメント」で確認しましょう。
WordPress関数
get_stylesheet_directory_uri()
表示確認
以下URLにアクセスするとトップページが表示されます。
http://localhost/WordPressフォルダ名/
以下URLにアクセスするとカテゴリー一覧が表示されます。
http://localhost/WordPressフォルダ名/category/カテゴリースラッグ/
ヘッダーがそれぞれ別になっていることを確認しましょう。
トップページヘッダー

カテゴリー一覧ヘッダー

※欠席者対応:lesson15 – lesson16