Как вывести filter hook в хук?

У меня есть фильтр, позволяющий показывать в процентах скидку на товар, и я хочу вывести её туда же, где располагается подпись "распродажа". Те, кто знаком с woocommerce знают, что слово "распродажа" выводится так же хуком. В общем, я вообще не знаю php и делаю всё интуитивно, поэтому буду рад подсказке рационального решения.

Вод мой фильтр:
add_filter( 'woocommerce_sale_price_html', 'woocommerce_custom_sales_price', 10, 2 );
    function woocommerce_custom_sales_price( $price, $product ) {
    $percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
    return $price . sprintf( __(' - Экономия %s', 'woocommerce' ), $percentage . '%' );
}


Вот место, где должен быть мой код:
global $post, $product;
if ( $product->is_on_sale() ) : 
echo apply_filters( 'woocommerce_sale_flash', '<span class="onsale">sale</span>', $post, $product ); 
endif;
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
trampick
@trampick
Веб-разработчик
Можно вместо фильтров использовать шаблоны.
-А именно создать в своей теме папку 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 );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы