事件未显示在搜索结果WordPress中

时间:2015-11-12 22:45:23

标签: php wordpress

我有一个使用事件日历来管理事件的自定义网站。我在主导航中搜索了一下,我无法显示事件,只显示帖子和页面。我添加了自定义过滤器,但我知道我只是忽略了一些东西。

以下是我的主题function.php

中的功能
add_theme_support('html5' ,array('search-form'));
add_filter('wp_nav_menu_items', 'add_search_form', 10, 2);

function add_search_form($items, $args) {
          if( $args->theme_location == 'menu-top' )
          $items .= '<li class="search"><form role="search" method="get" id="searchform" action="'.home_url( '/' ).'">
          <input type="search" class="search-box" placeholder="Type Here"  name="s" />
          <input class="search-button" type="submit" id="searchsubmit" value="'. __('Search') .'" /></form>
          </li>';
     return $items;
}

//Define what post types to include in search
function include_in_search( $query ) {
        if ( $query->is_search ) {
        $query->set( 'post_type', array( 'post', 'page', 'feed', 'tribe_events' ));
        }
    return $query;
}
add_filter('the_search_query', 'include_in_search' );

我肯定会很感激。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您将the_search_querypre_get_posts混为一谈。

the_search_query允许您在显示之前修改搜索字符串,而pre_get_posts允许您修改正在执行的查询。

改变这个:

add_filter('the_search_query', 'include_in_search' );

对此:

add_filter( 'pre_get_posts', 'include_in_search' );

另外请确保您只在正确的位置对查询采取行动。添加更多条件以检查您是否未在管理员中,并且您正在对主要查询进行操作。

改变这个:

if ( $query->is_search ) {

对此:

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