我希望客户只有在回到商店页面时才能从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;
}
我使用以下代码放在循环文件夹中,但它无效。
我希望用户可以在一生中购买一次产品 注意 - 它不是一次购买一种产品 如果有人购买了产品那么他/她将永远无法购买任何其他产品。
答案 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;
}
现在,您可以通过向现有购物车中添加新产品进行测试,看看它是否仅添加了最新产品,并删除了购物车中以前的所有产品。