Добавление формы поиска внутри 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() );

}

документация get_search_form

2 ответа

Решение

Решение заключается в использовании get_search_form( false )

get_search_form() выведет форму поиска. Поскольку вы пытаетесь использовать результат в строковом контексте, вам нужна функция для возврата HTML в виде строки, через которую вы проходите printf,

Единственный параметр для get_search_form контролирует это поведение. По умолчанию он печатает, но если вы передадите false, он вернет нужную вам строку.

Чтобы получить форму поиска в виде строки, используйте get_search_form( false ),

Использование может увидеть документ этой функции здесь.

Другие вопросы по тегам