1. HOME
  2. >
  3. プログラミング
  4. >
  5. WordPress
  6. >
  7. WordPressTip’sテーマ自作-header.phpの書き方

WordPressTip’sテーマ自作-header.phpの書き方

kotanote-WordPressTip's-header.php作成-アイキャッチ

こんにちはKotaです。

ずいぶんと期間があいてしまいましたが、今回もWordPressテーマ自作をしたい40代初心者に役立つ情報をお届けしていきます。

今回のテーマはコチラ↓
「header.phpの書き方」について

また本ブログでは、WordPressのテーマを自分で作れるよう、一通りの解説をしていく予定です。40代でも出来ます!一緒にやっていきましょう。
また、本ブログでは「サックリ」伝えて「ゆっくり」説明していきますので、お急ぎの方はサックリだけでも見ていって下さいね。

このページは私「Kota」が作成しております。
40歳過ぎで前職を退職し、Web関連を独学し、フリーランスとして活動をしております。同じような事を考えている方もいるのでは?と思い、その方達に役立つ事を意識してつくっています。このページは私の作ったオリジナルテーマです。私でも作れたので、きっとあなたも出来るはず。仕事でも趣味でもいいので作ってみましょう!

【対象者】

40代初心者
WordPressのテーマを自作したい人(オリジナルテーマを作りたい人)
WordPressのテンプレートファイル(ページテンプレート)について知りたい人
HTML,CSSで簡単なWebページを制作する知識をのある人
とにかくWordPressやそのテーマ作りに興味がある人

【事前に最低限必要なスキル】

HTML,CSS,Bootstrap,PHP(基礎的な事がわかればok)
WordPressの使い方がそれなりにわかる

【1.header.phpの書き方(本文)サックリ】

さてそれではWordPressテーマ自作に必要な「header.php」の書き方について説明していきます。【1】ではサックリお伝えしていきます。詳細が必要な方は【2】をゆっくり御覧ください。

【header.phpとは?】

「header.php」とは何でしょうか?
WordPressのテーマを構成する、テンプレートファイルと呼ばれているファイルの一つです。
例えばindex.htmlというあるホームページがあったとして、そのコードの先頭~headerタグまで、それをWordPressテーマでは「header.php」という名前で保存し使用します。(※どこまで含めるか厳密な決まりはありません)私の場合、表示させたいHTMLデータをそのまま貼り付け、必要な部分はPHP言語を使用して置き換える手順で作成します。
実は、やらねばならぬ事がもう一つあるのです。それは「function.php」の作成。このページの内容ではナビメニューを表示させるのに必要となります。

【headerのHTML作成】

では今回使用する。HTMLコードを用意しましょう。
シンプルな構成にしておきます。(実際はもっと必要なコードが沢山ありますが)

<!--THML5を宣言-->
<!DOCTYPE html>

<!--HTMLタグ-->
<html lang="ja" >

<!--HEADタグ-->
<head>
  
  <!--METAタグ-->
  <!--文字コード設定-->
  <meta charset="utf-8">
  <!--レスポンシブ設定-->
  <meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">

  <!--TITLEタグ-->
  <title>WordPressサンプルページ</title>

  <!--LINKタグ-->
  <!--スタイルシート-->
  <link rel="stylesheet" type="text/css" href="style.css">
  <!--favicon-->
  <link rel="shortcut icon" href="https://sample.com/images/logo/favicon.ico">

</head>

<!--BODYタグ-->
<body>

  <!--HEADERタグ-->
  <header>

    <!--H1タグ サイト名-->
    <h1><a href="https://sample.com/">WordPressサンプルページ</a></h1>

    <!--ナビメニュー-->
    <nav>
      <ul>
        <li><a href="">メニュー1</a></li>
        <li><a href="">メニュー2</a></li>
        <li><a href="">メニュー3</a></li>
      </ul>
    </nav>

  </header>

【HTMLをheader.phpへ書き換える】

それでは上記で用意したHTMLコードを書き換えheader.phpを作っていきます。

<!--THML5を宣言-->
<!DOCTYPE html>

<!--HTMLタグ-->
<html <?php language_attributes(); ?> >

<!--HEADタグ-->
<head>
  
  <!--METAタグ-->
  <!--文字コード設定-->
  <meta charset="utf-8">
  <!--レスポンシブ設定-->
  <meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">

  <!--TITLEタグ-->
  <title><?php bloginfo('name'); ?></title>

  <!--LINKタグ-->
  <!--スタイルシート-->
  <link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_uri(); ?>">
  <!--favicon-->
  <link rel="shortcut icon" href="<?php echo get_template_directory_uri(); ?>/images/logo/favicon.ico">

</head>

