こんにちは、私は次のことを達成したいのです。検索入力欄を登録メニューにしたいそのため、私はwpbeginner.comチュートリアルを読みました。これは基本的にはフィルタフックを使ったアプローチに従っています。
add_filter('wp_nav_menu_items','add_search_box_to_menu', 10, 2);
function add_search_box_to_menu( $items, $args ) {
if( $args->theme_location == 'primary' ){
return $items."<li class='menu-header-search'><form action='http://example.com/' id='searchform' method='get'><input type='text' name='s' id='s' placeholder='Search'></form></li>";
}
return $items;
}
だからこれは私の人生で最初のフィルターフックになるようです。 "search-widget"出力に似たhtml出力を得るために、私はこの解決策を思いつきます。私の初心者の意見では、それはより悪いコーディングの例であるように思われます。
function add_search_box_to_menu($items, $args) {
if ($args->theme_location == 'menu-1') {
return $items . "<li class='search-field'>"
. "<form action='"
. esc_url(home_url())
. "' id='searchform'"
. " method='get'"
. "role ='search'>"
. "<label>"
. "<span class='screen-reader-text'>"
. esc_html__('Search for:', 'bloook')
. "</span>"
. "<input type='search' name='s' id='s' "
. "placeholder='"
. esc_html__('Search', 'bloook')
. "'>"
. "</label>"
. "<input class='search-submit' value ='"
. esc_html__('Search', 'bloook')
. "' type='submit'>"
. "</form></li>";
}
return $items;
}
add_filter('wp_nav_menu_items', 'add_search_box_to_menu', 10, 2);
うまくいっているようですが…。これが私の質問です。
私の目標を達成するためのより保守可能な、またはより明確な方法があるかどうか、私は思っています(PHP、WPおよび英語)のnoobとして?
それとも…私は自分の低レベルのphpスキルだけでイライラしていませんか?それともあなたにとって普通のコードのように見えますか?
このようなフィルタフックのための良い場所はどこにありますか(実際にはナビゲーションの登録のすぐ下のfunctions.phpに置かれています)?
事前に感謝します
これは問題ありませんが、物事を「きれいに」見せ、変更しやすくしたい場合は、代わりに新しいファイルmenu-search.phpを作成してそこにHTMLを追加してから、関数を少し微調整してください。あなたの機能)
function myprefix_add_search_box_to_menu($items, $args) {
if ( $args->theme_location == 'menu-1' ) {
ob_start();
get_template_part( 'menu-search' );
$items .= ob_get_clean();
}
return $items;
add_filter( 'wp_nav_menu_items'、 'myprefix_add_search_box_to_menu'、10、2);