如何限制客户购买一种带有woocommerce的产品

时间:2015-11-02 09:23:49

标签: php wordpress woocommerce

我希望客户只有在回到商店页面时才能从woo commerce购买一件产品,他们将被重定向到我的帐户页面。

  <?php
/**
 * Loop Add to Cart
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     2.1.0
 */

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)) {
    $redirect = $myaccount;
}

我使用以下代码放在循环文件夹中,但它无效。

我希望用户可以在一生中购买一次产品 注意 - 它不是一次购买一种产品 如果有人购买了产品那么他/她将永远无法购买任何其他产品。

2 个答案:

答案 0 :(得分:0)

loop/add-to-cart.php模板会创建一个链接。您的模板只列出了一些变量($redirect$myaccount定义在哪里?)并且没有创建链接,因此它不会任何事情。

更好的解决方案是通过loop/add-to-cart.php过滤器过滤woocommerce_loop_add_to_cart_link模板中创建的链接。这样,如果物品尚未购买,您可以保留常规链接。

将以下内容添加到主题的functions.php文件中:

add_filter( 'woocommerce_loop_add_to_cart_link', 'so_add_to_cart_link', 10, 2 );
function so_add_to_cart_link( $link, $product ){

    $current_user = wp_get_current_user();

    if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product->id)) {
        $link = sprintf( '<a href="%s" rel="nofollow" class="button product_type_%s">%s</a>',
            esc_url( get_permalink( wc_get_page_id( 'myaccount' ) ) ),
            esc_attr( $product->product_type ),
            __( 'View my account', 'theme-text-domain' ),
        ),
    }

    return $link;
}

请注意,上述内容尚未经过测试,因此请注意拼写错误。

答案 1 :(得分:0)

打开您的主题 functions.php ,并将代码放在最后。

add_filter( 'woocommerce_add_cart_item_data', 'woo_custom_add_to_cart' );

function woo_custom_add_to_cart( $cart_item_data ) {
global $woocommerce;
$woocommerce->cart->empty_cart();

return $cart_item_data;
}

现在,您可以通过向现有购物车中添加新产品进行测试,看看它是否仅添加了最新产品,并删除了购物车中以前的所有产品。