WooCommerce - Отображение стоимости доставки на странице товара
Я разрабатываю сайт электронной коммерции с использованием WooCommerce для клиента, и они хотят иметь возможность показывать стоимость доставки товара на странице продукта (потому что так было реализовано на их старом сайте магазина). Есть ли способ это сделать? Я искал информацию, но не нашел ничего определенного, и хотя здесь на StackExchange есть похожий вопрос, никто на него не ответил.
Я знаю, что существует плагин за $79, который это делает, но есть ли способ установить стоимость доставки для каждого товара отдельно? Хотелось бы избежать покупки плагина.

Вы можете отображать стоимость доставки для каждого товара в WooCommerce 2.x.
Так как вы установили фиксированные цены за единицу товара, вы можете показать их в описании продукта, просто вписав их туда. Или же можно обратиться к классу доставки товара (это таксономия) "product_shipping_class", который может быть назначен каждому продукту индивидуально или массово через быстрое редактирование.
Как отобразить это в шаблоне товара? Каждая страница товара организована в виде директории woocommerce. Вы можете скопировать эту директорию из папки плагина WooCommerce прямо в папку вашей темы. После этого вы можете вносить любые изменения, не опасаясь, что будущие обновления перезапишут ваши правки. Вот ссылка на инструкции по работе с файлами темы WooCommerce.
Начните со страницы 'single-product.php'. Это основной цикл для страницы отдельного товара, затем 'content-single-product.php', который детализирует хуки внутри шаблона товара.
В зависимости от того, где вы хотите отобразить информацию о доставке, вы можете получить доступ к терминам, назначенным товару (если у вас разные тарифы для разных товаров). Используйте get_the_terms( $post->ID, 'product_shipping_class'). Для получения дополнительной информации о работе с этим вызовом см. эту статью.
Используя PHP для разбора массива, вы узнаете класс доставки и сможете отобразить информацию о стоимости доставки, выполнив расчет на основе возвращенного класса доставки.
Есть еще несколько способов сделать это с использованием объекта класса доставки, но этого должно хватить для начала.

Спасибо, Стив, у меня есть один уточняющий вопрос - я использовал тот фрагмент кода/вызов, который вы привели выше, адаптировав его для создания переменной, а затем вывода этой переменной в нужном месте шаблона. Однако, он просто выводит слово 'Array'. Мои знания PHP не очень сильные, поэтому я не уверен, как действовать дальше? В WooCommerce я создал классы доставки для каждой цены (Доставка: £3.00, Доставка: £4.00 и т.д.) и назначил им стоимость в разделе настроек доставки.

Попробуйте вывести переменную с помощью var_dump($variable). Вы увидите, что находится в массиве. Затем вы сможете обращаться к конкретным элементам по их структуре в массиве.

Да, товар, на котором я тестировал, имеет класс доставки под названием Доставка: £3.00, который я связал с таблицей фиксированной ставки доставки стоимостью £3.00. Я подтвердил, что это работает, потому что когда я добавляю товар в корзину, стоимость доставки отображается как £3.00

Также, решение есть в классе $product. Вам нужно убедиться, что вы вызываете global $product. Вы можете вызвать классы с помощью php кода echo $product->get_price_html(); чтобы увидеть класс продукта на страницах товаров.

Ок, я добавил <?php echo $product->get_shipping_class(); ?>
в шаблон, и он выводит slug класса доставки! Уже почти получилось! Как сделать, чтобы этот вызов выводил название термина вместо slug? Спасибо за помощь в этом вопросе :)

Старая запись, но может помочь в отображении стоимости доставки
<?php
$slug = $product->get_shipping_class_id();
$slugobject = get_term_by('term_taxonomy_id', $slug, 'product_shipping_class');
echo $slugobject->description;?>
Этот скрипт будет работать для типа доставки "Фиксированная ставка":
global $product; /* Удалите, если уже установлено.. */
$shipping_class = $product->get_shipping_class();
$flat_rate = new WC_Shipping_Flat_Rate;
$symbol = get_woocommerce_currency_symbol();
echo $symbol . $flat_rate->flat_rates[$shipping_class]['cost'];
