https://tdestudiodesign.com/wp-content/plugins/whatsapp/style.css

En un reciente Hilo de Slack de Business Bloomer Clubun miembro preguntó cómo restringir un producto específico en WooCommerce basado en el país de envío seleccionado del cliente. Este tipo de restricción es esencial cuando la logística o el cumplimiento evitan que ciertos productos se envíen a regiones específicas.

Para lograr esto, puede negar el pago si un producto restringido está en el carrito y el país de envío seleccionado no está permitido. A continuación, revisaremos el código y el enfoque necesarios para implementar esta funcionalidad en WooCommerce.

Negar el pago según el país y el país de envío

Utilizando una combinación de filtros y funciones de WooCommerce, puede restringir que los productos específicos se compren en ciertos destinos de envío. Este enfoque implica:

  1. Identificar el producto restringido por su identificación
  2. Verificar el país de envío seleccionado del cliente
  3. Negar el pago y mostrar un mensaje de error si no está permitida la combinación del país de productos

Aquí está el código personalizado para aplicar esta restricción:

add_action( 'woocommerce_check_cart_items', 'bbloomer_restrict_checkout_by_country_product' );

function bbloomer_restrict_checkout_by_country_product() {
$restricted_product_id = 123; // Replace with the restricted product ID
$restricted_countries = array( 'US', 'CA' ); // Add the country codes to restrict
$shipping_country = WC()->cart->get_customer()->get_shipping_country();

if ( bbloomer_is_product_in_cart( $restricted_product_id ) && ! in_array( $shipping_country, $restricted_countries ) ) {
wc_add_notice( 'Sorry, this product cannot be shipped to your selected country.', 'error' );
}
}

function bbloomer_is_product_in_cart( $product_id ) {
foreach ( WC()->cart->get_cart() as $cart_item ) {
if ( $cart_item['product_id'] == $product_id ) {
return true;
}
}
return false;
}

Explicación del código

  • Línea 5: Establezca la ID de producto específica en $restricted_product_id que desea restringir por país.
  • Línea 6: Definir los países donde se aplica esta restricción ingresando los códigos de su país en el $restricted_countries formación.
  • Línea 7: Recuperar el país de envío seleccionado actualmente usando WC()->cart->get_customer()->get_shipping_country().
  • Línea 9: Compruebe si el producto restringido está en el carrito utilizando la función de ayuda bbloomer_is_product_in_cart() (definido a continuación) y si el país seleccionado está restringido. Si se cumplen ambas condiciones, un mensaje de error evita el pago.

Esta función de ayudante bbloomer_is_product_in_cart() Verifica si el producto restringido está en el carrito verificando la ID del producto en cada artículo del carrito.

Recursos adicionales

Para obtener más detalles sobre cómo restringir el pago, verificar las identificaciones de productos y obtener el país de envío, puede consultar estas guías:

Al usar este código, se asegura de que los clientes no puedan completar su compra cuando el producto restringido está en el carrito y el país de destino no se permite. Este enfoque proporciona una experiencia fácil de usar al notificar a los clientes sobre la restricción antes de finalizar su compra.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *