将搜索限制为网站中的特定文件夹

时间:2015-03-20 作者:bloxham

我正试图将网站上的搜索功能限制为博客文件夹中的在线内容。原因是,目前,搜索可以在整个网站上运行,这在理论上是很好的,只是它可以检索跨越所有其他内容的格式笨拙的照片库。

http://andybloxham.com

这就是问题所在的网站。我希望搜索功能只从/单词中查找内容

搜索工具是“自定义”中提供的标准工具。主题是Solofolio。我猜我要更改的变量是searchform。php?

<form method="get" class="searchform" action="<?php echo esc_url(home_url()); ?>/">
<input type="text"
     value="<?php _e( \'Search\', \'solofolio\' ); ?>"
     name="s"
     id="s"
     onblur="if (this.value == \'\') {this.value = \'Search\';}"
     onfocus="if (this.value == \'Search\') {this.value = \'\';}" />
<span><button type="submit" class="sidebar-search fa fa-search"></button></span>
</form>

1 个回复
SO网友:cybmeta

WordPress中没有“博客”文件夹,搜索不是在文件夹中完成的,而是在数据库中完成的。我想你的意思是将搜索限制在标准的帖子类型。

您可以添加post_type 搜索表单的参数,以仅包括标准帖子类型:

<form method="get" class="searchform" action="<?php echo esc_url(home_url()); ?>/">
    <input type="text"
         value="<?php _e( \'Search\', \'solofolio\' ); ?>"
         name="s"
         id="s"
         onblur="if (this.value == \'\') {this.value = \'Search\';}"
         onfocus="if (this.value == \'Search\') {this.value = \'\';}" />
    <inptu type="hidden" value="post" name="post_type" />
    <span><button type="submit" class="sidebar-search fa fa-search"></button></span>
</form>
或者更好,加入pre_get_post:

add_action( \'pre_get_post\', function( $query ) {

    if( $query->is_main_query() && !is_admin() && $query->is_search ) {

        //You can include more post types here if you want
        $query->set( \'post_type\', array( \'post\' ) );

    }

});
或者更好,也是从搜索中排除帖子类型的最好方法,只是set the exclude_from_search argument to true 什么时候registering the post type.

结束

相关推荐

更改Get_Search_Form的行为

我创建了一个显示搜索框的函数,并将其命名为my_get_search_form(). 那是原件的副本get_search_form() 作用调用函数时,输出如下:Search in http://localhost/wp_ex_3/ <AN EMPTY BOX> <A BROKEN IMAGE LINK>.我怎样才能改变这个丑陋的显示而不显示http://localhost/wp_ex_3/. 我应该说在函数定义中没有\"search in\" 语句,因此另一个函数导致了此行为。上