我有一个WordPress菜单,其中有一些菜单项我通过标准(拖放)WordPress管理菜单功能添加.最近我不得不在菜单中添加另一个项目,生成动态href链接.我在functions.php文件中使用以下代码实现了这一点:
//将我的个人资料菜单项dynmacially添加到成员菜单(根据当前用户登录生成用户名)
add_filter('wp_nav_menu_items','add_profilelink_in_menu',10,2);
function add_profilelink_in_menu($ items,$ args){
Run Code Online (Sandbox Code Playgroud)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;}
我的问题是这个菜单项被添加到菜单的末尾,并且常规的WordPress菜单类(例如'current-menu-item')不会应用于此项目.有没有办法让我控制添加此菜单项的位置(例如:在前两项之后添加此项?)
我如何让WordPress将这个动态生成的菜单项视为常规菜单项,并添加所有添加其他菜单项的类(通过WordPress菜单功能创建)?
谢谢你的帮助.
这是您可以使用 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>
Run Code Online (Sandbox Code Playgroud)
您还可以使用insertBefore函数