質問: wp_nav_menuを使用して選択メニューのドロップダウンを作成する方法 wp_nav_menu 関数内で次のように使用して、各メニュー項目が選択ドロップダウンのオプションになっている選択ドロップダウンメニューを作成します。'items_wrap' => '<select>%3$s</select>' 'before' => '<option value="">' 'after' => '</option>' 'before'宣言にリンク値を追加するにはどうすればいいですか?これについてより良い方法はありますか? wp_dropdown_pages については知っていますが、ユーザーに "メニュー"ページからメニューを制御できるようにしたいので、それはうまくいきません。
回答: wp_nav_menuではこれを行うことができません。リスト項目が出力され、コードで無効なマークアップが生成されるためです。代わりに wp_get_nav_menu_items() を使用してください。class walker_nav_menu_dropdown extends walker_nav_menu{ // don't output children opening tag (`<ul>`) public function start_lvl(&$output, $depth){} // don't output children closing tag public function end_lvl(&$output, $depth){} public function start_el(&$output, $item, $depth, $args){ // add spacing to the title based on the current depth $item->title = str_repeat("&nbsp;", $depth * 4) . $item->title; // call the prototype and replace the <li> tag // from the generated markup... parent::start_el(&$output, $item, $depth, $args); $output = str_replace('<li', '<option', $output); } // replace closing </li> with the closing option tag public function end_el(&$output, $item, $depth){ $output .= "</option>\n"; } } あなたのテンプレートでは、これを次のように使用してください。wp_nav_menu(array( 'theme_location' => 'primary', // your theme location here 'walker' => new walker_nav_menu_dropdown(), 'items_wrap' => '<select>%3$s</select>', ));