1

我想使用下面的代码在 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 文档

4

2 回答 2

1

解决方案是使用get_search_form( false )

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

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

于 2017-03-09T09:09:56.220 回答
0

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

使用可以在这里查看该功能的文档。

于 2017-03-09T13:43:49.533 回答