我们有一个使用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
)
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 );
在哪里
foo
和
bar
是一些自定义的post类型slug示例,它们是公共的。
在BB中按forum
和topic
帖子类型已注册为public,但具有exclude_from_search
为真(src). 还要注意,它是单数的,而不是forums
和topics
.
我们可以通过以下方式检查公共帖子类型和搜索排除的帖子类型:
$types = get_post_types( [ \'exclude_from_search\' => true, \'public\' => true ] );
可能包含如下数组:
Array
(
[foo] => foo
[bar] => bar
)