定义自己的模板标记一个想法是使用模板标记:
<?php the_price();?>
或
<?php the_price( \'%.1f\' );?>
根据您的需要更改格式。
然后,您可以根据需要向其中添加过滤器。
在您的functions.php
可以添加的文件
// setup the price filters:
add_filter( \'the_price\' , \'xyz_add_product_price\', 1, 1 );
add_filter( \'the_price\' , \'xyz_add_commission\', 2, 1 );
add_filter( \'the_price\' , \'xyz_add_shipping\', 3, 1 );
使用优先级控制计算顺序。
这个xyz_
只是一个可以更改的前缀。
模板标记的定义如下所示:
/**
* Template tag to display the price
* @param string $d Output format
* @return void
*/
function the_price( $d = \'\' ){
echo get_the_price( $d );
}
其中:
/**
* Template tag to return the price
* @param string $d Output format
* @return number $price Price
*/
function get_the_price( $d = \'\' ){
$price = apply_filters( \'the_price\', 0 );
if( empty( $d ) )
$d = \'%.2f\'; // with 2 decimals
return sprintf( $d, $price );
}
检查这些模板标记是否已经存在
function_exists()
或者使用其他自定义前缀。
添加价格过滤器您的第一个价格过滤器可能是添加产品价格:
/**
* Price filter #1
* Add product price
* @param number $price
* @return number $price
*/
function xyz_add_product_price( $price ) {
$product_price = get_post_meta( get_the_ID(), \'product_price\', TRUE );
if( ! empty( $product_price ) ){
// convert the values from string to int/float:
$product_price = 1 * $product_price;
// add product price:
return ( $price + $product_price );
}else{
return $price;
}
}
第二个是税务委员会:
/**
* Price filter #2
* Add tax commission to the product price
* @param number $price
* @return number $price
*/
function xyz_add_commission( $price = 0 ) {
$tax_commision = get_post_meta( get_the_ID(), \'tax_commision\', TRUE );
if( ! empty( $tax_commision ) ){
// convert the values from string to int/float:
$tax_commision = 1 * $tax_commision;
// calculate the commision and add to the price:
return ( $price + ( $tax_commision / 100 ) * $price ) ;
}else{
return $price;
}
}
最后是第三笔运费:
/**
* Price filter #3
* Add shipping fee to the product price
* @param number $price
* @return number $price
*/
function xyz_add_shipping( $price ) {
$shipping_fee = 10;
return ( $price + $shipping_fee );
}
。。。以后您可以添加更多内容。