在我woocommerce店面子主题,我增加了一些分类。现在,我想补充一些类别过滤器的自定义分类。我已经加入这样使用此代码过滤器(来源:鲁道夫Melogli)
add_filter( 'woocommerce_product_filters', 'admin_filter_products_by_din' );
function admin_filter_products_by_din( $output ) {
global $wp_query;
$output .= wc_product_dropdown_categories( array(
'show_option_all' => 'All DIN/ISO/ANSI',
'taxonomy' => 'din-iso-ansi',
'name' => 'din-iso-ansi',
'order' => 'ASC',
'tab_index' => '2',
'selected' => isset( $wp_query->query_vars['din-iso-ansi'] ) ? $wp_query->query_vars['din-iso-ansi'] : '',
) );
return $output;
}
新的类别过滤器的显示器,但现在我想我的新的分类过滤器(DIN / ISO / ANSI)的放置产品类别过滤器后走了。
产品管理:
重要笔记:
wc_product_dropdown_categories()
功能输出默认情况下呼应,并在过滤器钩在那里总是返回的所有过滤的数据不方便,所以我们将使用参数'echo'
设置为false
。wc_product_dropdown_categories()
功能其实wp_dropdown_categories()
这样更方便,而不是为像您这样的自定义分类使用。要测试你的代码,我已经使用
product_tag
Woocommerce自定义分类,以确保它的工作原理。
下面的代码将在您的自定义过滤器下拉刚过产品类别过滤器:
add_filter( 'woocommerce_product_filters', 'admin_filter_products_by_din' );
function admin_filter_products_by_din( $output ) {
global $wp_query;
$taxonomy = 'din-iso-ansi';
$selected = isset( $wp_query->query_vars[$taxonomy] ) ? $wp_query->query_vars[$taxonomy] : '';
$info_taxonomy = get_taxonomy($taxonomy);
$custom_dropdown = wp_dropdown_categories(array(
'show_option_none' => __("Select a {$info_taxonomy->label}"), // changed
'taxonomy' => $taxonomy,
'name' => $taxonomy,
'order' => 'ASC',
'echo' => false, // <== Needed in a filter hook
'tab_index' => '2',
'selected' => $selected,
'show_count' => true,
'hide_empty' => true,
));
$after = '<select name="product_type"'; // The start of the html output of product type filter dropdown.
$output = str_replace( $after, $custom_dropdown . $after, $output );
return $output;
}
代码放在您的活动子主题的function.php文件(或活动主题)。测试和工程。
我想通了这一点与很多来自LoicTheAztec的帮助下,基本上是使用他的大部分代码,但现在看来,我们不能wc_product_dropdown_categories替代wp_dropdown_categories那么容易。回顾wc_product_dropdown_categories功能的化妆后,我实现了另一种方式来避免这一功能通过一个小PHP的方式呼应出来的结果。
add_filter( 'woocommerce_product_filters', 'admin_filter_products_by_din' );
function admin_filter_products_by_din( $output ) {
global $wp_query;
$taxonomy = 'din-iso-ansi';
$selected = isset( $wp_query->query_vars[$taxonomy] ) ? $wp_query->query_vars[$taxonomy] : '';
$info_taxonomy = get_taxonomy($taxonomy);
ob_start(); // buffer the result of wc_product_dropdown_categories silently
wc_product_dropdown_categories( array(
'show_option_none' => __("Select a {$info_taxonomy->label}"), // changed
'taxonomy' => $taxonomy,
'name' => $taxonomy,
//'echo' => false, // <== Needed for in filter hook
'tab_index' => '2',
'selected' => $selected,
'show_count' => true,
'hide_empty' => true,
));
$custom_dropdown = ob_get_clean();
$before = '<select name="product_type"'; //
$output = str_replace( $before, $custom_dropdown . $before, $output );
return $output;
}