我有一个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();
}
答案 0 :(得分:0)
您可以正常添加过滤器" add_filter"。不需要把它放在ajax中,因为无论如何你的函数中都提到了条件。
因此,正常地执行add_filter,而不是在ajax函数中使用add_filter,您应该使用" apply_filters"。这将调用您的自定义送货功能。
我希望我已经说清楚了。