修改WooCommerce订单号自定义规则

WooCommerce 订单号的规则是默认的,但是当我们需要一套自己的订单号规则时。有三种选择:
一是修改主题下的 functions.php 文件,编辑自定义订单号规则;
二是使用插件, 去插件市场寻找免费的插件;
三是自己开发一款自定义订单号插件。
就三种方案而言我认为选前两种方案比较好,自己开发插件需要花时间弄,如果你有大量时间我认为第三种方案比较好。今天我们只讲第前两中方案。

方案一: 修改主题下的 functions.php 文件
我想将订单号按照“DD_+ 日期(20230508)+ 序号(001)”的规则生成:

 
add_filter('woocommerce_order_number', 'custom_order_number', 1, 2);
 
function custom_order_number($order_id, $order) {
    // 检查订单是否已有自定义订单号
    $order_number = $order->get_order_number();
    if(strpos($order_number, 'DD_') !== false) {return $order_number;}
 
    global $wpdb;
 
    // 获取今天的订单数量
    $current_date = date('Ymd');
    $count = $wpdb->get_var($wpdb->prepare("
            SELECT COUNT(*) FROM {$wpdb->prefix}woocommerce_orders
            WHERE DATE(order_date) = %s
        ", $current_date)
    );
 
    // 设置订单号
    $order_number = 'DD_'.$current_date.'_'.sprintf('%03d', $count + 1);
 
    // 释放内存
    unset($wpdb);
    unset($current_date);
    unset($count);
 
    return $order_number;
}
 

这个代码会在现有的订单编号前面加上“DD_”前缀,并且在日期后面加上三位序号,如“DD_20230508_001”。如果已经有自定义订单号,则直接返回现有的订单号。

如果保存代码后报:Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 262144 bytes) in X:\XXXXX\XXXX\wp-content\plugins\woocommerce\includes\class-wc-order.php on line 504
说明这个错误一般是因为脚本使用的内存超出了 PHP 所允许的最大内存限制。你可以尝试增加 PHP 的内存限制来解决这个问题。

通过以下两种方法来增加 PHP 的内存限制:

  1. 在 WordPress 的 wp-config.php 文件中添加以下代码:
     
    define('WP_MEMORY_LIMIT', '256M');
     
    

    这将把 WordPress 的内存限制增加到 256MB。

  2. 在 PHP.ini 文件中修改 memory_limit 指令:
  3. 找到 PHP.ini 文件中的 memory_limit 指令并将其设置为 256M

    方案二: 安装插件
    目前好多插件都有免费的功能,如果想更多的功能一般就都要付费了。不过有的插件,免费的模块也够我们使用了。
    我推荐一款免费的自定义订单号插件:Sequential Order Numbers for WooCommerce

     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值