WC_Cart在WooCommerce中的扩展

时间:2013-08-26 作者:Johnathon Mathews

我试图在woocommerce中扩展WC\\U Cart,据我所知,我的代码应该是正确的。然而,当我装载购物车时,我收到以下消息。

Fatal error: Call to undefined method WC_Cart::get_prediscount_total() in ...
我的插件中的代码:

class My_WC_Cart extends WC_Cart { 
    public function get_prediscount_total() {
        return apply_filters( \'woocommerce_cart_total\', woocommerce_price( $this->total * 5 ) ); 
    } 
}
输出代码为

 echo $woocommerce->cart->get_prediscount_total();
当代码处于/wp-content/plugins/woocommerce/classes/class-wc-cart.php 但当我试图扩展它的时候,它失败了。

1 个回复
最合适的回答,由SO网友:Eugene Manuilov 整理而成

扩展WooCommerce cart类有点棘手,但这是可能的。

假设您有一个插件和一个文件class-my-wc-cart.php 里面有扩展的cart类。然后在主插件文件中,您需要执行以下操作:

// load your My_WC_Cart class
require_once \'class-my-wc-cart.php\';

// setup woocommerce to use your cart class    
add_action( \'woocommerce_init\', \'wpse8170_woocommerce_init\' );
function wpse8170_woocommerce_init() {
    global $woocommerce;

    if ( !is_admin() || defined( \'DOING_AJAX\' ) ) {
        $woocommerce->cart = new My_WC_Cart();
    }
}

// override empty cart function to use your cart class
if ( !function_exists( \'woocommerce_empty_cart\' ) ) {
    function woocommerce_empty_cart() {
        global $woocommerce;

        if ( ! isset( $woocommerce->cart ) || $woocommerce->cart == \'\' ) {
            $woocommerce->cart = new My_WC_Cart();
            $woocommerce->cart->empty_cart( false );
        }
    }
}

结束

相关推荐

Plugins_url()可以在除wp_reqister_script()之外的任何地方运行

所以我应该提前提到,我正在开发一个插件,所以我的url是“mysite”。com/plugin“(以防万一这与我的问题有关。因此,在我的主插件文件(myplugin.php)中,我添加了以下内容:$plugin_url = plugins_url(\'/my-plugin-directory/\'); 紧接着wp_enqueue_style(\'wp_enqueue_scripts\', $plugin_url . \'css/boxes.css\'); 很好,到目前为止还不错。插件u