Я пытаюсь работать с пользовательским условным выходом, где, когда цикл продукта найден с продажной ценой, он добавляет класс в торговую цену. Если есть только обычная цена, он добавляет этот класс в обычную цену.
Кажется, я не могу заставить это работать после того, как посмотрел и снялся с разных документов:
add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 ); function custom_price_html( $price, $product ){ ob_start(); global $product; if (isset($product->sale_price)) { return str_replace( '</del>', '<span class="amount">text</span></del>', $price ); return str_replace( '</ins>', '<span class="highlight amount">highlight here</span></del>', $price ); } else { return str_replace( '</ins>', '<span class="highlight amount">highlight here</span>text</del>', $price ); } }
Я использую обычный фильтр цен и пытаюсь изменить тег span class = "amount" на int span class = "amount", однако я все равно получаю тот же результат.
Есть идеи?
add_filter( 'woocommerce_price_html', 'price_custom_class', 10, 2 ); function price_custom_class( $price, $product ){ return str_replace( '<span class="amount"></span>', '<ins><span class="amount">'.woocommerce_price( $product->regular_price ).'</span></ins>', $price ); }
Этот крючок представляет собой фильтр с 2 переменными ( $price
и $instance
), и вы return $price
вместо echo $price
). Вы можете попытаться использовать его так:
add_filter('woocommerce_sale_price_html','price_custom_class', 10, 2 ); function price_custom_class( $price, $product ){ if (isset($product->sale_price)) { $price = '<del class="strike">'.woocommerce_price( $product->regular_price ).'</del> <ins class="highlight">'.woocommerce_price( $product->sale_price ).'</ins>'; } else { $price = '<ins class="highlight">'.woocommerce_price( $product->regular_price ).'</ins>'; } return $price; }
Этот крюк обычно продается.
Ссылка: woocommerce_sale_price_html
Для обычной цены у вас есть woocommerce_price_html
фильтр-крючок:
add_filter( 'woocommerce_price_html', 'price_custom_class', 10, 2 ); function price_custom_class( $price, $product ){ // your code return $price; }
Ссылка: woocommerce_price_html
Вам нужен фильтр-крючок, а не крюк действия, чтобы привязать функцию или метод к конкретному действию фильтра. изменить на
add_filter('woocommerce_sale_price_html','price_custom_class');