簡體   English   中英

插件:Woocommerce > 如何允許將作者的產品添加到購物車

[英]Plugin: Woocommerce > How to allow add to cart products from author

背景:我致力於基於 woocommerce 插件創建市場。 因此,由於每個賣家都有不同的條件,例如運費、最低金額等,我希望每個訂單僅允許客戶從一個供應商處添加到購物車。

到目前為止采取的行動:我可以將購物車項目供應商與當前供應商進行比較。 應該注意的是,如果啟用了 W3 Total Cache,下面的代碼將無法正常工作

function check_cart_by_vendor() {
global $woocommerce;
$items = $woocommerce->cart->get_cart();
$_product = array();
foreach($items as $item => $values) { 
$_product[] = $values['data']->post; 
}
if(isset($_product[0]->ID)){
$product_in_cart_vendor_id = get_post_field( 'post_author', $_product[0]->ID );
global $post;
$vendor_id = get_the_author_meta('ID');
if ($vendor_id == $product_in_cart_vendor_id){echo "same vendor";}else{echo "another vendor";}
}else{echo "same vendor";}
}

我想要的場景:客戶將一個供應商的產品添加到購物車,然后他選擇了另一個供應商,然后再次將另一個供應商的產品添加到購物車中。 當他添加來自第二個供應商的產品時,我希望他的購物車自動從第一個供應商的產品中清除

問題:如何實現上述場景?

我自己想出來的。 下面是代碼

function woo_custom_add_to_cart( $cart_item_data ) {
global $woocommerce;
$items = $woocommerce->cart->get_cart(); //getting cart items
$_product = array();
foreach($items as $item => $values) { 
$_product[] = $values['data']->post; 
}
if(isset($_product[0]->ID)){ //getting first item from cart 
$prodId = (int)$_POST["add-to-cart"];
$product_in_cart_vendor_id = get_post_field( 'post_author', $_product[0]->ID);
$product_added_vendor_id = get_post_field( 'post_author', $prodId );
if( $product_in_cart_vendor_id !== $product_added_vendor_id ){$woocommerce->cart->empty_cart();}
return $cart_item_data; }} 

該代碼對我不起作用,不要讓我將任何項目添加到我的購物車,當我添加到購物車時,購物車回到 0 個項目。 我在這個網站上發現了你的代碼的修改: https : //www.wcvendors.com/help/topic/restrict-clientbuyer-to-order-from-one-vendor-at-a-time/

它非常適合我的 Dokan 多供應商項目。 他們還向用戶添加了一條消息。

我將把代碼放在下面(修改),我使用代碼 snipet 插件來添加功能:

add_action( 'woocommerce_add_to_cart_validation', function( $is_allow, $product_id, $quantity ) {
$product = get_post( $product_id );
$product_author = $product->post_author;

//Iterating through each cart item
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
    $cart_product_id = $cart_item['product_id'];
    $cart_product = get_post( $cart_product_id );
    $cart_product_author = $cart_product->post_author;
    if( $cart_product_author != $product_author ) {
        $is_allow = false;
        break;
    }
}

if( !$is_allow ){
    // We display an error message
    wc_clear_notices();
    wc_add_notice( __( "No puedes comprar productos en diferentes sucursales. Revisa en que tienda te encuentras para seguir comprando.", "wcfm-ecogear" ), 'error' );
}

return $is_allow;

}, 50, 3 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM