在正常情况下,Woocommerce从数据库中检索价格并显示它。如何定制Woocommerce,以便在从数据库中检索产品价格时,在将其用于其他任何地方(用于结帐、购物车等)之前的最初阶段对其进行更改。
Visualization:-
Constraints:-
不应在数据库中更改价格。PHP脚本应该更改价格并对其进行管理。
Progress:-
在这个问题上我没有任何方向。我认为我必须修改
class-wc-product-simple.php
在
line:68
if ( $children_by_price ) {
foreach ( $children_by_price as $child ) {
$child_price = get_post_meta( $child, \'_price\', true ); // that\'s line 68.
update_post_meta( $this->get_parent(), \'_price\', $child_price );
}
}
这样我就可以修改价格,因为它只是从数据库中检索的。我知道不建议修改WooCommerce核心,但目前对我来说没问题。
最合适的回答,由SO网友:Omar Tariq 整理而成
最后,让它使用以下代码:-
function return_custom_price($price, $product) {
global $post, $woocommerce;
$post_id = $post->ID;
if($post_id == \'696\' || $post_id == \'697\' || $post_id == \'705\' /*|| $post_id == \'53\'*/ || $post_id == \'\'){
// cart, checkout, , order recieved, order now
$post_id = $product->id;
}
$new_price = get_post_meta($post_id, \'_price\', true);
if($new_price==\'\') {
$new_price = $price;
} else {
$api_call = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20csv%20where%20url%3D%22http%3A%2F%2Ffinance.yahoo.com%2Fd%2Fquotes.csv%3Fe%3D.csv%26f%3Dc4l1%26s%3DNZD%3DX%2CAUD%3DX%22%3B&format=json&diagnostics=true&callback=";
$data[] = json_decode(file_get_contents($api_call));
$nzd = (double) $data[0]->query->results->row[0]->col1;
$aud = (double) $data[0]->query->results->row[1]->col1;
$new_price = ( $nzd / $aud ) * $new_price;
}
return $new_price;
}
add_filter(\'woocommerce_get_price\', \'return_custom_price\', $product, 2);