Mensaje de pago de WooCommerce basado en una categoría de producto específica

WordPress store está usando WooCommerce, y tengo una pequeña nota de compra que necesito que aparezca en WooCommerce Checkout , pero solo cuando se compra cierto producto.

He agregado un mensaje personalizado que ahora aparece debajo del botón Realizar pedido. Sin embargo, aparece sin importar qué hay en el carrito.

Este es el código que tengo actualmente en su lugar:

add_action( 'woocommerce_after_checkout_form', 'allclean_add_checkout_content', 12 ); function allclean_add_checkout_content() { echo '
Custom message appears here fine.
'; }

¿Hay un código simple que puedo agregar antes de esta línea, que hace que solo se aplique cuando un determinado producto de categoría está en el carro?

Gracias

Aquí comprobamos que tenemos un producto en el carrito con esta categoría especial . Si la condición coincide (en uno de los elementos del carro), se muestra el mensaje.

Aquí está el código:

 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 '
This is Your custom message displayed.
'; }

También puede usar una matriz de productos Ids en lugar de una categoría de producto …

En este caso, el código será un poco diferente:

 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 '
This is Your custom message displayed.
'; }

Este código va en el archivo function.php de su tema (o tema) hijo activo o también en cualquier archivo de complemento .

Este código está probado y funciona.

Creo que debes verificar el contenido del carrito.

 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 '
Your custom message.
'; } } }