WooCommerce:如何编辑Get_Price_html

时间:2013-01-27 作者:Lucky Luke

我试图编辑单个产品的价格值。

在里面single-product/price.php 有一个模板调用$product->get_price_html. 如何编辑该函数/方法以更改HTML的显示方式?

此时,即使我删除了位于class-wc-product 它仍然奇迹般地显示出来?有人知道为什么吗?

3 个回复
最合适的回答,由SO网友:Milo 整理而成

不应直接编辑核心文件和插件文件,因为任何更新都可能覆盖您的更改。如果您查看WooCommerce来源get_price_html 方法中,有许多filters 可用于修改函数的输出。

看见add_filter 在Codex中获取更多关于向中添加过滤器的信息apply_filters 呼叫。

从…起get_price_html 在里面class-wc-product:

return apply_filters(\'woocommerce_get_price_html\', $price, $this);
因此,要添加您自己的过滤器:

add_filter( \'woocommerce_get_price_html\', \'wpa83367_price_html\', 100, 2 );
function wpa83367_price_html( $price, $product ){
    return \'Was:\' . str_replace( \'<ins>\', \' Now:<ins>\', $price );
}

SO网友:Pankaj jha
function wpa83368_price_html( $price,$product ){
   // return $product->price;
    if ( $product->price > 0 ) {
      if ( $product->price && isset( $product->regular_price ) ) {
        $from = $product->regular_price;
        $to = $product->price;
        return \'<div class="old-colt"><del>\'. ( ( is_numeric( $from ) ) ? woocommerce_price( $from ) : $from ) .\' Retail </del>  | </div><div class="live-colst">\'.( ( is_numeric( $to ) ) ? woocommerce_price( $to ) : $to ) .\'Our Price</div>\';
      } else {
        $to = $product->price;
        return \'<div class="live-colst">\' . ( ( is_numeric( $to ) ) ? woocommerce_price( $to ) : $to ) . \'Our Price</div>\';
      }
   } else {
     return \'<div class="live-colst">0 Our Price</div>\';
   }
}
SO网友:hossein naghneh

functions.php

function h08831n_get_price($product){
        $price_html = \'<div class="product-price">\';
        if ( $product->get_price() > 0 ) {
            if ($product->get_price() && $product->get_regular_price()) {
                $from = $product->get_regular_price();
                $to = $product->get_price();
                $price_html .= \'<del>\'. ( ( is_numeric( $from ) ) ? wc_price( $from ) : $from ) .\'</del><ins>\'.( ( is_numeric( $to ) ) ? wc_price( $to ) : $to ) .\'</ins>\';
            }else{
                $to = $product->get_price();
                $price_html .= \'<ins>\' . ( ( is_numeric( $to ) ) ? wc_price( $to ) : $to ) . \'</ins>\';
            }
        }else{
            $price_html .= \'<div class="free">free</div>\';
        }
        $price_html .= \'</div>\';
        return $price_html;
    }
在要显示价格的位置,如single-product.php

global $product;
echo h08831n_get_price($product);
您还可以删除wc_price 在删除woocommerce默认HTML格式的函数中

结束

相关推荐