使用插件修改搜索表单

时间:2017-06-06 作者:Mike

我想添加<input type="hidden" name="post_type" value="product"> 在表单中搜索我将使用的任何主题。

我读到我不应该修改主题本身,但create a plugin.

所以我创建了插件:

add_filter(\'get_search_form\', \'my_search_form\');
function my_search_form($html) {
 $html =\'

 <form role="search" method="get" class="searchform" action="\'.esc_url( home_url( \'/\' ) ).\'>
<!--asdf!-->
<input type="hidden" name="post_type" value="product">
    <input type="search" class="search-field" placeholder="\'.esc_attr_x( \'Search &hellip;\', \'placeholder\', \'estore\' ).\'" value="\'.esc_attr( get_search_query() ).\'" name="s">
    <button type="submit" class="searchsubmit" name="submit" value="\'.esc_attr_x( \'Search\', \'submit button\', \'estore\' ).\'"><i class="fa fa-search"></i></button>
</form>\';

 return $html;
}
主题有searchform.php 使用原始表单,插件不会更改它。

我该怎么办?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

这里有一种替代方法,只需product post类型可从插件代码中搜索:

<?php
/** Plugin Name: Product Search Only **/

add_filter( \'register_post_type_args\', function( $args, $post_type )
{
    $args[\'exclude_from_search\'] = true;

    if( \'product\' === $post_type && (bool) $args[\'public\'] )
        $args[\'exclude_from_search\'] = false;

    return $args;
}, 999, 2 );
在这里,我们通过设置exclude_from_search 为true,适用于所有帖子类型,公共帖子除外product 岗位类型。如果需要,您可以调整延迟优先级。

结束

相关推荐

custom search result page

我所做的,我创建搜索。php<?php get_header(); ?> <div class=\"wapper\"> <div class=\"contentarea clearfix\"> <div class=\"content\"> <h1 class=\"search-title\"> <?php echo $wp_query->found_posts; ?>&#