2016-09-02 4 views
3

Магазин Wordpress использует WooCommerce, и у меня есть небольшая заметка о покупке, которую мне нужно, чтобы появился на WooCommerce Checkout, но только при покупке определенного продукта.Сообщение об оплате WooCommerce на основе определенной товарной категории

Я добавил пользовательское сообщение, которое теперь появляется под кнопкой «Заказ места». Тем не менее, это проявляется независимо от того, что находится в телеге.

Это код, который я в настоящее время на месте:

add_action('woocommerce_after_checkout_form', 'allclean_add_checkout_content', 12); 
function allclean_add_checkout_content() { 
echo '<div class="checkoutdisc">Custom message appears here fine.</div>'; 
} 

Есть простой код, который я могу добавить до этой линии, что делает его применять только тогда, когда определенная категория продукт в корзину ?

спасибо

ответ

3

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

Вот код:

add_action('woocommerce_after_checkout_form', 'allclean_add_checkout_content', 12); 
function allclean_add_checkout_content() { 
    // set your special category name, slug or ID here: 
    $special_cat = 'special_category'; 
    $bool = false; 
    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 
     $item = $cart_item['data']; 
     if (has_term($special_cat, 'product_cat', $item->id)) 
      $bool = true; 
    } 
    // If the special cat is detected in one items of the cart 
    // It displays the message 
    if ($bool) 
     echo '<div class="checkoutdisc">This is Your custom message displayed.</div>'; 
} 

Вы также можете использовать массив продуктов Идентификаторы вместо категории продукта ...

В этом случае код будет немного отличаться:

add_action('woocommerce_after_checkout_form', 'allclean_add_checkout_content', 12); 
function allclean_add_checkout_content() { 
    // set your products IDs here: 
    $product_ids = array(31, 68, 87, 124); 
    $bool = false; 
    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 
     $item = $cart_item['data']; 
     if (in_array($item->id, $product_ids)) 
      $bool = true; 
    } 
    // If the special cat is detected in one items of the cart 
    // It displays the message 
    if ($bool) 
     echo '<div class="checkoutdisc">This is Your custom message displayed.</div>'; 
} 

Этот код содержится в файле functions.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Этот код проверен и работает.

2

Я думаю, вам нужно проверить содержимое корзины.

add_action('woocommerce_after_checkout_form', 'allclean_add_checkout_content', 12); 
function allclean_add_checkout_content() { 
    $cart = WC()->cart; 
    foreach ($this->get_cart() as $cart_item_key => $values) { 
     $_product = $values['data']; 

     if (has_term('special-category', 'product_cat', $_product->id)){ 
      echo '<div class="checkoutdisc">Your custom message.</div>'; 
     } 
    } 
} 
Смежные вопросы