方案一: 修改主题下的 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;
}

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

在 WordPress 的 wp-config.php 文件中添加以下代码:

define('WP_MEMORY_LIMIT', '256M');

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

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

方案二: 安装插件

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