Условная таможенная выработка вокруг цены продажи продукции и обычной цены

Я пытаюсь работать с пользовательским условным выводом, где, когда найден цикл продукта с продажной ценой, он добавляет класс к ценнику продажи. Если есть только обычная цена, он добавляет этот класс к обычному ценнику.

Я не могу заставить это работать после просмотра и выключения из разных документов:

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" на ins 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 ответа

Решение

Этот хук представляет собой фильтр с 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;
}

Этот крюк продается по цене обычно.

Ссылка: http://hookr.io/filters/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;
}

Ссылка: http://hookr.io/filters/woocommerce_price_html/

Здесь вам нужен хук фильтра, а не хук действия, чтобы привязать функцию или метод к определенному действию фильтра. изменить на

add_filter('woocommerce_sale_price_html','price_custom_class'); 
Другие вопросы по тегам