wordpress - 在 WooCommerce 中手动创建订单时,将创建日期添加到订单号
问题描述
我使用以下代码来修改 WooCommerce 中的订单号。
add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number', 1, 2);
function change_woocommerce_order_number( $order_id, $order ) {
$prefix = '160-';
// you will need to get your city as a variable to pass in to priffix
$order = wc_get_order( $order_id );
$order_date = $order->get_date_created();
$date_created = $order_date->date( 'Ymd' );
// You can use either one of $order->id (or) $order_id
// Both will wor
return $prefix . $order->id . '-'.$date_created;
}
此代码在结帐过程中有效,但是当我在 WooCommerce 后端手动创建订单时出现这样的错误。
我怎样才能防止这种情况?
解决方案
您的代码包含一些错误
- 使用
$order = wc_get_order( $order_id );
不是必需的,因为$order
已经传递给函数 $order->id
自 WooCommerce 3 (2017) 以来已被替换为$order->get_id()
$order->get_id()
但是,此答案不需要使用/替换,因为这也传递给函数- 下单时不会出现该错误,但是当您想在后端创建新订单时会出现该错误(您就是这种情况)。仅仅因为订单尚未创建,并且该值尚不存在
所以你得到
function filter_woocommerce_order_number( $order_number, $order ) {
// Prefix
$prefix = '160-';
// Is null
if ( is_null( $order->get_date_created() ) ) {
$order->set_date_created( new WC_DateTime() );
}
// Get date created
$date_created = $order->get_date_created()->date( 'Ymd' );
return $prefix . $order_number . '-' . $date_created;
}
add_filter( 'woocommerce_order_number', 'filter_woocommerce_order_number', 10, 2 );
推荐阅读
- c++ - 如何在 2D 中绘制/变形 QImage?
- python - 如何将 __str__ 方法应用于抽象超类的子类
- php - Mongodb 之类的带有两个字段的查询不起作用(使用 php)
- python - 在 python 中使用 SVM 进行机器学习的分类报告测试集错误
- excel - 是否有一个excel公式可以从一串文本中删除最后一个句号及其后面的文本
- sql-server - 我想在 sql-server 中获取所有表级用户角色和权限
- sapui5 - SAPUI5 将表绑定从 ODataModel 更改为 JSONModel
- angular - 如何使用 *ngIf 隐藏和显示内容
- excel - 几乎冻结我的程序的 for 循环语句的问题
- keras - CuDNN LSTM 超参数调整:Input_h 形状错误