将使用支票付款方式制作的订单状态更改为 "processing" 状态
Change orders status made with cheque payment method to "processing" status
我需要通过检查 "processing" 状态而不是 "on hold" 状态来进行 WooCommerce 推送付款。我尝试了下面的代码片段,但它似乎没有效果。
这是我的代码:
add_filter( 'woocommerce_payment_complete_order_status', 'sf_wc_autocomplete_paid_orders' );
function sf_wc_autocomplete_paid_orders( $order_status, $order_id ) {
$order = wc_get_order( $order_id );
if ($order->status == 'on-hold') {
return 'processing';
}
return $order_status;
}
我怎样才能做到这一点?
谢谢。
这是您在 woocommerce_thankyou
钩子中看到的函数:
add_action( 'woocommerce_thankyou', 'cheque_payment_method_order_status_to_processing', 10, 1 );
function cheque_payment_method_order_status_to_processing( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
// Updating order status to processing for orders delivered with Cheque payment methods.
if ( get_post_meta($order->id, '_payment_method', true) == 'cheque' )
$order->update_status( 'processing' );
}
此代码位于您的活动子主题(或主题)的 function.php 文件或任何插件文件中。
这已经过测试并且有效。
相关主题:
我不想使用 Thank You 过滤器,以防订单在上一步中仍设置为 On Hold ,然后在过滤器中将其更改为我想要的状态(在我的情况下为自定义状态,在您的情况下为 Processing)。所以我在检查网关中使用了过滤器:
add_filter( 'woocommerce_cheque_process_payment_order_status', 'myplugin_change_order_to_agent_processing', 10, 1 );
function myplugin_change_order_to_agent_processing($status){
return 'agent-processing';
}
我希望这可以帮助其他人知道还有另一种选择。
LoicTheAztec 的先前回答已过时,并提供有关直接在订单对象上访问对象字段的错误。
正确的代码应该是
add_action( 'woocommerce_thankyou', 'cheque_payment_method_order_status_to_processing', 10, 1 );
function cheque_payment_method_order_status_to_processing( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
// Updating order status to processing for orders delivered with Cheque payment methods.
if ( get_post_meta($order->get_id(), '_payment_method', true) == 'cheque' )
$order->update_status( 'processing' );
}
我需要通过检查 "processing" 状态而不是 "on hold" 状态来进行 WooCommerce 推送付款。我尝试了下面的代码片段,但它似乎没有效果。
这是我的代码:
add_filter( 'woocommerce_payment_complete_order_status', 'sf_wc_autocomplete_paid_orders' );
function sf_wc_autocomplete_paid_orders( $order_status, $order_id ) {
$order = wc_get_order( $order_id );
if ($order->status == 'on-hold') {
return 'processing';
}
return $order_status;
}
我怎样才能做到这一点?
谢谢。
这是您在 woocommerce_thankyou
钩子中看到的函数:
add_action( 'woocommerce_thankyou', 'cheque_payment_method_order_status_to_processing', 10, 1 );
function cheque_payment_method_order_status_to_processing( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
// Updating order status to processing for orders delivered with Cheque payment methods.
if ( get_post_meta($order->id, '_payment_method', true) == 'cheque' )
$order->update_status( 'processing' );
}
此代码位于您的活动子主题(或主题)的 function.php 文件或任何插件文件中。
这已经过测试并且有效。
相关主题:
我不想使用 Thank You 过滤器,以防订单在上一步中仍设置为 On Hold ,然后在过滤器中将其更改为我想要的状态(在我的情况下为自定义状态,在您的情况下为 Processing)。所以我在检查网关中使用了过滤器:
add_filter( 'woocommerce_cheque_process_payment_order_status', 'myplugin_change_order_to_agent_processing', 10, 1 );
function myplugin_change_order_to_agent_processing($status){
return 'agent-processing';
}
我希望这可以帮助其他人知道还有另一种选择。
LoicTheAztec 的先前回答已过时,并提供有关直接在订单对象上访问对象字段的错误。
正确的代码应该是
add_action( 'woocommerce_thankyou', 'cheque_payment_method_order_status_to_processing', 10, 1 );
function cheque_payment_method_order_status_to_processing( $order_id ) {
if ( ! $order_id )
return;
$order = wc_get_order( $order_id );
// Updating order status to processing for orders delivered with Cheque payment methods.
if ( get_post_meta($order->get_id(), '_payment_method', true) == 'cheque' )
$order->update_status( 'processing' );
}