您将必须创建 3 个方面,每个类别级别一个。
然后你将不得不使用facetwp_facet_html
过滤器。
这是一个示例,我使用select2 方面:
```
function fwp_limit_subcategory( $output, $params ) {
$facet = $params['facet'];
if ($facet['type'] != 'select2') { return $output; }
$custom_out = $out = '';
$exploded = explode('<option', $output);
if ( 'subcategory' == $facet['name'] ) {
// See if a category is selected
foreach ( FWP()->facet->facets as $f ) {
if ( 'category' == $f['name'] && empty( $f['selected_values'] ) ) {
return $exploded[0].'</select>';
}
if ( 'category' == $f['name'] && ! empty( $f['selected_values'] ) ) {
$term_slugs = $f['selected_values'];
foreach($term_slugs as $term_slug) {
$term = get_term_by( 'slug', $term_slug, 'category' );
if ( isset( $term->term_id ) ) {
$get_terms = get_terms(
array(
'parent' => $term->term_id,
'taxonomy' => 'category',
'hierarchical' => true
)
);
foreach ($exploded as $opt) {
foreach($get_terms as $child) {
if (strpos($opt, $child->slug) !== false) {
$custom_out .= '<option '. $opt;
}
}
}
}
}
}
}
}
}
if ($custom_out != '') {
$out .= $exploded[0].$custom_out;
if (strpos($out, '</select>') === false) {
$out .= '</select>';
}
return $out;
return $output;
}
add_filter( 'facetwp_facet_html', 'fwp_limit_subcategory', 10, 2 );
```
我希望这对您有所帮助,并使您走上正轨。
编辑
我发现了另一个可能也有帮助的解决方案。
- 仅索引一个方面的顶级类别
- 在另一个方面仅索引子类别
- 根据第一个方面的结果调整第二个方面的结果
- 重复第三,第四方面等