<!--BODYタグ-->
<body>

  <!--HEADERタグ-->
  <header>

    <!--H1タグ サイト名-->
    <h1>
     <a href="<?php echo esc_url( home_url( '/' ) ); ?>">
      <?php bloginfo('name'); ?>
     </a>
    </h1>

    <!--ナビメニュー-->
    <nav>
      <?php wp_nav_menu( array( 'theme_location' => 'header-nav' ) ); ?>
    </nav>

  </header>

テンプレートディレクトリに「header.php」とう名前で保存します。テーマ名が「WordPressSampleTheme」だったら「~/WordPressSampleTheme/header.php」となります。

【function.phpを作成する】

上記のナビメニューの部分の「wp_nav_menu~」を実行するには「function.php」を作成し、下記のコードを追加します。

<?php

//ナビメニューを有効化
function setup_navi() {
  register_nav_menus( array(
      'header-nav' => 'ヘッダーナビ',
    ) );
}
add_action( 'after_setup_theme', 'setup_navi' );

以上で「header.php」の作成が完了しました。もっと詳しく知りたい方は↓の「ゆっくり」のコーナーを御覧ください。

【2.header.phpの書き方(補足)ゆっくり】

さて、ここからは詳細に解説をしていきます。時間のある方、詳しく知りたい方はご覧下さい。

【テンプレートタグの説明】

元のHTMLから書き換えた部分を見ていきましょう。WordPressで用意されているテンプレートタグを使用し、PHP言語を用いてテーマを作っていきます。

まずは

<html lang="ja" >

<html <?php language_attributes(); ?> >

に書き換え。

language_attributes()」というテンプレートタグを使用し、文字コードを表示させています。読み込み元はWordPressの「設定」>「一般」>「サイトの言語」に指定した言語の文字コードになります。

<title>WordPressサンプルページ</title>

<title><?php bloginfo('name'); ?></title>

に書き換え。

bloginfo()」というテンプレートタグを使用。
こちらもWordPressの管理画面から入力した情報を表示する事が出来るタグです。
引数に「name」を指定しているので「設定>一般>サイトのタイトル」を取得し表示出来ます。
他にも引数を変えることで各データを取得出来るのですが、例えば
「url」は「設定>一般>サイトアドレス」を取得。
「description」は「設定>一般>キャッチフレーズ」を取得。
などがあり、他にも多数設定されています。

<link rel="stylesheet" type="text/css" href="style.css">

<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_uri(); ?>">

に書き換え。

get_stylesheet_uri()」というテンプレートタグを使用。こちらを使用するとテーマスタイルシート「style.css」のuriを「http~style.css」の形で取得できます。こちらはデータの取得のみなので、表示させる為に「echo」を使っています。また、style.cssはテーマのテンプレートディレクトリに保存されている必要があります。
「WordPressSampleTheme/style.css」の様になります。

※この様に、テンプレートタグには「データを取得するのみ」又は「データを取得し表示させる」という機能があり、タグごとに異なりますので、出力方法にはご注意を。

<link rel="shortcut icon" href="https://sample.com/images/logo/favicon.ico">

<link rel="shortcut icon" href="<?php echo get_template_directory_uri(); ?>/images/logo/favicon.ico">

に書き換え。

get_template_directory_uri()」というテンプレートタグを使用。
こちらはテンプレートディレクトリのuriを取得できます。「http~WordPressSampleTheme」の様になります。※取得データの末に「/」はついていませんので、続きは/から始めます。
上記の場合はテンプレートディレクトリ内に「images/logo/favicon.ico」という形で保存した場合になります。ディレクトリ(フォルダ)は各自の作り方に合わせて変更してください。これまた「echo」で出力させます。

<h1><a href="https://sample.com/">WordPressサンプルページ</a></h1>

<h1>
 <a href="<?php echo esc_url( home_url( '/' ) ); ?>">
  <?php bloginfo('name'); ?>
 </a>
</h1>

に書き換え。

再び「bloginfo()」を使用。
更に「home_url()」というテンプレートタグを使用。このサイトのurlを取得できます。2つの引数の指定が可能です。
一つ目はurlに続くパス指定。未指定の場合「https://sample.com」となり、末尾に「/」が付きません。のでここでは「home_url(‘/’)」として「https://sample.com/」という出力にしています。
二つ目は「http」か「https」かを指定出来ます。指定が無い場合は自動で選択されます。
上記テンプレートタグを引数として「esc_url()」というテンプレートタグも使用。
こちらのタグはurlを無害化(サニタイズ)しています。「esc_url(home_url(‘/’))」としてセットで利用しましょう。
出力するのに「echo」を使用します。

<nav>
  <ul>
    <li><a href="">メニュー1</a></li>
    <li><a href="">メニュー2</a></li>
    <li><a href="">メニュー3</a></li>
  </ul>
</nav>

<nav>
  <?php wp_nav_menu( array( 'theme_location' => 'header-nav' ) ); ?>
</nav>

に書き換え。

