我在一个网站上工作,在那里我有多个类别和子类别分配给他们的帖子。现在,我想使用FacetWP为用户提供在他们的类别和子类别上搜索这些帖子的选项。我希望它可以像下面的示例那样按层次工作。
假设有一个职位被分配给它以下类别:
France - Paris - River
- Street
- Lyon - Street
- House
Germany - Hamburg - Street
- Berlin - House
- Church现在我想创建下拉方面,我希望第一个下拉列表只提供主要类别(本例中的国家)。在那之后,当有人选择了一个国家,我希望第二个下拉列表只显示该特定国家的子类别(本例中的城市)。在那之后,我希望下一个下拉列表只显示子类别。
因此,当有人选择法国时,下一个下线应该只显示巴黎和里昂(而不是汉堡和柏林)。当巴黎被选中时,下一个下拉线应该只显示河流和街道(也不是房子或教堂)。
这与FacetWP是可能的吗?还是有办法调整它,使之成为可能?
发布于 2016-11-29 03:07:17
您必须创建3个方面,每个类别级别一个。
然后,您将不得不使用facetwp_facet_html过滤器。
下面是一个示例,其中我使用了select2小面
```javascript函数fwp_limit_subcategory( $output,$params ){
$facet =$params‘’facet‘;
如果($facet‘’type‘!= 'select2') {返回$output;}
$custom_out = $out = '';
$exploded =(<选项,$output);
如果(‘子类别’== $facet‘’name‘){
// See if a category is selectedforeach ( 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.$custom_out;
if (strpos($out,'') === false) {
$out .= '</select>';}
返回$out;
返回$output;
}
add_filter( 'facetwp_facet_html','fwp_limit_subcategory',10,2 );
我希望这能帮到你,让你走上正轨。
编辑
我发现了一种可能也有帮助的额外解决方案。
https://stackoverflow.com/questions/38894586
复制相似问题