問題描述
我正在嘗試編輯單個產品的價格值。
在 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。