wp_nav_menu()」というテンプレートタグを使用。WordPressの管理画面の「外観>メニュー」で設定したナビゲーションメニューを表示させます。引数として連想配列を指定します。ここではキー「theme_location」に対し「header-nav」を設定し、「header-nav」という名前のナビゲーションメニューを表示させています。( header-navは次項【function.phpでメニューを有効にする】で指定した名前です )他にも多数のキーが用意されており、例えば
「container」キーはデフォルトで「div」が設定されており、ulの外をdivで加工設定になっています。
「container_class」キーは上記divにclassを付加しており、デフォルトでは「menu-メニューのスラッグ-container」という出力になっています。
などがあり、それらを変更することで出力されるコードをカスタマイズ出来ます。

※さてこのテンプレートタグを使用する為には、WordPressの管理画面にメニュー画面を有効化させる必要があります。その為にはfunction.phpを作成し、そこにコードを追加する必要があります。続きは次項をご確認ください。

【function.phpでメニューを有効にする】

ナビゲーションメニューを有効化するため「function.php」をテンプレートディレクトリに作成(WordPressSampleTheme/function.php)し、下記コードを追加します。

function setup_navi() {
  register_nav_menus( array(
      'header-nav' => 'ヘッダーナビ',
    ) );
}
add_action( 'after_setup_theme', 'setup_navi' );

これにより、WordPressの管理画面に「外観>メニュー」の画面が追加され、「ヘッダーナビ」という名前で「メニューの位置」として表示され、利用可能となります。
また、「wp_nav_menu()」の引数のキー「theme_location」に「header-nav」を指定する事で、ナビゲーションメニューを出力する事ができます。
「setup_navi()」「header-nav」「ヘッダーナビ」の部分の命名は任意なので、分かりやすい名前をつけてください。
WordPressで用意されている「register_nav_menus()」という関数を使用しており、この部分がナビゲーションメニューを有効化させています。引数には連想配列が用意されており、キーにはコード内で使用する名前を入れ、値にはWordPress管理画面で表示する名前を入れます。
それをfunction setup_navi(){}として関数の中に入れてあります。
その関数をWordPress関数「add_action()」で実行しています。この関数は実行するタイミングを引数に指定する事ができ、ここでは「after_setup_theme」としています。これはfunction.phpが実行された直後のタイミングで実行されます。
二つの引数を指定しており、最初が「アクション」と呼ばれるもので、次が実行する「関数」です。この関連付けを「フック」と読んでいます。アクションに関数をフックする事で、指定したアクション実行のタイミングで関数も実行される。という訳です。様々なアクションが用意されている訳ですが、この場合は「init」を使用する事も可能なようです。実行される順番としてはinitの方が遅いタイミングとなります。


という訳で今回の「WordpressTip’sテーマ自作-header.phpの書き方」はここまで。
いかがだったでしょうか?ゆっくり説明の中でも説明しきれていない部分は多々ありますが、あまり細かく書いてしまうとわかりづらくなってしまうので、程よくしたつもりです。
分からない事、疑問点などありましたら、お気軽に「Kota」までお問い合わせください。お答えしたいと思います。


広告

youtube

twitter

【余談】

さてさて、コロナ禍皆様いかがお過ごしでしょうか?リモートワークの人が増えたり、会社が無くなったり、転職を考えたり。業績が伸びている会社もあったり。色々ですね。私の仕事は自宅で出来るので影響は少ない方だと思います。そもそもの仕事が少ないのが一番の問題点なんですが(笑)
田舎に住んでいるのですが「農業 & Web制作」の様な仕事を考える今日このごろ。高齢化により農業を行わない畑が増えています。ガッツリ農業ではなく、二つの仕事を行うハイブリッド。自然の多い地域で暮らし、土に触れ、野菜などの育成に携わる。会社に行く必要が無い人も大分増えたとか。リモートで出来る仕事の人ならこういった働き方。暮らし方。もいいのでは?と思うのです。都会でビルの中、満員電車にゆられる必要はあるのでしょうか・・・とはいえ、そんな暮らしにも憧れる私も居るのですけどね。
「農業 &」に興味の有る方、ご連絡ください。
それでは、このシリーズはまだまだ続きます。なんせ記事を書くのが遅くて遅くて(T T)時間がかかるんですよね。文章は苦手です。が、継続がんばります。
それではまた、次の記事でお会いしましょう。
ではでは(^^)/
☆Kotaでした☆

【まとめ】

・htmlページ冒頭~までを「header.php」として保存。
・「header.php」内のhtmlはPHP言語とWordPressのテンプレートタグや関すを使って書き換える。
・今回使用したテンプレートタグ及び関数「language_attributes() , bloginfo() , get_stylesheet_uri() , get_template_directory_uri() , home_url() , esc_url() , wp_nav_menu()

・ナビゲーションメニューを有効にする為に「function.php」を用意し、関数内に「register_nav_menus()」を書き、add_action()で実行させる。

著者:
Kotanote

タグ: , ,