Woocommerce:用户只能购买一次产品

时间:2014-09-21 08:39:00

标签: php mysql wordpress woocommerce

我可以添加到我的主题的functions.php文件中,以便用户只能购买一次产品?如果之前他们曾在商店购买过任何产品,他们就无法再次购买。

我想代码看起来像这样(伪代码),并会使用woocommerce_add_cart_item_data过滤器。

add_filter( 'woocommerce_add_cart_item_data', 'woo_check_not_bought_before' );

function woo_check_not_bought_before( $cart_item_data ) {

    global $woocommerce;

    // Some MYSQL to check if product was bought before

    if ($bought_before == 'true') {       
         $woocommerce->cart->empty_cart();
    }

    // Echo some text to explain why you can only buy the product once

    return $cart_item_data;
}

1 个答案:

答案 0 :(得分:1)

您可以使用此代码来满足您的要求。在主题中创建一个名为woocommerce的文件夹。然后在其中创建一个名为loop的文件夹。然后在其中创建一个add-to-cart.php文件并编写以下代码:

  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

  global $product;
  $current_user = wp_get_current_user();

 if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product->id)) {
    echo 'Purchased';
    }
   else
   {
   echo apply_filters( 'woocommerce_loop_add_to_cart_link',
  sprintf( '<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" class="button          %s product_type_%s">%s</a>',
    esc_url( $product->add_to_cart_url() ),
    esc_attr( $product->id ),
    esc_attr( $product->get_sku() ),
    $product->is_purchasable() ? 'add_to_cart_button' : '',
    esc_attr( $product->product_type ),
    esc_html( $product->add_to_cart_text() )
),
$product );
  } 

但是用户仍然可以创建不同的帐户并再次购买该产品。