在 WooCommerce 中手动创建订单时,将创建日期添加到订单号
Issue adding date created to order number when creating order manually in 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_date = $order->get_date_created();
$date_created = $order_date->date( 'Ymd' );
至
$date_created = $order->get_date_created()->date('Ymd');
您的代码有一些错误
- 不需要使用
$order = wc_get_order( $order_id );
,因为 $order
已经传递给函数
$order->id
自 WooCommerce 3 (2017) 以来已被替换为 $order->get_id()
- 但是,此答案不需要 using/replacing
$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 );
我使用下面的代码修改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_date = $order->get_date_created();
$date_created = $order_date->date( 'Ymd' );
至
$date_created = $order->get_date_created()->date('Ymd');
您的代码有一些错误
- 不需要使用
$order = wc_get_order( $order_id );
,因为$order
已经传递给函数 $order->id
自 WooCommerce 3 (2017) 以来已被替换为$order->get_id()
- 但是,此答案不需要 using/replacing
$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 );