5

標準の (ドラッグ アンド ドロップ) WordPress 管理メニュー機能を使用して追加したいくつかのメニュー項目を含む WordPress メニューがあります。最近、動的な href リンクを生成する別の項目をメニューに追加する必要がありました。functions.php ファイルで次のコードを使用してそれを実現しました。

// プロフィール メニュー項目をメンバー メニューに動的に追加します (現在ログインしているユーザーに基づいてユーザー名を生成します)

add_filter('wp_nav_menu_items','add_profilelink_in_menu', 10, 2);

function add_profilelink_in_menu( $items, $args ) {

if( $args->theme_location == 'secondary')  {

 global $current_user;            
       //converts user id to username           
       $user_info = get_userdata($current_user->ID);

$items .='<li id="menu-item-2091" class="menu-item menu-item-2091">
 <a href="https://www.mysite.com/members/' . $user_info->user_login .'">Profile</a>
 </li>';

  }
  return $items;  

}

私の問題は、このメニュー項目がメニューの最後に追加され、「current-menu-item」などの通常の WordPress メニュー クラスがこの項目に適用されないことです。このメニュー項目が追加される位置を制御する方法はありますか (たとえば、最初の 2 つの項目の後にこの項目を追加しますか?)

また、WordPress でこの動的に生成されたメニュー項目を通常のメニュー項目として扱い、(WordPress メニュー機能で作成された) 他のメニュー項目を追加するすべてのクラスを追加するにはどうすればよいですか?

助けてくれてありがとう。

4

2 に答える 2

1

jqueryを使用してベースにできるロジックは次のとおりです

  //suppose your menu is this
  <ul id="secondary_nav">
    <li id="li_unique_id_1"><a href="">menu 1</a></li>
    <li id="li_unique_id_2"><a href="">menu 2</a></li>
    <li id="li_unique_id_4"><a href="">menu 4</a></li>
</ul>

 //the jquery workaround
 //place this in your footer
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
<script type='text/javascript'>
$(function(){
    <?php
     global $current_user;            
     //converts user id to username           
     $user_info = get_userdata($current_user->ID);
    ?>
    $("<li id='menu-item-2091' class='menu-item menu-item-209'><a href='https://www.mysite.com/members/<?php echo $user_info->user_login; ?>'>Profile</a></li>").insertAfter("#secondary_nav #li_unique_id_2");     
});   
</script>

insertBefore関数を使用することもできます

于 2012-11-10T03:59:17.370 に答える
0

これについては、テーマ - >メニューのWordpressメニューオプションを確認しましたか? そこから簡単にメニューを追加したり、そこからカスタムメニューを設定したりできます。

于 2012-11-05T04:59:37.590 に答える