how to search everything

时间:2017-05-15 作者:Steve

我们有一个使用BuddyPress、bbPress等的Wordpress内部网。。

从…起this article, 我调整了主题searchform.php 包括:

<input type="hidden" name="post_type[]" value="docs" />
<input type="hidden" name="post_type[]" value="events" />
<input type="hidden" name="post_type[]" value="forums" />
<input type="hidden" name="post_type[]" value="posts" /> 
<input type="hidden" name="post_type[]" value="pages" /> 
<input type="hidden" name="post_type[]" value="topics" />
然而,当我们搜索写在Wordpress页面内的内容时,搜索不会找到该内容。

这个事实让我怀疑搜索是否正常工作。

搜索结果页面的URL如下所示:

www.example.com/?post_type%5B%5D=docs&post_type%5B%5D=events&post_type%5B%5D=forums&post_type%5B%5D=posts&post_type%5B%5D=pages&post_type%5B%5D=topics&post_type%5B%5D=doc&s=document
我尝试了单数和复数,但问题仍然存在:

<input type="hidden" name="post_type[]" value="docs" />
<input type="hidden" name="post_type[]" value="events" />
<input type="hidden" name="post_type[]" value="forums" />
<input type="hidden" name="post_type[]" value="posts" /> 
<input type="hidden" name="post_type[]" value="pages" /> 
<input type="hidden" name="post_type[]" value="topics" />
<input type="hidden" name="post_type[]" value="doc" />
<input type="hidden" name="post_type[]" value="event" />
<input type="hidden" name="post_type[]" value="forum" />
<input type="hidden" name="post_type[]" value="post" /> 
<input type="hidden" name="post_type[]" value="page" /> 
<input type="hidden" name="post_type[]" value="topic" />
困惑。

感谢您的帮助。

Update:

如果我添加

add_action( \'admin_footer\', function() { print_r( get_post_types( [ \'exclude_from_search\' => true ] ) ); } );
functions.php, 我收到输出:

Array
(
    [revision] => revision
    [nav_menu_item] => nav_menu_item
    [custom_css] => custom_css
    [customize_changeset] => customize_changeset
    [wp_router_page] => wp_router_page
    [forum] => forum
    [topic] => topic
    [reply] => reply
    [buddydrive-file] => buddydrive-file
    [buddydrive-folder] => buddydrive-folder
    [bp-email] => bp-email
    [bp_docs_folder] => bp_docs_folder
    [vc_grid_item] => vc_grid_item
    [bwg_gallery] => bwg_gallery
    [bwg_album] => bwg_album
    [bwg_tag] => bwg_tag
    [bwg_share] => bwg_share
    [tribe_venue] => tribe_venue
    [tribe_organizer] => tribe_organizer
    [deleted_event] => deleted_event
    [rtmedia_album] => rtmedia_album
    [thrive] => thrive
)

1 个回复
SO网友:birgire

主要搜索使用any 自定义帖子类型(当您不设置post_type 查询var)因此,如果您从中缺少自定义帖子类型,那么这些自定义帖子类型很可能是注册到exclude_from_search 为真。

检查插件是否有过滤器来更改,或尝试使用以下内容覆盖它:

add_filter( \'register_post_type_args\', function( $args, $post_type )
{
    if( in_array( $post_type, [ \'foo\', \'bar\' ], true ) && (bool) $args[\'public\'] )
        $args[\'exclude_from_search\'] = false;

    return $args;
}, 999, 2 );
在哪里foobar 是一些自定义的post类型slug示例,它们是公共的。

在BB中按forumtopic 帖子类型已注册为public,但具有exclude_from_search 为真(src). 还要注意,它是单数的,而不是forumstopics.

我们可以通过以下方式检查公共帖子类型和搜索排除的帖子类型:

$types = get_post_types( [ \'exclude_from_search\' => true, \'public\' => true ] );
可能包含如下数组:

Array
(
    [foo] => foo
    [bar] => bar
)

结束

相关推荐

Searchresult sidebar change

那么,searchresult页面侧栏位于哪里?例如,在searchresult页面中,有一个“A”侧栏。但是,我想将其更改为“B”侧栏。我看着search.php 但无法理解侧边栏的来源。