Один из способов решения задачи - переопределение метода класса WC_Widget_Product_Categories
Для этого нужно создать файл [текущая_тема]/widgets/widget-product_categories.php
Поместить туда код переопределяемого метода
class Custom_WC_Widget_Product_Categories extends WC_Widget_Product_Categories {
function widget( $args, $instance ) {
// скопировать весь код метода из:
// woocommerce/includes/widgets/class-wc-widget-product-categories.php
// добавить нужный класс в строке с выводом открывающего тега списка
echo '<ul class="product-categories <b>my-class</b>">';
}
}
Затем поместить в functions.php активной темы следующий код:
/**
* WC_Widget_Product_Categories widget override
*/
add_action( 'widgets_init', 'override_woocommerce_widgets', 15 );
function override_woocommerce_widgets() {
if ( class_exists( 'WC_Widget_Product_Categories' ) ) {
unregister_widget( 'WC_Widget_Product_Categories' );
include_once( 'widgets/widget-product_categories.php' );
register_widget( 'Custom_WC_Widget_Product_Categories' );
}
}
Здесь происходит повторная регистрация виджета с уже измененными параметрами, при этом файлы ядра не меняются.
Собственно, все.
P.S. Более подробно описано
здесь.