2013-02-20 3 views
1

Название объясняет это довольно хорошо. Я пытаюсь добавить новый метод доставки (стоимость доставки), расширяя класс. Вот тело плагин (Остальное в комментариях и содержит плагин данные):WooCommerce Расширение WC_Shipping_Method error: Class 'WC_Shipping_Method' не найден

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-содержание/затратный

Любая идея, почему эта ошибка появляется?

ответ

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); 
} 

Надеется, что это помогает!

Simon

+0

Что такое функция 'is_available'? –

+0

Я пытался следовать этому, но это не помогло? Что-нибудь новое? –