Образец (sample) товара может быть полезен в некоторых областях интернет торговли, например продажа тканей.
Плагин Free Product Sample for WooCommerce (400+)
Плагин предоставляет довольно простой функционал. В карточке товара, после кнопки В корзину, добавляет еще одну кнопки Получить образец. При нажатии товар попадает в корзину с нулевой ценой и пометкой (sample). Можно настраивать максимальное количество образцов.
В Pro-версии за 29$ (28.05.2021) можно:
- Установить цену образца
- Вывести кнопку в категории
- Настраивать выборку товаров или категорий у которых активен данный функционал
- Задать, при наличии образца в заказе, метод доставки
Wocommerce Product Samples (Mladjo, 300)
Плагин не работает.
Simple Product Sample (MCI Desarrollo, 10)
Всего одна настройка — не применять к вариативным товарам. Но интересный функционал. Дает возможность у каждого товара включать возможность образца и устанавливать стоимость образца.
[alert]В корзине ошибка: итоговая цена за образец выводится не верно. И глючит обновление корзины.[alert]
WooCommerce Sample (Michele Menciassi, 200)
Плагин фактически не работает. Множественные ошибки. Образец не добавляется. Фуункционал предполагался схожий с плагином Simple Product Sample.
Решение без плагина
Нашел в сети решение от Rodolfo Melogli (сайт businessbloomer.com). Не вполне понятно как это работает, но можно в будущем потестировать.
// 1. Display Free Sample Add to Cart
// Note: change "123" with Free Sample ID
add_action( 'woocommerce_single_product_summary', 'bbloomer_add_free_sample_add_cart', 35 );
function bbloomer_add_free_sample_add_cart() {
?>
<form class="cart" method="post" enctype='multipart/form-data'>
<button type="submit" name="add-to-cart" value="123" class="single_add_to_cart_button button alt">Order a Free Sample</button>
<input type="hidden" name="free_sample" value="<?php the_ID(); ?>">
</form>
<?php
}
// 2. Add the custom field to $cart_item
add_filter( 'woocommerce_add_cart_item_data', 'bbloomer_store_free_sample_id', 9999, 2 );
function bbloomer_store_free_sample_id( $cart_item, $product_id ) {
if ( isset( $_POST['free_sample'] ) ) {
$cart_item['free_sample'] = $_POST['free_sample'];
}
return $cart_item;
}
// 3. Concatenate "Free Sample" with product name (CART & CHECKOUT)
// Note: change "123" with Free Sample ID
add_filter( 'woocommerce_cart_item_name', 'bbloomer_alter_cart_item_name', 9999, 3 );
function bbloomer_alter_cart_item_name( $product_name, $cart_item, $cart_item_key ) {
if ( 123 === $cart_item['product_id'] ) {
$product = wc_get_product( $cart_item["free_sample"] );
$product_name .= " (" . $product->get_name() . ")";
}
return $product_name;
}
// 4. Add "Free Sample" product name to order meta
// Note: this will show on thank you page, emails and orders
add_action( 'woocommerce_add_order_item_meta', 'bbloomer_save_posted_field_into_order', 9999, 2 );
function bbloomer_save_posted_field_into_order( $itemID, $values ) {
if ( ! empty( $values['free_sample'] ) ) {
$product = wc_get_product( $values['free_sample'] );
$product_name = $product->get_name();
wc_add_order_item_meta( $itemID, 'Free sample for', $product_name );
}
}
Woocommerce Free Sample (by Kevin Ruscoe)
Работающее решение! У товара необходимо активировать опцию Образец.
Плагин создает товар Sample Product, в который подставляется значение товара из которого выбран Образец.
Минусами данного решения является
- Когда товар попадает в заказ, то у него не отображается наименование. Он выводится как Sample Product.
- [не существенно] Если добавить образцы с двух разных товаров, в самой корзине они отображаются как разные товары, а мини-корзина в параметре количество позиций считает их за один товар.