Включение бесплатной доставки в Woo Commerce по отдельным пунктам [закрыто]

8

Я хотел бы знать, возможно ли включить бесплатную доставку с помощью Woo Commerce, только если в корзину включены определенные товары (или товары определенных категорий / классов доставки).

Опция Бесплатная доставка активируется только на основе стоимости корзины или с помощью кода купона, поэтому я исследовал доставку по единой ставке и обнаружил, что она отдает предпочтение наиболее дорогому классу доставки по сравнению с более дешевыми. Это означает, что созданный мной класс бесплатной доставки никогда не отменяет плату по умолчанию.

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

Я не знаю, возможно ли то, чего я пытаюсь достичь, в Woo Commerce. Купон, который применяется только к определенным продуктам / категориям, кажется самым близким, который я могу получить, но я бы не стал заставлять пользователей вводить код при оформлении заказа.

Кто-нибудь знает, есть ли более простые способы предоставить пользователям, которые покупают определенные продукты, бесплатную доставку?

Джеймс О'Нил
источник
3
Как , черт возьми, этот вопрос, связанный с плагином Wordpress , 8 раз поднимаемый и одобренный 3 раза разработчиками Wordpress, был закрыт как «не по теме» Oo
Бен
@Ben, потому что это плагин WooCommerce, а не конкретный вопрос WordPress (как указано в справочном центре )
Александр Холсгроув

Ответы:

1

Возможно, это не полностью отвечает на ваш вопрос, но плагин доставки тарифов действительно дает вам возможность установить приоритет для определенного тарифа. Кроме того, это обсуждение дает много подсказок о том, где вы могли бы искать решения

Ewout
источник
Спасибо. Глядя на документацию для Table Rate Shipping, кажется, что она будет делать то, что мне нужно. Если мой работодатель пойдет за лицензией, я сообщу, будет ли она полезной.
Джеймс О'Нил
Пожалуйста, не размещайте ссылки на внешние ресурсы. Скорее вызовите их сюда и воспользуйтесь ссылкой сверху. Если ссылка идет, ответ бесполезен, и у нас есть тяжелая борьба, предотвращающая гниение ссылки. -1
кайзер
5

Кто-нибудь знает, есть ли более простые способы предоставить пользователям, которые покупают определенные продукты, бесплатную доставку?

На самом деле, при создании продукта вы можете просто пометить его как Виртуальный продукт прямо в редакторе продукта, и это полностью исключит доставку этого элемента.

Натан
источник
1
Это работает для простых продуктов, но не для других типов продуктов - например, переменных. Хорошая попытка, хотя Это, вероятно, будет работать для некоторых людей.
Александр Ли Уильямс
Почему это не работает для переменных продуктов? Вы можете пометить каждый вариант как virtual.
BFTrick
Я согласен @BFTrick
Натан
1
Это также плохо, потому что система не будет обращаться к адресу доставки SHIPPING клиента, что очень важно;)
Кейн,
2

Вот фрагмент, собранный у некоторых Gists из обсуждения проблемы GitHub, связанного @Ewout в другом ответе. Я добавил var_dump(), так что вы можете раскомментировать и проверить, что именно вы хотите удалить.

$available_methodsявляется arrayиз:

$available_methods as $method_id => $method

Сравните с, $method_idесли вам нужны более конкретные проверки.

// Hide standard shipping option when free shipping is available
add_filter( 'woocommerce_available_shipping_methods', 'wpse90835_hide_standard_shipping_when_free_is_available' );
/**
 *  Hide Standard Shipping option when free shipping is available
 * 
 * @param array $available_methods
 */
function wpse90835_hide_standard_shipping_when_free_is_available( $available_methods )
{
    // Developers!: Dump this to see what you can unset
    # var_dump( $available_methods );

    // remove standard shipping option
    if ( 
        isset( $available_methods['free_shipping'] ) 
        AND isset( $available_methods['flat_rate'] )
    )
        unset( $available_methods['flat_rate'] );


    return $available_methods;
}
кайзер
источник
2

Я создал плагин WooCommerce, который позволяет пользователям настраивать дополнительные параметры для бесплатной доставки. В плагине есть возможность выбрать определенные товары для бесплатной доставки.

Вы можете найти бесплатный плагин на wordpress.org под названием WooCommerce Advanced Free Shipping.

Надеюсь это поможет.

Sormano
источник
0

На основе кода Кайзера (выше) я создал следующий код:

    /**
 *  Hide free shipping option when Standard Shipping is available
 * 
 * @param array $available_methods
 */
function mwe_hide_free_shipping_when_standard_shipping_is_available($available_methods) {

    // remove standard shipping option
    if (isset($available_methods['free_shipping']) AND isset( $available_methods['flat_rate'])) {
        unset($available_methods['free_shipping']);
    }

    return $available_methods;
}
add_filter('woocommerce_available_shipping_methods', 'mwe_hide_free_shipping_when_standard_shipping_is_available');

И в свою очередь, при настройке WooCommerce у меня есть опции «Бесплатная доставка» и «Единый тариф» в опциях Woo Shipping. Затем я просто устанавливаю класс доставки, указываю его стоимость (например, 7,95 фунтов стерлингов) на странице параметров единой ставки, а затем просто добавляю этот класс доставки к продуктам, за которые я хочу взимать 7,95 фунтов стерлингов за р.

запрет-геоинженерия
источник
0

Опция «Виртуальный» удалит все расходы по доставке, но при этом удалит также опцию доставки по другому адресу, нежели платежный адрес клиента. Это не проблема, если клиент покупает и другие, не виртуальные продукты, но если это единственное, что он покупает.

user51366
источник