デイトラでプログラミング始めました

メニューの登録

functions.phpでメニューの登録

functions.phpを作成

register_nav_menus()でメニューを登録

add_action(‘init’, ”)で

wp_nav_menu() でメニューを表示

register_nav_menus() で登録したメニューを、実際にテーマのテンプレートに表示するには、wp_nav_menu() 関数を使用します。

register_nav_menus() の役割

WordPress のテーマでカスタムメニューを作成し、管理画面から自由にメニュー項目を編集できるようにするための関数です。この関数を使うことで、テーマの様々な場所に、複数のナビゲーションメニューを配置することができます。

//使い方
//functions.php
// メニューの登録
function my_menu_init() { register_nav_menus( array( 'global_nav' => 'ヘッダーメニュー', 'drawer_nav' => 'ドロワーメニュー', 'footer_nav' => 'フッターメニュー', ) //配列は好きな方を使う [ 'global_nav' => 'グローバルナビゲーション', ] );
}
add_action('init', 'my_menu_init');

array(): メニューの位置を配列で指定します。

‘global_nav’,‘footer_nav’: メニューの位置を識別する名前(スラッグ)です。この名前は、テーマ内でメニューを呼び出す際に使用します。

‘ヘッダーメニュー’: 管理画面に表示されるメニューの説明です。

管理画面からメニューの登録

上の例では、global_navdrawer_navfooter_nav 、という3つのメニュー位置を登録しています。これにより、管理画面の「外観」→「メニュー」で、「global_nav」と「drawer_nav」「footer_nav」という名前のメニューを作成し、それぞれをテーマのヘッダーとフッターに表示することができます。

wp_nav_menu() でメニューを表示

register_nav_menus() で登録したメニューを、実際にテーマのテンプレートに表示するには、wp_nav_menu() 関数を使用します。

<?php wp_nav_menu( array( 'theme_location' => 'global_nav' ) ); ?>

少し細かい設定

htmlの中で呼び出すために少し細かい設定を行います。

 <?php $menu_name = 'global_nav'; // functions.phpで指定したやつ $locations = get_nav_menu_locations(); $menu = wp_get_nav_menu_object($locations[$menu_name]); $menu_items = wp_get_nav_menu_items($menu->term_id); ?> <?php foreach ($menu_items as $item): ?> <li class="nav-item"> <a class="nav-link" href="<?php echo esc_attr($item->url); ?>"> <?php echo esc_html($item->title); ?> </a> <!-- データベースのないようを出力するときはescをつけて出力 --> </li> <?php endforeach; ?>