添加商品php,php – 为首次购买者添加商品到购物车

我有一个WooCommerce商店,我正在尝试仅为首次购买者添加特定产品到Woocommerce购物车.我已经有以下PHP代码了.

但由于某种原因,它将无法运作.

这是我的代码:

add_action('woocommerce_before_cart','woocommerce_add_to_cart');

function woocommerce_add_to_cart(){

if(! is_admin()){

global $woocommerce;

$product_id=912;

$found=false;

$first_customer = false;

if(is_user_logged_in()){

$user_id=get_current_user_id();

$customer_orders=get_posts(array(

'meta_key' => '_customer_user',

'meta_value' => $user_id,

'post_type' => 'shop_prder',

'numberposts' => -1

));

if(count($customer_orders) > 0) {

$first_customer=true;

wc_add_notice( sprintf( "first custommer check",error));

$statuses=array('wc-failed','wc-cancelled','wc-refunded');

foreach($customer_orders as $tmp_orders){

$order =wc_get_order($tmp_orders->ID);

if (! in_array($order->get_status(),$statuses)){

wc_add_notice( sprintf( "first custommer tmp check",error));

$first_customer=false;

}

}

}

if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) {

wc_add_notice( sprintf( "items in cart check",error));

foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {

$_product = $values['data'];

if ( $_product->id == $product_id ){

wc_add_notice( sprintf( "produkt id check",error));

$found = true;

}

}

}

}

if (!$found && $first_customer){

wc_add_notice( sprintf( "found and custommer check",error));

WC()->cart->add_to_cart($product_id);

}

}

}

如果有人能帮助我,我真的很感激.

谢谢

解决方法:

您的代码中存在2个错误以及其他一些错误:

>您使用现有的woocommerce钩子来命名您的功能

> post_type不是’shop_prder’而是’shop_order’

这是更改的代码:

// 'woocommerce_add_to_cart' is an existing woocommerce hook so you can't use it to name your custom function here…

add_action('woocommerce_before_cart','first_time_buyers');

function first_time_buyers(){

if( !is_admin() && is_user_logged_in() ){

$product_id = 912;

$found = false;

$first_customer = true;

// Getting current customer valid orders (see 'post_status' below)

$customer_orders=get_posts(array(

'meta_key' => '_customer_user',

'meta_value' => get_current_user_id(),

'post_type' => 'shop_order', // <= NOT 'shop_prder' but 'shop_order'

// We add the accepted orders status here

'post_status' => array('wc-on-hold', 'wc-processing', 'wc-completed'),

'numberposts' => -1

));

if( count($customer_orders) > 0 )

$first_customer = false;

if ( !WC()->cart->is_empty() )

foreach ( WC()->cart->get_cart() as $cart_item )

if ( $product_id == $cart_item['product_id'] ) {

$found = true;

break;

}

if (!$found && $first_customer){

WC()->cart->add_to_cart($product_id);

}

}

}

代码进入你的活动子主题(或主题)的任何php文件或任何插件php文件.

经过测试,功能齐全.

标签:wordpress,php,woocommerce,product,cart

来源: https://codeday.me/bug/20190627/1309139.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值