Добавление формы поиска внутри div в Wordpress
Я хотел добавить форму поиска внутри div, используя код ниже:
printf( '<div class="entry"><p>%s</p>%s</div>', apply_filters( 'genesis_noposts_text', __( 'Try again below.', 'genesis' ) ), get_search_form() );
Но каждый раз, когда я добавляю get_search_form()
он генерируется перед div, как показано ниже:
<form></form>
<div class="entry"></div>
Обходной путь, который я нашел, состоял в том, чтобы разделить код, но я хотел знать, есть ли лучшее решение, которое работает должным образом.
remove_action( 'genesis_loop_else', 'genesis_do_noposts' );
add_action( 'genesis_loop_else', 'mytheme_do_noposts' );
function mytheme_do_noposts() {
printf( '<div class="entry"><p>%s</p>', apply_filters( 'genesis_noposts_text', __( 'Try again below.', 'genesis' ) ) );
printf( '%s</div>', get_search_form() );
}
2 ответа
Решение заключается в использовании get_search_form( false )
get_search_form()
выведет форму поиска. Поскольку вы пытаетесь использовать результат в строковом контексте, вам нужна функция для возврата HTML в виде строки, через которую вы проходите printf
,
Единственный параметр для get_search_form
контролирует это поведение. По умолчанию он печатает, но если вы передадите false
, он вернет нужную вам строку.
Чтобы получить форму поиска в виде строки, используйте get_search_form( false )
,
Использование может увидеть документ этой функции здесь.