walker_nav_menu()


WordPressの関数walker_nav_menu()は、カスタムナビゲーションメニューの構造を操作および生成するために使用されます。この関数は主にカスタムクラスを作成する際に役立ちます。

シンタックス

walker_nav_menu( object $walker );
  • $walker (object) — ナビゲーションメニューをカスタマイズするためのウォーカークラスのインスタンス。

例1: シンプルなウォーカークラスの使用

以下はカスタムウォーカークラスを使用してメニュー項目に特定のHTML構造を追加する例です。

<?php
class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {
    function start_el( &$output, $item, $depth = 0, $args = null, $id = 0 ) {
        $output .= '<li class="custom-class">' . $item->title . '</li>';
    }
}
wp_nav_menu( array( 'walker' => new Custom_Walker_Nav_Menu() ) );
?>

例2: 深さに応じたスタイルの変更

メニューの深さに応じてクラスを付与する例です。

<?php
class Depth_Walker_Nav_Menu extends Walker_Nav_Menu {
    function start_el( &$output, $item, $depth = 0, $args = null, $id = 0 ) {
        $class = $depth === 0 ? 'top-level' : 'sub-level';
        $output .= '<li class="' . $class . '">' . $item->title . '</li>';
    }
}
wp_nav_menu( array( 'walker' => new Depth_Walker_Nav_Menu() ) );
?>

例3: リンクにカスタム属性を追加

リンクにdata-*属性を追加するカスタムウォーカークラスの例です。

<?php
class Custom_Attribute_Walker extends Walker_Nav_Menu {
    function start_el( &$output, $item, $depth = 0, $args = null, $id = 0 ) {
        $output .= '<li><a href="' . $item->url . '" data-id="' . $item->ID . '">' . $item->title . '</a></li>';
    }
}
wp_nav_menu( array( 'walker' => new Custom_Attribute_Walker() ) );
?>

例4: 子メニューのスタイル調整

子メニューのリストアイテムに特定のクラスを追加する例です。

<?php
class Child_Menu_Walker extends Walker_Nav_Menu {
    function start_lvl( &$output, $depth = 0, $args = null ) {
        $output .= '<ul class="child-menu">';
    }
}
wp_nav_menu( array( 'walker' => new Child_Menu_Walker() ) );
?>

例5: メニュー項目にカスタムアイコンを追加

メニュー項目にアイコンを付与するカスタムウォーカークラスの例です。

<?php
class Icon_Walker_Nav_Menu extends Walker_Nav_Menu {
    function start_el( &$output, $item, $depth = 0, $args = null, $id = 0 ) {
        $icon = '<span class="menu-icon"></span>';
        $output .= '<li>' . $icon . $item->title . '</li>';
    }
}
wp_nav_menu( array( 'walker' => new Icon_Walker_Nav_Menu() ) );
?>

関連機能: