围绕产品销售价格和正常价格的条件定制输出

时间:2016-06-03 05:45:53

标签: php wordpress woocommerce product price

我正在尝试使用自定义条件输出,当找到具有销售价格的产品循环时,它会在销售价格标签中添加一个类。如果只有正常价格,则会将此类添加到常规价格标签中。

看完之后,我似乎无法让这个工作起来。来自不同的文件:

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 );
        }
}

我正在使用常规价格过滤器&amp;尝试将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 个答案:

答案 0 :(得分: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;
}

此挂钩通常是出售价格。

参考: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

答案 1 :(得分:1)

您需要在此处使用过滤器钩子而不是动作钩子来将函数或方法挂钩到特定的过滤器操作。  改为

add_filter('woocommerce_sale_price_html','price_custom_class');