同一页上的两个搜索表单

时间:2015-07-05 作者:agon024

我有一个手机和一个大屏幕搜索栏。我正在尝试将这两个加载到同一页上。我正在使用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,但我认为这是我能做到的。

1 个回复
最合适的回答,由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内部使用了很多全局变量,所以我想你应该遵循已经存在的坏习惯(以防你很难使用全局变量)。

结束

相关推荐

Functions.php中的入队样式

这对我没用functions.php: if( is_page_template( \'template-flat.php\' ) ) { function flatsome_scripts() { wp_enqueue_style( \'flatsome-style\', get_template_directory_uri() .\'/flatash/css/foundation.css\', array(), \'2.1\', \'all\'); }