1

标题很好地解释了它。我正在尝试通过扩展类来添加新的运输方式(基于成本的运输)。这是插件主体(其余在评论中并包含插件信息):

class WC_Cost_Based extends WC_Shipping_Method {
    function __construct() {
        $this->id = 'cost-based';
        $this->method_title = __('Cost-Based', 'woocommerce');
    }

    function calculate_shipping() {
        $rate = array(
            'id' => $this->id,
            'label' => $this->title,
            'cost' => '10.99',
            'calc_tax' => 'per_item'
            );
    // Register the rate
        $this->add_rate( $rate );
    }

}

function add_cost_based_method( $methods ) {
    $methods[] = 'WC_Cost_Based';
    return $methods;
}

add_filter('woocommerce_shipping_methods', 'add_cost_based_method');

该文件保存在 .../wp-content/cost-based

知道为什么会弹出此错误吗?

4

2 回答 2

0

我在尝试遵循 woocommerce 说明/教程时遇到了同样的问题。似乎他们遗漏了一些事情。

首先,为了解决您的问题,我发现我需要在插件类的顶部包含 woocommerce.php。这将使新的运输类可以访问它需要扩展的 WC_Shipping_Method。可能有一种更优雅的方式只包含依赖类。对我来说,包括看起来像这样:

 include ('/woocommerce/woocommerce.php');

其次,我发现我还必须在 __construct() 方法中至少再设置两个属性。他们是:

 $this->title = "YOUR TITLE";  // Displays on the main shipping page
 $this->enabled = true;

第三,我还需要(至少):

function is_available( $package ) {
    if ( $this->enabled == "no" ) return false;
    return apply_filters( 'woocommerce_shipping_' . $this->id . '_is_available', true );
}

希望能帮助到你!

西蒙

于 2013-02-28T04:25:22.323 回答
0

导航到 - https://github.com/woocommerce/woocommerce/blob/master/includes/abstracts/abstract-wc-shipping-method.php

复制 php 文件中的所有内容并替换在 wp-content/plugins/woocommerce/includes/abstracts/ 中找到的文件 -abstract-wc-shipping-method.php

于 2018-12-06T07:24:14.347 回答