Можно вместо фильтров использовать шаблоны.
-А именно создать в своей теме папку woocommerce
-создать папку woocommerce/loop и внутри файл sale-flash.php (этот файл так же находится в шаблоне woocommerce и код нужно взять от туда же и вставить его в новый файл с дописыванием своего функционала) - это изменит ярлык в каталоге.
-создать папку woocommerce/single-product и внутри файл sale-flash.php (этот файл так же находится в шаблоне woocommerce и код нужно взять от туда же и вставить его в новый файл с дописыванием своего функционала) - это изменит ярлык в карточке.
function filter_woocommerce_sale_flash( $span_class_onsale____sale_woocommerce_span, $post, $product ) {
$id = $product->id;
$price = get_post_meta($id,'_price', true);
$price_r = get_post_meta($id,'_regular_price', true);
$percentage = round( ( ( $price_r - $price ) / $price_r ) * 100 );
return '<span class="onsale">'.$percentage.'%</span>';
};
add_filter( 'woocommerce_sale_flash', 'filter_woocommerce_sale_flash', 10, 3 );