如何在函数的其他ajax中调用函数

时间:2017-03-19 17:45:42

标签: wordpress woocommerce

我有一个change_flat_rates_cost()函数,但只在加载页面时才有效。但是对于我来说,这个功能对于每个领域的变化都是必要的" city",(在结账领域)。 我曾尝试使用ajax函数并调用add_filter()函数,但它没有帮助。 我这样做是为了在不重置页面的情况下更改交付成本,具体取决于所选城市

change_flat_rates_cost功能(更改运费)

function change_flat_rates_cost($rates, $package) { 

$userid = get_current_user_id();

$meta_city = get_user_meta( $userid, 'billing_city', true );

if ( isset( $rates['shipping_method_1'] ) ) {
    if ($meta_city == 'City1'){
        $rates['shipping_method_1']->cost = 100;
    }

    if ($meta_city == 'City2'){
        $rates['shipping_method_1']->cost = 200;
    }

}
return $rates;
}

add_filter( 'woocommerce_package_rates', 'change_flat_rates_cost', 10, 2 );

ajax功能:

add_action( 'wp_ajax_change_shipping', 'change_shipping' );
add_action( 'wp_ajax_nopriv_change_shipping', 'change_shipping' );

function change_shipping() { 
global $woocommerce;

add_filter( 'woocommerce_package_rates', 'change_flat_rates_cost', 10, 2 );

die();
}

1 个答案:

答案 0 :(得分:0)

您可以正常添加过滤器" add_filter"。不需要把它放在ajax中,因为无论如何你的函数中都提到了条件。

因此,正常地执行add_filter,而不是在ajax函数中使用add_filter,您应该使用" apply_filters"。这将调用您的自定义送货功能。

我希望我已经说清楚了。