Вывод списка способов доставки в Woocommerce
Бывают случаи когда нужно вывести список способов доставки товара в любом месте интернет магазина а не только в корзине или на странице checkout, вот один из способов как это можно сделать.
<select name="shipping_method[0]" data-index="0" id="shipping_method_0" class="shipping_method">
<?php
foreach ( WC()->cart->get_shipping_packages() as $package_id => $package ) {
if ( WC()->session->__isset( 'shipping_for_package_'.$package_id ) ) {
$chosen_shipping_methods = WC()->session->get('chosen_shipping_methods'); // Выбранный на данный момент метод доставки
foreach ( WC()->session->get( 'shipping_for_package_'.$package_id )['rates'] as $shipping_rate_id => $shipping_rate ) {
$rate_id = $shipping_rate->get_id(); // То же самое, что и переменная $shipping_rate_id (комбинация метода доставки и идентификатора экземпляра)
$method_id = $shipping_rate->get_method_id(); // Ярлык метода доставки (slug)
$instance_id = $shipping_rate->get_instance_id(); //Экземпляр ID
$label_name = $shipping_rate->get_label(); // Имя метки метода
$cost = $shipping_rate->get_cost(); // Стоимость без налога
$tax_cost = $shipping_rate->get_shipping_tax(); // Стоимость налога
$taxes = $shipping_rate->get_taxes(); // Детали налогов (array)
$sel = '';
if($chosen_shipping_methods[0] == $rate_id)
{
$sel = ' selected';
}
echo '<option value="'.$rate_id.'"'.$sel.'>'.$label_name.'</option>';
}
}
}
?>
</select>
В данном примере вывод данных идет в тэг select, но вы можете оформить данные любым нужным для вас способом.