在 Wordpress 的 div 中添加搜索表单

Adding a search form inside a div in 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 documentation

解决方案是使用get_search_form( false )

get_search_form() 输出 搜索表单。由于您试图在字符串上下文中使用结果,因此您需要函数以字符串形式 return html,您正在通过 printf.

get_search_form 的唯一参数控制该行为。默认情况下它会打印,但如果您传递 false,它将 return 您需要的字符串。

要将搜索表单作为字符串使用 get_search_form( false )

使用可以查看此功能的文档here