如何在搜索表单中插入跨度?

时间:2017-03-11 作者:Zelda

当我打电话时get_search_form(), 它输出:

<form class="search-form">
  <meta itemprop="target">
  <input type="search">
  <input type="submit">
</form>
但我想用span 内部,如:

<form class="search-form">
  <meta itemprop="target">
  <input type="search">
  <span class="submit-icon"></span>
  <input type="submit">
</form>
有什么想法吗?

3 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

如果我们看一下get_search_form(), 请注意,在呈现窗体之前search_form_format 过滤器挂钩被触发。我们可以使用它添加另一个附加到get_search_form 其中回调取决于格式。

add_filter( \'search_form_format\', \'wpse_259716_search_form_format\', 99, 1 );
function wpse_259716_search_form_format( $format ) {
  if( in_array( $format, array( \'xhtml\', \'html5\' ) ) ) {
    add_filter( \'get_search_form\', "wpse_259716_get_search_form_$format", 99, 1 );
  }
  return $format;
}

function wpse_259716_get_search_form_xhtml( $form ) {
  $search = \'<input type="submit"\';
  $xhtml = \'some xhtml\';
  $replace = $xhtml . $search;
  return str_replace( $search, $replace, $form );
}

function wpse_259716_get_search_form_html5( $form ) {
  $search = \'<input type="submit"\';
  $html5 = \'some html5\';
  $replace = $html5 . $search;
  return str_replace( $search, $replace, $form );
}
或者,您可以使用基于类的方法。

$wpse_259716 = new wpse_259716();
add_filter( \'search_form_format\', array( $wpse_259716, \'search_form_format\' ), 99, 1 );
add_filter( \'get_search_form\', array( $wpse_259716, \'get_search_form\' ), 99, 1 );

class wpse_259716 {
  protected $format;
  public function search_form_format( $format ) {
    return $this->format = $format;
  }
  public function get_search_form( $form ) {
    $search = $replace = \'<input type="submit"\';
    if( \'xhtml\' === $this->format ) {
      $xhtml = \'some xhtml\';
      $replace = $xhmtl . $search;
    }
    elseif( \'html5\' === $this->format ) {
      $html5 = \'some html5\';
      $replace = $html5 . $search;
    }
    return str_replace( $search, $replace, $form );
  }
}

SO网友:Faysal Mahamud

经过测试,工作正常。

在函数中添加此代码。php,你会得到你想要的。现在,您可以根据需要修改搜索表单。

function my_search_form( $form ) {
    $form = \'<form role="search" method="get" class="search-form" action="\' . home_url( \'/\' ) . \'" >
    <div><label>
        <span class="screen-reader-text"> \' . _x( \'Search for:\', \'label\' ) .\'</span>
        <input type="search" class="search-field"
            placeholder="\' . get_search_query() . \'"
            value="\' . get_search_query().\'" name="s"
            title="\' . esc_attr_x( \'Search for:\', \'label\' ).\' " />
    </label>
    <span class="submit-icon"></span>
    <input type="submit" class="search-submit"
        value="\' . esc_attr_x( \'Search\', \'submit button\' ). \'" />
      </form>
    \';

    return $form;
}
add_filter( \'get_search_form\', \'my_search_form\', 99 );
echo get_search_form();

SO网友:Md. Amanur Rahman

您需要创建一个名为searchform的php文件。主题中的php。。然后像下面这样复制并粘贴搜索表单代码

<form method="get" id="searchform" action="<?php echo esc_url( home_url( \'/\' ) ); ?>">
        <label for="s" class="assistive-text"><?php _e( \'Search\', \'theme_text_domain\' ); ?></label>
        <input type="text" class="field" name="s" id="s" placeholder="<?php esc_attr_e( \'Search\', \'theme_text_domain\' ); ?>" />
        <input type="submit" class="submit" name="submit" id="searchsubmit" value="<?php esc_attr_e( \'Search\', \'theme_text_domain\' ); ?>" />
    </form>
现在,您可以修改表单,删除或插入上述代码中的任何内容。。

相关推荐

Change searched term

因此,我正在尝试设置一个搜索表单,其中实际搜索的词与用户输入的词不同。具体来说,我需要删除搜索词中的任何破折号。例如,假设用户输入“7-18”。搜索实际需要查询的是“718”。我在想pre_get_posts 也许是一种方式,但我不知道如何去写它。类似于function alter_query($query) { $unedit = the_search_query(); $edited = str_replace(\"-\",\"\",$unedit); the_sea