2016-01-28 4 views
1

В WooCommerce плагин файл class-wc-booking-cart-manager.php есть этот кодКак переписать функции WordPress

/** 
    * Constructor 
    */ 
    public function __construct() { 
     add_filter('woocommerce_add_cart_item', array($this, 'add_cart_item'), 10, 1); 
     } 

/** 
    * Adjust the price of the booking product based on booking properties 
    * 
    * @param mixed $cart_item 
    * @return array cart item 
    */ 
    public function add_cart_item($cart_item) { 
     if (! empty($cart_item['booking']) && ! empty($cart_item['booking']['_cost'])) { 
      $cart_item['data']->set_price($cart_item['booking']['_cost']); 
     } 
     return $cart_item; 
    } 

Я хочу изменить код add_cart_item функции в в мою детской тему functions.php файлу

Так что я сделал это:

function custom_add_cart_item($cart_item) { 
    if (empty($cart_item['booking']) && empty($cart_item['booking']['_cost'])) { 
     $cart_item['data']->set_price(2000); 
    } 
    return $cart_item; 
} 


function setup_add_cart_item_filter(){ 
    remove_filter('woocommerce_add_cart_item', array('WC_Booking_Cart_Manager', 'add_cart_item'), 10, 1); 
    add_filter('woocommerce_add_cart_item', 'custom_add_cart_item'); 
} 

add_action('after_setup_theme', 'setup_add_cart_item_filter'); 

Но это не сработает. Спасибо за вашу помощь !

ответ

1

Вы можете позвонить remove_all_filters('woocommerce_add_cart_item'); удалить существующий крючок, а затем вызвать add_filter('woocommerce_add_cart_item', 'your_new_add_cart_item'); в functions.php

EDIT: Я пропустил момент, что childtheme-х functions.php загружается перед тем родителем тема, поэтому работает remove_all_filters() прямо в functions.php является на самом деле бесполезно ...

Мой обновленный ответ, чтобы обернуть эти вызовы в другой функции и вызывать их после установки темы фразы:

function setup_add_cart_item_filter(){ 
    remove_all_filters('woocommerce_add_cart_item'); 
    add_filter('woocommerce_add_cart_item', 'custom_add_cart_item'); 
} 
add_action('after_setup_theme', 'setup_add_cart_item_filter'); 
+0

Я просто редактирую свой вопрос, если вы можете проверить –

+0

Имеет ли смысл порядок строк? –

+0

Нет. Фильтры и действия должны оцениваться только при срабатывании соответствующих событий. – slbteam08

Смежные вопросы