我有一个手机和一个大屏幕搜索栏。我正在尝试将这两个加载到同一页上。我正在使用JointsWP初学者主题。
以下是功能:
function joints_wpsearch($form) {
$form = \'<form role="search" method="get" id="searchform" action="\' . home_url( \'/\' ) . \'" >
<div class="small-10 columns no-pad">
<input type="text" value="\' . get_search_query() . \'" name="s" id="s" placeholder="\'.esc_attr__(\'Search the Site\',\'jointstheme\').\'" />
</div>
<div class="small-2 columns no-pad srchBtn">
</div>
</form>\';
return $form;
}
function custom_search( $form ) {
$form = \'<form role="search" method="get" id="searchform2" action="\' . home_url( \'/\' ) . \'" >
<div class="medium-11 small-10 columns no-pad">
<input type="text" value="\' . get_search_query() . \'" name="s" id="s2" placeholder="\'.esc_attr__(\'Search the Site\',\'jointstheme\').\'" />
</div>
<div class="medium-1 small-2 columns no-pad">
<input type="submit" id="searchsubmit" class="srchBtn2" value="" />
</div>
</div>
</form>\';
return $form;
}
这是我的钩子:
add_filter( \'get_search_form\', \'joints_wpsearch\' );
add_filter( \'get_search_form\', \'custom_search\' );
以下是我在HTML文件中输入的名称:
<?php get_search_form(\'custom_search\'); ?>
<?php get_search_form(\'joints_wpsearch\'); ?>
但它会为这两个项目加载custom\\u搜索表单。我做错了什么。这是我能做的吗。我仍在学习WordPress,但我认为这是我能做到的。
最合适的回答,由SO网友:webtoure 整理而成
这个get_search_form
函数不是这样工作的。仅接受的参数指定HTML
直接返回或输出内容。所以这个参数应该是布尔值。它仍然适用于您的情况,因为PHP只是将您传递的字符串计算为true,考虑到它不是空字符串,0,null
等等。如果将“null”作为字符串传递,而不是null
关键字:)
如果你不愿意写你自己的基础get_search_form
实施(如果您look in the source code - 这个locate_template
函数发挥了所有的魔力,所以只需将一个变量传递给具有模板名称的函数,并在调用locate_template
函数)您可以在调用get_search_form
使用您想要使用的HTML。
然后,当连接到get_search_form
过滤器,只需检查全局变量设置为什么,并返回适当的HTML
所容纳之物WordPress内部使用了很多全局变量,所以我想你应该遵循已经存在的坏习惯(以防你很难使用全局变量)。