Vous êtes en train de créer une marketplace avec WordPress / Woocommerce.
Et vous avez besoin d’ajouter une fonction qui oblige les acheteurs à acheter les produits du même vendeur ?
Alors pour cela, ajouter le code ci-dessous dans votre fichier functions.php de votre thème enfant.
function filter_woocommerce_add_to_cart_validation( $passed, $product_id, $quantity, $variation_id = null, $variations = null ) {
// Cart NOT empty
if ( ! WC()->cart->is_empty() ) {
// Retrieves post data given a post ID or post object.
$product = get_post( $product_id );
// Post author
$product_author = $product->post_author;
// Flag, by default false
$flag = false;
// Loop trough cart
foreach( WC()->cart->get_cart() as $cart_item ) {
// Get product ID
$cart_product_id = $cart_item['data']->get_id();
// Get post
$cart_product = get_post( $cart_product_id );
// Post author
$cart_product_author = $cart_product->post_author;
// Condition NOT equal
if( $cart_product_author != $product_author ) {
$flag = true;
// Break loop
break;
}
}
// True
if ( $flag ) {
// Add notice
wc_add_notice( __( 'Oups ! Les articles ajoutés dans le panier doivent provenir du même vendeur.', 'woocommerce' ), 'error' );
// NOT passed
$passed = false;
}
}
return $passed;
}
add_filter( 'woocommerce_add_to_cart_validation', 'filter_woocommerce_add_to_cart_validation', 10, 5 );
Ensuite, vous pouvez changer le message que vous trouverez ici :
// Add notice
wc_add_notice( __( 'Oups ! Les articles ajoutés dans le panier doivent provenir du même vendeur.', 'woocommerce' ), 'error' );
Testé sur WordPress 6.1 et Woocommerce 6.6.1
Un nouveau projet WordPress ? Besoin d’aide ?
Contactez-moi ou visitez mon site et je me ferais un plaisir de vous aider.