Цель: я хочу добавить разные стоимости доставки для разных платежных шлюзов в зависимости от того, какой пользователь имеет пин-код.
Пробовал с использованием зон доставки:
У меня есть 3 разные зоны доставки вмоя панель управления woo-commerce.Все зоны создаются с использованием пин-кодов города и фиксированной ставки.Однако, если пин-код существует в нескольких зонах, зона верхнего уровня получает первый приоритет, а все остальные зоны игнорируются на странице оформления заказа.
Теперь я хочу изменить эту зону в зависимости от пользователя Платежного шлюзавыбирает.Например, у пользователя «A» есть пин-код «123456», и этот пин-код существует в двух транспортных зонах: «SH1», «SH2».Итак, если пользователь выбрал опцию «Оплата наложенным платежом», то я хочу отключить для него зону доставки «SH1» при активации «SH2».
Вот код, который я пробовал, но не работает.
add_filter( 'woocommerce_available_payment_gateways', 'change_user_zone', 20, 1);
function change_user_zone( $gateways ){
$targeted_zones_names = array('COD FCity'); // Targeted zone names
$current_payment_gateway = WC()->session->get('chosen_payment_method'); // Selected payment gateway
// Current zone name
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' ); // The chosen shipping mehod
$chosen_method = explode(':', reset($chosen_methods) );
$shipping_zone = WC_Shipping_Zones::get_zone_by( 'instance_id', $chosen_method[1] );
$current_zone_name = $shipping_zone->get_zone_name();
if($current_payment_gateway === "cod" && $current_zone_name === "COD FCity"){
$WC_Shipping_Zone = new WC_Shipping_Zone();
$var = $WC_Shipping_Zone->set_zone_locations( "India - Maharashtra - Mumbai" );
}
return $gateways;
}
Пожалуйста, помогите!
Примечание: я ищу решение для кодирования.Если вы хотите предложить какой-либо плагин для этого, то используйте раздел комментариев, пожалуйста.