web-dev-qa-db-ja.com

wp_nav_menu、walkerクラス、liのクラスとしてのカテゴリ

OK私は自分のプリンシパルメニューを表示しようとしているので、次のコードを使用します。

<?php $defaults = array(
    'theme_location'  => '',
    'menu'            => '', 
    'container'       => false,
    'container_id'    => '',
    'menu_class'      => 'menu', 
    'menu_id'         => '',
    'echo'            => true,
    'fallback_cb'     => 'wp_page_menu',
    'before'          => '',
    'after'           => '',
    'link_before'     => '',
    'link_after'      => '',
    'items_wrap'      => '<ul id="%1$s" class="unstyled pull-right %2$s">%3$s</ul>',
    'depth'           => 0,
    'walker'          => new description_walker()
); ?>
<?php wp_nav_menu( $defaults ); ?>

メニューは(ページではなく)カテゴリ名で埋められ、以下を出力します。

<ul id="menu-principal" class="unstyled pull-right menu">
<li id="menu-item-597" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-597"><a href="#">menu</a></li>
<li id="menu-item-595" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-595"><a href="#">menu</a></li>
<li id="menu-item-596" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-596"><a href="#">menu</a></li>
<li id="menu-item-593" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-593"><a href="#">menu</a></li>
<li id="menu-item-594" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-594"><a href="#">menu</a></li>
<li id="menu-item-592" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-592"><a href="#">menu</a></li>
<li id="menu-item-591" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-591"><a href="#">menu</a></li>
<li id="menu-item-592" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-592"><a href="#">menu</a></li>
<li id="menu-item-591" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-591"><a href="#">menu</a></li>
</ul>

これらのクラスすべてをカテゴリ名に置き換えたいので、functions.phpでwalkerクラスを使用します。 https://Gist.github.com/1053467

だから私は最小限のものを持っていますが、私はクラスを追加する方法がわかりません。 class = "category-categoryname"(すなわち、class = "category-photography")。

あなたの時間と助けてくれてありがとう。

1
Gab

あなたのウォーカークラスはあなたが@Gabを必要とするものにほぼ完璧です。

21行目の代わりに:

        $output     .= '<li>';

38行目の直前に移動する

$output .= apply_filters(
        'walker_nav_menu_start_el' [...]

そしてそれを次のように変更してください。

$output .= $indent . '<li id="nav-menu-item-'. $item->ID . '" class="'. $title . '">';

そしてあなたはあなたのliの最初のクラスとしてカテゴリー名を持つべきです

わかりました、Nice title $ titleを作成したので、それを使用してliタグを作成してから、以前のようにaタグを作成できます。


編集:

 $mycatid = $item->object_id;
 $category = get_category($mycatid );
 $mycatslug = $category->slug;
 $output .= $indent . '<li id="nav-menu-item-'. $item->ID . '" class="'. $mycatslug . '">';
1
pcarvalho