2012-11-03 49 views
5

Tôi có một menu WordPress có một số mục menu tôi đã thêm thông qua tính năng menu quản trị WordPress (kéo và thả) chuẩn. Gần đây tôi đã phải thêm một mục khác vào menu tạo liên kết href động. Tôi đạt được rằng việc sử dụng đoạn mã sau vào file functions.php của tôi:Thêm mục menu tùy chỉnh vào menu WordPress

// thêm mục trình đơn hồ sơ của tôi dynmacially vào menu thành viên (tạo tên người dùng dựa trên người dùng hiện đã đăng nhập)

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

chức năng 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; 

}

Vấn đề của tôi là rằng mục trình đơn này sẽ được thêm vào cuối menu và các lớp WordPress đơn thường xuyên như vậy như 'current-menu-item' không được áp dụng cho mục này. Có cách nào để tôi kiểm soát vị trí của mục menu này được thêm vào (Ví dụ: thêm mục này sau hai mục đầu tiên không?)

và làm cách nào để WordPress xử lý mục menu được tạo động này một mục trình đơn thông thường và có thêm tất cả các lớp mà nó thêm các mục menu khác (được tạo thông qua tính năng menu WordPress) không?

Cảm ơn bạn đã được trợ giúp.

+0

bạn muốn thử jquery? – loQ

+0

vâng tôi xin vui lòng – Dmitri

Trả lời

1

Dưới đây là logic mà bạn có thể căn cứ sử dụng 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> 

Bạn cũng có thể sử dụng chức năng insertBefore

+0

Cảm ơn bạn rất nhiều! điều này thật tuyệt vời! – Dmitri

+0

jquery thật tuyệt vời !! – loQ

+0

Điều này thật khủng khiếp. Không có lý do gì để sử dụng JavaScript ở đây. –

0

Bạn có kiểm tra tùy chọn menu Wordpress trong trình đơn chủ đề-> cho mục này không? Bạn có thể dễ dàng thêm menu từ đó, bạn cũng có thể đặt menu tùy chỉnh từ đó.Hy vọng nó sẽ giúp bạn.

+0

cảm ơn tôi có, nhưng vấn đề là liên kết của các mục trình đơn được tạo ra tự động vì vậy wordpress themes-> menu không cho phép chức năng đó. – Dmitri

+0

Có các menu wordpress được tạo động nhưng bạn có thể cấu hình theo thứ tự cũng như tạo menu tùy chỉnh với tùy chọn url tùy chỉnh dưới dạng admin side. –

Các vấn đề liên quan