我不确定这是否可行,因为我认为wp_list_categories()
这将检查类别中帖子/产品的状态。即使有,您也必须查询所有类别中的大量产品,这将是非常低效的。
您可以更换WC_Product_Cat_Dropdown_Walker
然后在那里检查。
责任函数看起来好像接受了另一个Walker:
/**
* Walk the Product Categories.
*
* @return mixed
*/
function wc_walk_category_dropdown_tree() {
global $woocommerce;
if ( ! class_exists( \'WC_Product_Cat_Dropdown_Walker\' ) )
include_once( WC()->plugin_path() . \'/includes/walkers/class-product-cat-dropdown-walker.php\' );
$args = func_get_args();
// the user\'s options are the third parameter
if ( empty( $args[2][\'walker\']) || !is_a($args[2][\'walker\'], \'Walker\' ) )
$walker = new WC_Product_Cat_Dropdown_Walker;
else
$walker = $args[2][\'walker\'];
return call_user_func_array(array( &$walker, \'walk\' ), $args );
}
因此,如果你复制了这个小部件,你表面上可能会改变
// Stuck with this until a fix for http://core.trac.wordpress.org/ticket/13258
wc_product_dropdown_categories( array(
\'show_counts\' => $c,
\'hierarchical\' => $h,
\'show_uncategorized\' => 0,
\'orderby\' => $o
) );
至
// Stuck with this until a fix for http://core.trac.wordpress.org/ticket/13258
wc_product_dropdown_categories( array(
\'show_counts\' => $c,
\'hierarchical\' => $h,
\'show_uncategorized\' => 0,
\'orderby\' => $o,
\'walker\' => \'InStock_Categories\'
) );
然后你将负责创建并包括
InStock_Categories
沃克级。完全未经测试,但只是提出一些想法。