Saya membuat custom walker pertama saya untuk membangun menu akordeon. Untuk mulai dengan saya menggunakan contoh ini: http://bitacre.com/2025/custom-nav-menu-walker-for-wordpress-themes
Ada dua fungsi. Pertama start_lvl dan kemudian start_el.
Di start_el ID dapat diimplementasikan oleh $ item-> ID. Adakah yang tahu bagaimana saya bisa melakukan ini di start_lvl juga? Saya perlu memberikan (mengelilingi navigasi level bawah) ID sehingga saya dapat memicunya runtuh di menu akordeon.
Apa yang saya coba hasilkan adalah seperti ini:
<a href="#collapse2">Titel 2</a>
<ul id="collapse2">Lower Level Menu 2</ul>
<a href="#collapse3">Titel 3</a>
<ul id="collapse3">Lower Level Menu 3</ul>
Kode saya untuk fungsi start_lvl:
// add id's and classes to ul sub-menus
function start_lvl( &$output, $depth, $item ) {
// depth dependent classes
$indent = ( $depth > 0 ? str_repeat( "\t", $depth ) : '' ); // code indent
$display_depth = ( $depth + 1); // because it counts the first submenu as 0
$pgid = ; // How to get ID in here??
$classes = array(
'sub-menu',
( $display_depth == 1 ? 'accordion-body collapse' : '' ),
( $display_depth % 2 ? 'menu-odd' : 'menu-even' ),
( $display_depth >=2 ? 'sub-sub-menu' : '' ),
'menu-depth-' . $display_depth
);
$ids = array(
'collapse' . $pgid
);
$class_names = implode( ' ', $classes );
$id_name = implode( ' ', $ids );
// build html
$output .= "\n" . $indent . '<ul id="' . $id_name . '" class="' . $class_names . '">' . "\n";
}
sumber
Saya memiliki masalah yang sama dan menyelesaikannya dengan menggunakan variabel statis di dalam kelas:
Dan kemudian di "display_element" saya menambahkan variabel:
Dalam kode saya, saya kemudian direferensikan dalam fungsi start_lvl sesuatu seperti ini:
Ini tidak menggunakan ID halaman, tetapi ia menggunakan ID unik untuk pernyataan UL yang dapat dirujuk oleh javascript.
BTW - Ini benar-benar hanya berguna untuk akordeon bersarang, atau dropdown bersarang yang dapat diklik di Tema Roots menggunakan Bootstrap untuk aplikasi seluler.
sumber
Anda dapat menggunakan filter berikut ini di
start_el
fungsi Anda dan grub argumen Anda distart_lvl
fungsi.Tolong beri tahu saya jika itu berhasil.
sumber
Anda cukup menambahkan $ page ke argumen custom walker:
Coba yang di atas dan kemudian sebelum Anda menelepon wp_list_pages (), tambahkan kelas custom walker:
Kemudian, dalam argumen untuk wp_list_pages:
Periksa dan lihat apakah output walker berwarna merah.
sumber