问题描述
我正在尝试编辑单个产品的价格值。
在 single-product/price.php
中有一个模板调用 $product->get_price_html
。如何编辑该函数/方法来更改 HTML 的呈现方式?
目前即使我删除 class-wc-product
中所有功能的内容仍然奇迹般地显示出来?有人知道为什么吗
最佳解决方案
不应直接编辑核心和插件文件,因为任何更新都可能覆盖您的更改。如果您使用 get_price_html
方法查看 WooCommerce 源,则可以使用一些 filters 来修改函数的输出。
有关向 apply_filters
调用添加过滤器的更多信息,请参阅 Codex 中的 add_filter
。
来自 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 );
}
次佳解决方案
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>';
}
}
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。