it-swarm-vi.tech

wp_nav_menu () container tùy chỉnh và container_id

Vì vậy, hôm nay tôi bắt đầu làm việc với chủ đề Wordpress đầu tiên của mình và cho đến nay nó đã rất vui. Tuy nhiên, tôi đã gặp khó khăn khi nhận wp_nav_menu () để làm những gì tôi muốn.

Đây là những gì tôi muốn:

<nav id="topnav" class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</nav>

Nhìn vào tài liệu, tôi mong muốn cuộc gọi sau sẽ thực hiện những gì tôi muốn:

<?php wp_nav_menu(array( 'container' => 'nav', 'container_id' => 'topnav' )); ?>

Nhưng thay vào đó tôi nhận được điều này:

<div class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</div>

Đối với tôi, có vẻ như các tham số tùy chỉnh của tôi đang bị bỏ qua vì đầu ra từ wp_nav_menu() hoàn toàn giống nhau. Có cái gì tôi cần bật ở đâu đó để kích hoạt cái này hay có cái gì khác đang xảy ra không?

CHỈNH SỬA

Thật kỳ lạ, nếu tôi thay đổi menu_class thì nó sẽ thay đổi lớp div (tôi dự đoán div sẽ là container) nhưng thay đổi menu_id thì không có gì.

CHỈNH SỬA 2

Ngay cả việc đi vào nav-menu-template.php và thay đổi mặc định cho container, container_id, container_group, menu_id không làm gì cả. Thay đổi menu_group thành yyy sẽ thay đổi lớp div từ menu sang yyy.

3
Tom Savage

tôi gặp vấn đề về lưu: đó là vì nếu bạn không tạo menu trong quản trị wordpress, hãy sử dụng phương pháp dự phòng và tạo menu trong tất cả các trang đang hoạt động ... và nếu điều này xảy ra thì các tùy chọn từ wp_nav_menu không được sử dụng .. .

vì vậy: chỉ cần tạo menu trong quản trị viên và bạn có thể thay đổi thẻ trình bao bọc thành "nav"

6
user2802

Trước hết, bạn sẽ không thể khiến WordPress xuất bất kỳ loại phần tử <nav> nào bằng các hàm riêng. <nav> là thẻ HTML5 và WordPress được xây dựng để tạo đầu ra XHTML ... tức là không có phần tử <nav>.


Chỉnh sửa : Rõ ràng chức năng cho phép nav ... nhưng hãy nhớ rằng phần còn lại của lõi WordPress vẫn được xây dựng để xuất XHTML, chứ không phải HTML5 ... hãy cẩn thận để đảm bảo trang web của bạn xác thực đúng cách


Hãy thử xóa tham chiếu đó ... nó có thể gây ra lỗi mà bỏ qua hướng dẫn 'container_id' => 'topnav' của bạn. Nếu mọi thứ hoạt động tốt mà không cần tham chiếu đến nav, bạn nên có điều này:

<div id="topnav" class="menu">
   <ul>
      <li class="current_page_item"><a href="#" title="Home">Home</a></li>
      <li class="page_item page-item-2"><a href="#" title="About">About</a></li>
   </ul>
</div>
1
EAMann
1
hakre

không chắc có ai còn tìm cách giải quyết vấn đề này không - nhưng chỉ cần đến đây cố gắng tự tìm câu trả lời - tôi nghĩ tôi sẽ chia sẻ giải pháp của mình :)

Cũng muốn sử dụng phần tử <nav> thay vì phần tử <div> và giải quyết nó bằng cách xóa <div>, như đã nêu trên trang này, wordpress codex:http://codex.wordpress.org/ Hàm_Reference/wp_nav_menu :

<?php
function my_wp_nav_menu_args( $args = '' )
{
    $args['container'] = false;
    return $args;
} // function

add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );
?>

Đã thêm vào tệp tin.php của tôi, đánh dấu tệp chủ đề bằng thẻ <nav> và tất cả đều hoạt động tốt với tôi;) hy vọng điều này sẽ giúp :)

0
user3160