web-development-kb-asia.site

wp_nav_menu () wadah khusus dan container_id

Jadi hari ini saya mulai mengerjakan tema Wordpress pertama saya dan sejauh ini sangat menyenangkan. Namun, saya kesulitan mendapatkan wp_nav_menu () untuk melakukan apa yang saya inginkan.

Inilah yang saya inginkan:

<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>

Melihat dalam dokumentasi, saya mengharapkan panggilan berikut untuk melakukan apa yang saya inginkan:

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

Tetapi sebaliknya saya mendapatkan ini:

<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>

Bagi saya sepertinya parameter khusus saya diabaikan karena output dari wp_nav_menu() persis sama. Apakah ada sesuatu yang harus saya nyalakan di suatu tempat untuk mengaktifkan ini atau ada sesuatu yang terjadi?

EDIT

Anehnya, jika saya mengubah menu_class itu mengubah kelas div (saya harapkan div menjadi wadah) tetapi mengubah menu_id tidak melakukan apa-apa.

EDIT 2

Bahkan masuk ke nav-menu-template.php dan mengubah default untuk container, container_id, container_class, menu_id tidak melakukan apa-apa. Mengubah menu_class ke yyy akan mengubah kelas div dari menu ke yyy.

3
Tom Savage

saya punya masalah simpan: itu karena jika Anda tidak membuat menu di admin wordpress menggunakan metode mundur dan membuat menu dari semua halaman aktif ... dan jika ini terjadi maka opsi dari wp_nav_menu tidak digunakan .. .

jadi: cukup buat menu di admin dan kamu bisa mengganti wrapper-tag menjadi "nav"

6
user2802

Pertama-tama, Anda tidak akan bisa mendapatkan WordPress untuk menghasilkan segala jenis elemen <nav> menggunakan fungsi asli. <nav> adalah tag HTML5, dan WordPress dibuat untuk menghasilkan output XHTML ... yaitu tidak ada elemen <nav>.


Edit: Rupanya fungsi tersebut memungkinkan nav ... tetapi perlu diingat bahwa sisa inti WordPress masih dibangun untuk menghasilkan XHTML, bukan HTML5 ... hati-hati untuk memastikan situs Anda divalidasi dengan benar .


Coba hapus referensi itu ... itu mungkin menyebabkan kesalahan yang mengabaikan instruksi 'container_id' => 'topnav' Anda. Jika semuanya berjalan dengan baik tanpa referensi ke nav Anda harus memiliki ini:

<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

tidak yakin apakah ada yang masih mencari untuk menyelesaikan ini - tetapi baru saja di sini mencoba menemukan jawabannya sendiri - saya pikir saya akan membagikan solusi saya :)

Juga ingin menggunakan <nav> alih-alih elemen <div> dan menyelesaikannya dengan menghapus <div>, seperti yang dinyatakan pada halaman ini, wordpress codex:http://codex.wordpress.org/ Function_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' );
?>

Ditambahkan ke file functions.php saya, menandai file tema dengan tag <nav> & semua berfungsi dengan baik untuk saya;) semoga ini membantu :)

0
user3160