如果选择的付款方式是COD,我想做一些更改.在我使用的现有WC_Order上
($order->payment_method_title == 'Cash On Delivery' ? ... : ... );
Run Code Online (Sandbox Code Playgroud)
检索标题.但我想检查id(cod),因为标题字符串被翻译成不同的语言,这不是一个很好的解决方案.
有没有办法在woocommerce中的WC_Order上检索id?
我需要在收到付款后自动更改已完成的订单状态,但前提是订单状态为"正在处理".我找到了片段,在每种情况下都会使订单状态完成,但是在成功付款更改后我的付款插件会返回数据并更改"处理"的订单状态.我想在成功后将其更改为"已完成",如果状态不是"处理",则不要更改它.我遇到的主要问题是我不知道如何获得收到的状态订单.
这是我的代码:
add_filter( 'woocommerce_thankyou', 'update_order_status', 10, 2 );
function update_order_status( $order_id ) {
$order = new WC_Order( $order_id );
$order_status = $order->get_status();
if ('processing' == $order_status) {
$order->update_status( 'completed' );
}
//return $order_status;
}
Run Code Online (Sandbox Code Playgroud)
我已经弄清楚了.这是工作代码:
add_filter( 'woocommerce_thankyou', 'update_order_status', 10, 1 );
function update_order_status( $order_id ) {
if ( !$order_id ){
return;
}
$order = new WC_Order( $order_id );
if ( 'processing' == $order->status) {
$order->update_status( 'completed' );
}
return;
}
Run Code Online (Sandbox Code Playgroud) 我目前在使用 WooCommerce 网站时遇到一些问题。有数千个旧订单停留在“处理中”状态。这些订单已收到付款,产品已发货。
我想将这些订单标记为完成,而不发送已完成的订单电子邮件。我想使用以下 SQL 查询来实现此目的。
update wp_posts set post_status = 'wc-completed' where post_type = 'shop_order' and post_status ='wc-processing' ;
Run Code Online (Sandbox Code Playgroud)
我还需要更改其他表吗?或者这可行吗?
谢谢
编辑:上面的代码对我来说非常有效。
感谢StackOverflow的所有开发人员.
我想在Woocommerce的Linked Product部分添加更多字段.这些字段应与Upsell/Crosssell类似.
我的代码到目前为止: -
add_action( 'woocommerce_product_options_linked_product_data', 'woocom_general_product_data_custom_field' );
woocommerce_wp_text_input(
array(
'id' => '_upsizing_products',
'label' => __( 'Upsizing Products', 'woocommerce' ),
'placeholder' => 'Upsizing Products',
'desc_tip' => 'true',
'description' => __( 'Select Products Here', 'woocommerce' )
)
);
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我需要组合框,例如,当您在输入框中键入3个字符时,它将显示可以选择的匹配产品列表.与Upsell/Cross Sell类似.
请任何人帮我实现此自定义字段.提前致谢.
编辑:有人吗?
创建woocommerce订单时,订单的状态为"正在处理".我需要将默认订单状态更改为"待定".
我怎样才能做到这一点?
在WooCommerce中,任何与BACS(直接银行转帐)相关的订单都设置为"on-hold".
如何自动将其更改为处理?
我不想在里面工作 functions.php
我有以下代码,但这不起作用:
add_filter( 'woocommerce_payment_complete_order_status', 'rfvc_update_order_status', 10, 2 );
function rfvc_update_order_status( $order_status, $order_id ) {
$order = new WC_Order( $order_id );
if ( 'on-hold' == $order_status && 'on-hold' == $order->status ) {
return 'processing';
}
return $order_status;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒!
我在 WooCommerce 上使用这个来自这个答案的代码来自动完成付费处理订单:
/**
* AUTO COMPLETE PAID ORDERS IN WOOCOMMERCE
*/
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 );
function custom_woocommerce_auto_complete_paid_order( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
// No updated status for orders delivered with Bank wire, Cash on delivery and Cheque payment methods.
if ( ( get_post_meta($order->id, '_payment_method', true) == 'bacs' ) || ( get_post_meta($order->id, '_payment_method', true) == 'cod' ) || ( get_post_meta($order->id, '_payment_method', true) == 'cheque' ) …Run Code Online (Sandbox Code Playgroud) 我需要通过检查"处理"状态而不是"暂停"状态来进行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;
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
谢谢.
我正在尝试对 Wordpress Woocommerce 进行编码,以便所有新订单都按订单状态标记为“完成”。该代码不起作用。我究竟做错了什么?
我将此添加到functions.php:
function autocomplete_orders() {
add_action('woocommerce_thankyou', 'autocomplete_all_orders');
/**
* sp_autocomplete_all_orders
*
* Register custom tabs Post Type
*
* @param int $order_id
*
* @return null
*/
function autocomplete_all_orders($order_id) {
global $woocommerce;
if (!$order_id)
return;
$order = new WC_Order($order_id);
$order->update_status('completed');
}
}
Run Code Online (Sandbox Code Playgroud)