2015-04-28 3 views
1

У меня возникла проблема при попытке применить фильтр к woocommerce_package_rates.Wordpress - Не удалось вызвать фильтр woocommerce

В основном, что я пытаюсь сделать, скрыть некоторые способы доставки, если применяется код купона.

Это мой тестовый код:

add_action('woocommerce_before_cart_totals', 'display_coupon'); 
function display_coupon($order) 
{ 
    global $woocommerce; 
    global $wpdb; 
    if (isset($_POST['coupon_code'])) { 
     add_filter('woocommerce_package_rates', 'hide_shipping_when_coupon_code_is_available', 10, 2); 
     echo "Ok" 
     } else { 
     echo "no" 
     } 
} 

function hide_shipping_when_coupon_code_is_available($rates, $package){ 
    $test= $rates['table_rate_shipping_test']; 
    $rates = array(); 
    $rates['test'] = $test; 
    return $rates; 
} 

Теперь, когда я применяю код купона, переменная $coupon_code заполняется, и он идет внутри, если заявление, но это не шов, чтобы вызвать woocommerce_package_rates фильтр. Неправильно ли вы пытаетесь вызвать фильтр из другой функции? Если нет, что еще я делаю неправильно здесь?

Заранее спасибо

PS: В качестве эталона, я изменил этот код здесь ->http://docs.woothemes.com/document/hide-other-shipping-methods-when-free-shipping-is-available/

ответ

1

Попробуйте следующий код

add_action('wp', 'wdm_my_custom_function'); 

function wdm_my_custom_function() { 

    global $woocommerce; 
    global $wpdb; 
    if (isset($_POST['coupon_code'])) { 
    add_filter('woocommerce_package_rates', 'hide_shipping_when_coupon_code_is_available', 10, 2); 
    echo "Ok"; 
    } else { 
    echo "no"; 
    } 
} 

Позвольте мне знать, если ваша проблема решена с помощью этого ,

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