テーマ開発・functions.phpで機能をつなぐ

管理画面から編集できるナビメニュー

href="#"のままだった仮ナビを、管理画面から項目を編集できる本物のメニューに置きかえます。register_nav_menusで登録、wp_nav_menuで表示の2段構えです。

ヘッダーのナビは、いまテンプレートに直書きしたリンクです。これだと項目を増やすたびにコードの修正が必要——「書く人と作る人を分ける」WordPressの思想に反します。今回は、管理画面からメニューを編集できる本物のナビに置きかえます。

2段構え:登録して、表示する

管理画面メニュー機能は、テーマ側の2つの手続きで動きます。

  1. functions.phpで「メニューの置き場」を登録——「このテーマにはヘッダー用メニュー枠があります」と宣言
  2. header.phpで「その枠の中身」を表示——管理画面で組まれたメニューを出力

手続き1:register_nav_menus

function shimaenagado_setup() {
  add_theme_support('title-tag');
  add_theme_support('post-thumbnails');

  // メニューの置き場を登録
  register_nav_menus([
    'header-nav' => 'ヘッダーナビゲーション',
  ]);
}
add_action('after_setup_theme', 'shimaenagado_setup');

'header-nav'が枠のID(テーマ内部で使う名前)、右側が管理画面に表示される名前です。これで管理画面の「外観」に「メニュー」という項目が現れます。

手続き2:wp_nav_menu

header.phpの直書きナビを、まるごと置きかえます。

<nav class="site-nav">
  <?php
  wp_nav_menu([
    'theme_location' => 'header-nav',  // どの枠の中身を出すか
    'container'      => false,         // 余計な囲みdivを出さない
  ]);
  ?>
</nav>

wp_nav_menuは、管理画面で組んだメニューを<ul><li><a>…の形で出力します。HTMLコースで学んだ「ナビの正体はリンクのリスト」そのままの構造が出てくるわけです。

管理画面でメニューを組む

テーマ側の準備ができたら、あとは管理画面の仕事です。

  1. 「外観」→「メニュー」を開く
  2. メニュー名(例:メインメニュー)を付けて作成
  3. 左の一覧から「ホーム」「会社案内」「お知らせ」の固定ページ・リンクをチェックして追加
  4. 「メニューの位置」で「ヘッダーナビゲーション」にチェックして保存

表側を再読みこみすると、管理画面で並べた項目がそのままナビに。ドラッグで並び替えれば表示順も変わります。もうコードを触らずにナビを育てられます。

CSSをリストの形に合わせる

出力が<ul><li>のリスト構造になったので、CSSも合わせます。

.site-nav ul {
  display: flex;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.site-nav a {
  display: block;
  padding: 8px 16px;
  color: #333;
  font-weight: bold;
  text-decoration: none;
  font-size: 14px;
}
.site-nav a:hover {
  color: #2a6f7c;
}

このレッスンのまとめ

  1. メニュー機能は2段構え——functions.phpでregister_nav_menus(枠の登録)、header.phpでwp_nav_menu(中身の表示)
  2. 項目の追加・並び替えは管理画面の「外観」→「メニュー」——もうコードを触らない
  3. 出力は<ul><li><a>のリスト構造。現在地クラスcurrent-menu-itemも自動で付く

やってみよう:ナビを管理画面に明けわたす

直書きナビを卒業します。

  1. functions.phpにregister_nav_menusを追記する
  2. header.phpのナビをwp_nav_menuに置きかえ、CSSをリスト構造に合わせる
  3. 管理画面「外観」→「メニュー」で、ホーム・会社案内・お知らせのメニューを組んで「ヘッダーナビゲーション」に割り当てる
  4. 表側で確認したら、管理画面だけで項目の並びを入れかえて、ナビが追従するのを見届ける

「作る人」の仕事と「運用する人」の仕事が、きれいに分かれました。次はいよいよ、このコースの山場——カスタム投稿タイプで「商品」を作ります。