Làm cách nào để tránh xung đột ID wp_nav_menu ()?


7

Làm cách nào để tránh xung đột ID nếu tôi sử dụng cùng menu TWICE trên một trang.

ĐẦU TIÊN

wp_nav_menu( array( 'sort_column' => 'menu_order', 
'theme_location'=>'menu', 'menu_class'=>'menu', 'menu_id'=>'menu' ) );

THỨ HAI:

wp_nav_menu( array( 'sort_column' => 'menu_order', 
'theme_location'=>'menu', 'menu_class'=>'menu2', 'menu_id'=>'menu2' ) );

Xung đột ID giống như "Trình đơn ID trùng lặp-mục-2456" ... Có giải pháp nào không?


Bạn không được phép sử dụng cùng một theme_location, bạn có thể xác định cái thứ hai không?
Mario Peshev

Điều này không thể xảy ra với các 'theme_location's khác nhau . Tôi sẽ xóa câu trả lời của tôi.
fuxia

Câu trả lời:


2

Giải pháp là không gọi 'theme_location'nhiều hơn một lần. Vị trí chủ đề được dự định để đại diện cho một vị trí rõ ràng trong mẫu .

Chỉ cần đăng ký riêng 'theme_location'cho từng vị trí riêng biệt trong mẫu mà bạn muốn hiển thị menu điều hướng.

Coi 'theme_location'tên bạn đã chọn là tên ngữ nghĩa , đại diện cho vị trí mẫu của menu. Bạn có thể sử dụng 'primary''secondary'hoặc 'header''footer', v.v .:

<?php
function wpse55380_setup_theme() {

    // Register nav menu locations
    register_nav_menus( array(
        'header' => 'Header Menu',
        'footer' => 'Footer Menu'
    ) );
}
add_action( 'after_setup_theme', 'wpse55380_setup_theme' ); 

...hoặc là:

<?php
function wpse55380_setup_theme() {

    // Register nav menu locations
    register_nav_menus( array(
        'primary'   => 'Primary Header Menu',
        'secondary' => 'Secondary Header Menu'
    ) );
}
add_action( 'after_setup_theme', 'wpse55380_setup_theme' ); 

Sau đó, tùy thuộc vào người dùng cuối để gán các menu tùy chỉnh cho từng Vị trí chủ đề.


Cảm ơn bạn :) Vâng, điều này trả lời câu hỏi của tôi nhưng nếu tôi muốn sử dụng "Menu Header" như menu bình thường và chính xác cùng một menu trong phiên bản nhỏ gọn (ví dụ: nó ẩn "Menu Header" và hiển thị "Menu Header nhỏ gọn" trên blog cho tiết kiệm không gian)? Thật bất tiện khi yêu cầu người dùng chủ đề thiết lập cùng một menu hai lần. Bất kỳ đề xuất?
Paul

2
Đối với một: sự khác biệt thực tế giữa Menu HeaderCompact Header Menu là gì? Biết được sự khác biệt sẽ giúp xác định cách tốt nhất để thực hiện. Đối với người khác: Tôi thực sự không đồng ý rằng đó là hình thức kém khi yêu cầu người dùng xác định hai menu riêng cho hai trường hợp sử dụng riêng biệt . Trên thực tế, việc tạo một Theme đáp ứng / di động rất có thể liên quan đến việc người dùng xác định một menu đầy đủ một menu nhỏ gọn / rút gọn, để xuất ra tùy thuộc vào ngữ cảnh.
Chip Bennett

"Menu Header" hoàn toàn giống với "Menu Header nhỏ gọn". Ẩn đầu tiên và thứ hai xuất hiện để tạo thêm không gian cho nội dung. Có, đó là hành vi đáp ứng / di động để tiết kiệm không gian. Tôi không muốn ảnh hưởng đến phong cách CSS để đạt được điều đó. Trong trường hợp cụ thể này, nó phải giống nhau vì nó chỉ xuất hiện khi cửa sổ POPUP có nội dung xuất hiện.
Paul

" " Menu tiêu đề "hoàn toàn giống với" Menu tiêu đề nhỏ gọn ". " Không thể ; nếu không, tại sao thậm chí có hai menu riêng biệt? Nếu họ không khác nhau liên quan đến CSS, sau đó như thế nào là họ khác nhau?
Chip Bennett

Menu bình thường có chiều cao 150px và các biểu tượng, menu thứ hai có chiều cao 30px, không có biểu tượng, chỉ có văn bản. Đầu tiên trượt lên khỏi màn hình và lần thứ hai trượt xuống (để hiển thị) bằng jQuery.
Paul
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.