我有一个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

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

  1. 根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,终用户输入q退出时,打印购买的商品列表。

    一.问题: 现有商品列表如下: 1.products = [["iphone",6888],["MacPro",14800],["小米6", ...

  2. mysql 商品规格表_完成后台管理系统功能(九)商品规格列表的展示,添加以及删除...

    商品规格的实现图: 规律: 1.同一类商品的规格项分组相同. 2.同一类商品的规格项目是相同的.规格项目是跟商品关联. 3.不同商品规格参数的值是不同的 1 页面效果展示: 2.规格列表的展示功能 用 ...

  3. 写一个循环,不断的问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,最终用户输入q退出时,打印购物车里的商品列表

    写一个循环,不断的问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,最终用户输入q退出时,打印购物车里的商品列表 写一个循环,不断的问用户想买什么,用户选择一个商品编号,就把对应的商 ...

  4. 服务器管理器如何添加共享账号,大势至共享文件管理系统如何添加账号

    大势至共享文件权限设置软件是根据文件服务器上用户账号来设置访问权限的(也支持以MAC地址来设置共享文件访问权限).因此需要注意以下几个方面: 1.必须在服务器上创建账号,然后才会被本系统读取到用户列表 ...

  5. layer的tab添加html,layerui代码控制tab选项卡,添加,关闭的实例

    layui layui 后台布局 控制台 商品管理 用户 其它系统 邮件管理 消息管理 授权管理 贤心 基本资料 安全设置 退了 所有商品 列表一 列表二 列表三 超链接 解决方案 列表一 列表二 超 ...

  6. R语言ggplot2可视化在可视化图像中添加上限线条、下限线条、添加上下限图例实战

    R语言ggplot2可视化在可视化图像中添加上限线条.下限线条.添加上下限图例实战 目录

  7. android 添加日程失败,Andriod向系统日历添加日程

    Andriod向系统日历添加日程 1.检查是否有现有的账户存在 private static int checkCalendarAccount(Context context) { Cursor us ...

  8. php怎么添加框架,PHPWind 给默认的风格添加大框架

    虽然大框架会影响一些速度,但是对于新做风格的朋友来说,一个大框架也是一个最简单直接的美化方式,学会这个简单的大框架,也就可以运用到其他的地方. 准备工作:我们要按照官方已有的风格教程定义一套新的风格, ...

  9. php 多维素组添加下级,php中如何将元素添加到多维数组

    多维数组是指含有数组元素的数组,那么如何将元素添加到多维数组中呢?本篇文章就来给大家介绍一下php中将元素添加到多维数组的方法. 多维数组写法如下:$multi_dimensional_array = ...

最新文章

  1. byte endian(biglittle endian)
  2. linux下一键编译安装MariaDB10.0.12
  3. AJAX中文传值乱码问题解决方法
  4. [MyBatisPlus]入门案例
  5. Go 语言 bytes.Buffer 源码详解之1
  6. 从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第十讲 WPF 系统MainWindow
  7. 【python数据分析】用python进行数据探索2(常见matplotlib及pandas绘图函数汇总、对比及拓展)
  8. 移动脱机 Outlook 数据文件 (.ost)
  9. UTF-8 encode decode 集合
  10. 微信H5支付 以及退款
  11. 用Java Swing山寨QQ空间的魔法卡片游戏
  12. Linux---ALSA音频工具arecord、aplay、amixer使用
  13. 越南大老二,游戏规则说明
  14. python提取图片中的数字_用Python-OpenCV从车牌图像中提取数字和字母
  15. 树莓派 PHP白屏,树莓派系统安装及3.5寸显示屏白屏解决办法
  16. Supermap机器学习功能实操
  17. 从-Quora-的-187-个问题中学习机器学习和NLP
  18. 国产ERP不如洋品牌但适合国能中小药企(转)
  19. 网络中国象棋对战中象棋的规则以及棋盘、棋子的Java源码
  20. 妙赞大讲糖:糖尿病患者做完手术管多久

热门文章

  1. 洛谷U4727小L的二叉树[树转序列 LIS]
  2. Win7 64位系统XMind环境配置
  3. easyui的Pagination单独使用
  4. ArcGIS问题小记
  5. golang strings Replace 字符串替换
  6. linux rpm包解压到当前目录
  7. Rundll32.exe文件详解(显示我的电脑 取消自动登录)
  8. 常见的端口扫描类型及原理
  9. Windows8系统服务终极优化
  10. 对 jiffies 溢出、回绕及 time_after 宏的理解