【发布时间】:2021-12-10 22:13:22
【问题描述】:
所以这就是我需要做的:找出最便宜的运输方式并将“免费送货”方式标签更改为“免费送货”+“最便宜的方式标签”。这样客户就可以知道免费送货所使用的送货方式。
首先我想到了全局变量。然后使用了 wp_options,但我不确定 wp_options 是用户共享数据还是用户特定数据。
您对以下代码有什么好的想法或更正吗?顺便说一句,这不起作用?谢谢!
add_filter( 'woocommerce_shipping_chosen_method', 'wf_default_shipping_method', 10 );
function wf_default_shipping_method( $method ) {
$the_cheapest_cost = 1000000;
$packages = WC()->shipping()->get_packages()[0]['rates'];
foreach ( array_keys( $packages ) as $key ) {
if ( ( $packages[$key]->cost > 0 ) && ( $packages[$key]->cost < $the_cheapest_cost ) ) {
$the_cheapest_cost = $packages[$key]->cost;
$transport_label = $packages[$key]->label;
$method_id = $packages[$key]->id;
}
}
if(get_option('atransport')){
update_option('atransport', $transport_label);
}else{
add_option('atransport', $transport_label);
}
return $method_id;
}
add_filter( 'woocommerce_package_rates', 'change_shipping_methods_label_names', 20, 2 );
function change_shipping_methods_label_names( $rates, $package ) {
$transport = get_option('atransport');
foreach( $rates as $rate_key => $rate ) {
if ( __( 'Free Shipping', 'woocommerce' ) == $rate->label ){
$rates[$rate_key]->label = __( 'FreeShipping -' . $transport, 'woocommerce' ); // New label name
}
}
delete_option('atransport');
return $rates;
}
【问题讨论】:
标签: wordpress woocommerce code-snippets