我需要将已购买的特定产品的“添加到购物车”按钮更改为“选择”按钮,以根据特定产品更改用户的角色。
一旦用户从商店购买商品,我就会对其进行设置,以便他们根据所购买的商品ID获得角色。如果他们购买其他产品,则会删除其旧角色,并添加新角色以反映新产品ID。
一次性购买后,用户应具有永久的访问权,可以随意切换角色,而无需重新购买。我已经成功地将“添加到购物车”按钮更改为“选择”,并且可以重定向到新链接,但是当用户单击链接时,仍然可能需要更改用户的角色,可能在链接页面上。< / p>
// Changing the Add to Cart for specific purchased products
add_filter( 'woocommerce_loop_add_to_cart_link', 'customizing_add_to_cart_button', 10, 2 );
function customizing_add_to_cart_button( $link, $product ){
$bought = false;
if( is_user_logged_in() ){
$customer_orders = get_posts( array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => get_current_user_id(),
'post_type' => 'shop_order', // WC orders post type
'post_status' => 'wc-completed' // Only orders with status "completed"
) );
// Going through each current customer orders
foreach ( $customer_orders as $customer_order ) {
$order = wc_get_order( $customer_order->ID );
// Going through each current customer order items
foreach($order->get_items() as $item_id => $item_values){
if($item_values['product_id'] == $product->id){
$bought = true;
break;
}
}
}
}
if($bought){
// for the product ID 317
if( $product->id == 317 ){
$add_to_cart_url = site_url('/members/me/profile/collection');
$button_text = __('Select 317', 'woocommerce');
}
// for the product ID 311
if( $product->id == 311){
$add_to_cart_url = site_url('/members/me/profile/collection');
$button_text = __('Select 311', 'woocommerce');
}
} else {
$add_to_cart_url = $product->add_to_cart_url();
$button_text = $product->add_to_cart_text();
}
$link = sprintf( '<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" data-quantity="%s" class="button product_type_%s">%s</a>',
esc_url( $add_to_cart_url ),
esc_attr( $product->id ),
esc_attr( $product->get_sku() ),
esc_attr( isset( $quantity ) ? $quantity : 1 ),
esc_attr( $product->product_type ),
esc_html( $button_text )
);
return $link;
}
我认为可能需要一个单独的功能,该功能允许删除当前的产品角色,并根据所使用的产品按钮在登录页面上添加新的角色。我不是最擅长php的项目,所以让我知道是否有办法实现这一目标!谢谢。