Bất kỳ tài liệu nào cho đối số của wp_nav_menu's các mặt hàng_wrap Cảnh?


42

Tôi đang sử dụng wp_nav_menu và đang cố gắng tạo đầu ra tùy chỉnh cho các trình đơn thả xuống cấp phụ. Tôi đã bắt gặp đối số "items_wrap" nhưng thực sự không có nhiều thông tin về nó là gì, cách thức hoạt động và loại điều gì có thể được thực hiện với nó.

Chính xác thì " % 1 $ s " và " % 2 $ s " là gì? (Bất cứ ai cũng có thể giải thích nó trong điều khoản của giáo dân?)

Câu trả lời:


57

Tham số 'items_wrap'cho wp_nav_menu()mặc định là:

'<ul id="%1$s" class="%2$s">%3$s</ul>' 

Aa này mẫu được phân tích với sprintf():

$nav_menu .= sprintf( 
    $args->items_wrap
,   esc_attr( $wrap_id )    // %1$s
,   esc_attr( $wrap_class ) // %2$s
,   $items                  // %3$s
);

Giữ chỗ đánh số - %1$s, %2$s, %3$s- tham khảo các luận cứ sau đối số đầu tiên trong sprintf(). Dấu phần trăm đánh dấu một trình giữ chỗ, số vị trí và loại scó nghĩa là nó phải được coi là một chuỗi.
Không thay đổi loại trừ khi bạn thực sự biết những gì bạn làm. :)

  • $wrap_idlà tham số 'menu_id'nếu bạn đã đặt nó, nó khác 'menu-' . $menu->slug.
  • $wrap_classlà tham số 'menu_class'nếu bạn đã đặt, nếu không nó sẽ trống.
  • $items là một chuỗi các nội dung bên trong của menu.

Giả sử bạn không cần a class. Chỉ cần bỏ qua chuỗi thứ hai:

wp_nav_menu( array( 'items_wrap' => '<ul id="%1$s">%3$s</ul>' ) );

Nếu bạn không cần classid, và bạn muốn một container khác (vì bạn đã sử dụng một walker tùy chỉnh ):

wp_nav_menu( array( 'items_wrap' => '<div>%3$s</div>' ) );

Điểm chính là: Bạn phải sử dụng các số cho các thay thế được đưa vào wp_nav_menu(). %3$sluôn luôn là danh sách các mặt hàng.


Cảm ơn đã cố gắng giải thích. Tôi sắp xếp để xem nhưng nó không hiệu quả với tôi. Tôi muốn thêm nói một lớp vào các mục li của tôi. Bạn dường như đang sử dụng ul cho mỗi mục? Tôi cũng không thấy bất kỳ sprintf nào trong mã của mình vì vậy nó không rõ ràng.
hạ cánh

1
@landed Đây là cho toàn bộ menu , không phải cho mỗi mục. Vui lòng sử dụng tìm kiếm của chúng tôi, chúng tôi có các giải pháp hiện có cho vấn đề của bạn.
fuxia

Tôi đã tìm kiếm trên web và những người khác có cùng một vấn đề tôi cần để mở rộng lớp walker và thêm html của tôi vào đó, nó hoạt động tốt với tôi nhưng tôi đã phải sao chép khá nhiều mã từ lớp cũ và đổi tên nó và thay đổi nó sau đó đặt menu để sử dụng lớp walker tùy chỉnh của tôi. Cảm ơn
hạ cánh

Tôi có thể đến bữa tiệc muộn một chút nhưng nếu bạn muốn giới thiệu văn bản items_wrapthì bạn sẽ làm thế nào?
henrywright

@henrywright Dịch các giá trị trước, chuyển chúng vào chuỗi.
fuxia

0

từ những gì tôi thu thập được, nó lấy một đầu ra và cung cấp cho li một id và lớp với tên menu. Vì vậy, khi bạn muốn tạo kiểu cho một menu cụ thể, bạn lấy id và hoặc class của nó nếu bạn muốn tạo kiểu cho nó. 1 và 2 chỉ là một đầu ra khác nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.