web-dev-qa-db-ja.com

wp nav menu:メニュー項目に属性を追加しました

私はそれが属性をwpナビゲーションメニュー項目に添付することが可能であるかどうか把握しようとしています。
説明するために、このphp:

<?php
    wp_nav_menu(array(
    'menu'  =>  'main',
    'container' => false
));
?>

以下のようなメニューを出力します。

<ul id="menu-main" class="menu">
<li id="menu-item-01" class="menu-item">Menu 01</li>
<li id="menu-item-02" class="menu-item">Menu 02</li>
<li id="menu-item-03" class="menu-item">Menu 03</li>
<li id="menu-item-04" class="menu-item">Menu 04</li>
</ul>

しかし、私が実際に欲しいのはこのようなものです。

<ul id="menu-main" class="menu">
<li id="menu-item-01" class="menu-item" data-hook="01">Menu 01</li>
<li id="menu-item-02" class="menu-item" data-hook="02">Menu 02</li>
<li id="menu-item-03" class="menu-item" data-hook="03">Menu 03</li>
<li id="menu-item-04" class="menu-item" data-hook="04">Menu 04</li>
</ul>

それは実現可能ですか?属性はdata-hookである必要はありません。これは例として使用しているだけで、識別子として使用できるものだけです。

1
user1374796

カスタムウォーカーを使用してメニュー項目に属性を追加できます。

基本的には、wp_nav_menu()オプションにパラメータ 'walker'を追加して、拡張クラスのインスタンスを呼び出します。

wp_nav_menu(
    array (
        'menu'            => 'main-menu',
        'container'       => FALSE,
        'container_id'    => FALSE,
        'menu_class'      => '',
        'menu_id'         => FALSE,
        'depth'           => 1,
        'walker'          => new Description_Walker
    )
);

クラスDescription_WalkerWalker_Nav_Menuを拡張し、関数start_el( &$output, $item, $depth, $args )を変更します。

  1. コーデックスから:
    http://codex.wordpress.org/Function_Reference/wp_nav_menu#Using_a_Custom_Walker_Function

  2. 私はこのチュートリアルを見つけました、あなたはそれが非常に役に立つと思うかもしれません:
    http://www.kriesi.at/archives/improve-your-wordpress-navigation-menu-output

3
Mike Madern