【发布时间】:2021-11-22 05:15:00
【问题描述】:
在 WooCommerce 中,我设置了不同的运输方式,但必须特别为公司提供一种。
为此,我使用以下代码:
add_filter( 'woocommerce_package_rates', array( $this, 'package_rates' ), 10, 2 );
public function package_rates( $rates, $package ) {
$company_rate_id = 'flat_rate:7';
if(!empty(WC()->customer->get_billing_company())){
$company_rates = $rates[ $company_rate_id ];
$rates = array( $company_rate_id => $company_rates );
}else{
unset( $rates[ $company_rate_id ] );
}
return $rates;
}
该解决方案有效,但前提是计费公司已经存在并保存在数据库中。因此,如果客户在结帐页面上更新此信息,它就不起作用了。
可能的解决方案是实时保存该字段(billing_company)。
我尝试了以下功能:
add_filter( 'woocommerce_checkout_fields' , 'trigger_update_checkout_on_change' );
function trigger_update_checkout_on_change( $fields ) {
$fields['billing']['billing_company']['class'][] = 'update_totals_on_change';
return $fields;
}
这更新了运输方式,问题又是,该字段没有保存在数据库中,package_rates()函数无法实时找到它。
【问题讨论】:
标签: php jquery ajax woocommerce checkout