3

テーマで 3 つのプライマリ ナビゲーションを使用しており、すべてのプライマリ ナビゲーションにカスタム ID を使用してメニューへの最終リンクを配置しようとしています。

これは私がしようとしていることです:

<nav id="menu" role="navigation" class="menu-primary">
  <ul id="nav" class="menu">
    <li id="menu-item-418" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-418"><a href="#">About</a></li>
    <li id="menu-item-474" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-474"><a href="#">Work</a></li>
    <li id="menu-item-463" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-463"><a href="#">Blog</a></li>
    <li id="menu-item-416" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-416"><a href="#">Contact</a></li>
    <li id="back" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-491"><href="#header">back</a></li>
  </ul>
</nav>

ご覧のとおり、最後の li の ID は「back」です。jsを使用せずにこれを達成する方法はありますか? クラスを変更する方法はわかりますが、ID はわかりません。私はCSSの目的でこれをやっています。

どんな助けでも大歓迎です!

4

3 に答える 3

2

変更する代わりに、次のようなカスタムメニュー項目として最後にid別のものを挿入/挿入できますmenu item/li

add_filter( 'wp_nav_menu_items', 'your_custom_menu_item');
function your_custom_menu_item ($items)
{
    $items .= '<li id="back" class="what-ever"><a href="#">Back</a></li>';
    return $items;
}

コードスニペットをに貼り付けるだけで、メニューfunctions.phpにカスタムが追加menu itemされます。お役に立てれば。

menuまた、カスタムを使用して変更する別の方法がありwalkerここに良い例があります。

于 2012-11-30T20:33:21.423 に答える
1

を使用している場合はwp_nav_menu、Wordpress が提供するクラスを使用するのが最善の方法です。メニュー項目に特定の ID を追加する方法はないと思います。

jQueryでこれをしない限り...

于 2012-11-30T17:45:56.387 に答える
0

これを行うには、JS/jQuery を使用する必要があります。WordPress のメニューは動的に記述されるため、テーマ ファイルを取得して li を編集することはできません。

メニューが同じページにない場合は、ID と最初の例を使用できます。メニューごとに #nav を UL の ID に変更し、その 1 行をメニューごとに 3 回繰り返す必要があります。

$(document).ready(function() {
   $('#nav li').last().attr('id', 'back');
});

メニューが同じページにある場合は、以下のようなクラスを使用する必要があります。メニューごとに #nav を UL の ID に変更し、その 1 行をメニューごとに 3 回繰り返す必要があります。これは、すべてのメニューが UL のクラスを持っていない限りです。その場合は、単に$('#classNameHere li').last().addClass('back');.

$(document).ready(function() {
   $('#nav li').last().addClass('back');
});
于 2012-11-30T20:03:25.943 に答える