各カテゴリ レベルに 1 つずつ、合計 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 );
```
これがあなたを助け、正しい軌道に乗せることを願っています.
編集
役立つ可能性のある追加の解決策を発見しました。
- 1 つのファセットで上位のみのカテゴリにインデックスを付ける
- 別のファセットで子のみのカテゴリにインデックスを付ける
- 最初のファセットの結果に従って、2 番目のファセットの結果を微調整します。
- 3 番目、4 番目のファセットなどについて繰り返します