我可以添加到我的主题的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;
}
答案 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 );
}
但是用户仍然可以创建不同的帐户并再次购买该产品。