2014-10-03 16 views
6

Tôi đang cố gắng ra một trình đơn wp mà không cần ul và li và có một lớp được thêm vào phần tử.Cách thêm lớp vào liên kết trong wp_nav_menu?

Tôi đã thử thêm này trong function.php tôi

function add_menuclass($ulclass) { 
    return preg_replace('/<a /', '<a class="list-group-item"', $ulclass, 1); 
} 
add_filter('wp_nav_menu','add_menuclass'); 

Và trong mẫu của tôi, tôi có:

<?php 
$menuParameters = array(
    'menu' => 'Videos', 
    'container'  => false, 
    'echo'   => false, 
    'items_wrap'  => '%3$s', 
    'depth'   => 0, 
); 

    echo strip_tags(wp_nav_menu($menuParameters), '<a>'); 
?> 

Nhưng sản lượng chỉ áp dụng cho các lớp học để mục đầu tiên và không phải tất cả như mong đợi.

<div class="list-group"> 
    <a class="list-group-item" href="#">First item</a> 
    <a href="#">Second item</a> 
</div> 

Tôi cố gắng để đạt được điều này, về cơ bản để áp dụng lớp mà cho TẤT CẢ mục của tôi (không chắc chắn lý do tại sao nó áp dụng nó để chỉ một) - Không jQuery xin vui lòng.

<div class="list-group"> 
    <a class="list-group-item" href="#">First item</a> 
    <a class="list-group-item" href="#">Second item</a> 
</div> 
+0

http://php.net/manual/en/function.preg-replace.php - tham số thứ tư, '$ limit'. Bạn đang đặt nó thành '1'. Đọc tài liệu. Rất rõ ràng _why_ điều này xảy ra khi bạn yêu cầu nó hoạt động như thế. –

+0

Để làm rõ, bạn muốn thêm một lớp bổ sung cho mỗi trong menu? –

+0

@rob_was_taken yes chính xác –

Trả lời

6

Nhờ Sergiu Paraschiv bình luận vấn đề này là trong trường hợp hạn chế để 1.

Vì vậy nó phải ở trong function.php:

function add_menuclass($ulclass) { 
    return preg_replace('/<a /', '<a class="list-group-item"', $ulclass); 
} 
add_filter('wp_nav_menu','add_menuclass'); 

CẬP NHẬT

Xem cũng this answer để có giải pháp cụ thể hơn.

+2

Cảm ơn bạn đã cập nhật câu trả lời của mình. –

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