WooCommerce从数据库中检索产品后,更改产品的价格

时间:2013-11-17 作者:Omar Tariq

在正常情况下,Woocommerce从数据库中检索价格并显示它。如何定制Woocommerce,以便在从数据库中检索产品价格时,在将其用于其他任何地方(用于结帐、购物车等)之前的最初阶段对其进行更改。

Visualization:-

enter image description here

Constraints:-

不应在数据库中更改价格。PHP脚本应该更改价格并对其进行管理。

Progress:-

在这个问题上我没有任何方向。我认为我必须修改class-wc-product-simple.phpline: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核心,但目前对我来说没问题。

1 个回复
最合适的回答,由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);

结束

相关推荐

Security and Must Use Plugins

从codex article 必须使用插件:只需将文件上载到mu插件目录即可启用,无需登录我觉得这是一个潜在的安全问题。在站点上运行插件中的任何代码之前,必须通过管理面板激活常规插件。我一直认为这是一个明智的安全预防措施,因为攻击者如果能够以某种方式将文件上载到plugins文件夹,则在运行代码之前,还必须访问和修改数据库。这个mu-plugins 文件夹似乎提供了一种简单的方法来避免这种情况。我知道WordPress开发人员比我更了解安全性,所以我想知道是否有人能解释为什么这不是一个安全漏洞。