我们已经接管了website。有一个名为" projects"。
的自定义帖子类型如果我们使用术语"学习"进行搜索在frontend
上,结果没有显示标题为" Caulfield Grammar School,Masterplan&学习项目"即使术语"学习"在标题中。然而,如果我们使用术语" Caulfield"它出现在搜索结果中。
该网站正在运行Relevanssi,即使已禁用该网站,也不会显示搜索结果。任何想法都将不胜感激。
提前致谢。
答案 0 :(得分:0)
请在functions.php
中尝试以下代码add_filter( 'pre_get_posts', 'mjt_project_search' );
function mjt_project_search( $query ) {
if ( $query->is_search ) {
$query->set( 'post_type', array( 'projects') );
$query->set( 'post_status', array( 'publish') );
}
return $query;
}
/*custom texonomy */
function mjt_search_where($where){
global $wpdb;
if (is_search())
$where .= "OR (t.name LIKE '%".get_search_query()."%' AND {$wpdb->posts}.post_status = 'publish')";
return $where;
}
function mjt_search_join($join){
global $wpdb;
if (is_search())
$join .= "LEFT JOIN {$wpdb->term_relationships} tr ON {$wpdb->posts}.ID = tr.object_id INNER JOIN {$wpdb->term_taxonomy} tt ON tt.term_taxonomy_id=tr.term_taxonomy_id INNER JOIN {$wpdb->terms} t ON t.term_id = tt.term_id";
return $join;
}
function mjt_search_groupby($groupby){
global $wpdb;
// we need to group on post ID
$groupby_id = "{$wpdb->posts}.ID";
if(!is_search() || strpos($groupby, $groupby_id) !== false) return $groupby;
// groupby was empty, use ours
if(!strlen(trim($groupby))) return $groupby_id;
// wasn't empty, append ours
return $groupby.", ".$groupby_id;
}
add_filter('posts_where','mjt_search_where');
add_filter('posts_join', 'mjt_search_join');
add_filter('posts_groupby', 'mjt_search_groupby');
答案 1 :(得分:0)
这有点奏效但是还有其他帖子类型需要显示结果,所以我将代码更改为:
add_filter( 'pre_get_posts', 'mjt_project_search' );
function mjt_project_search( $query ) {
if ( $query->is_search ) {
$query->set( 'post_type', array( 'projects', 'news', 'award', 'person', 'location', 'page') );
$query->set( 'post_status', array( 'publish') );
}
return $query;
}
虽然有效,但它并没有显示出Caulfield文法学校,总体规划和学校。学习项目'现在