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


8

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

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

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

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

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


3
Как , черт возьми, этот вопрос, связанный с плагином Wordpress , 8 раз поднимаемый и одобренный 3 раза разработчиками Wordpress, был закрыт как «не по теме» Oo
Бен

@Ben, потому что это плагин WooCommerce, а не конкретный вопрос WordPress (как указано в справочном центре )
Александр Холсгроув

Ответы:


1

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


Спасибо. Глядя на документацию для 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.

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


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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.