作者:kafei | 来源:互联网 | 2023-08-11 19:06
已成功将自定义分类标准添加到Woo产品中:
$args = array(
'labels' => array(
'name' => 'Companies','singular_name' => 'Company','add_new_item' => 'Add New Company',),'hierarchical' => true,'public' => true,'publicly_queryable' => true,'show_ui'=> true,'query_var' => true,'exclude_from_search' => false
);
register_taxonomy( 'companies','product',$args );
register_taxonomy_for_object_type( 'companies','product' );
当我尝试使用search.php中的WP搜索查询此问题时,就会出现问题:
if(have_posts()){
while (have_posts()) : the_post();
echo get_the_ID();
endwhile;
}
示例:/?search=My Company
什么是正确的方法?我尝试刷新(更新永久链接,但未成功)。也无法查询类别分类法(默认为Woo)
您必须添加过滤器posts_where
,posts_join
,posts_groupby
,才能在搜索结果中添加分类法,如下所示:
function atom_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 atom_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 atom_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','atom_search_where');
add_filter('posts_join','atom_search_join');
add_filter('posts_groupby','atom_search_groupby');