Woocommerce:所有新完成的订单暂停(特别是COD)并仅发送一个暂停电子邮件作为标准确认

问题描述 投票:2回答:1

我在日本生活和工作。我们有一家资源有限的牡蛎小公司,我自己正在做所有的编程,但我的知识和技能有限。第一次发帖,抱歉,如果这不是一个好问题,或者我犯了错误......提前谢谢。

我使用的是最新的Woocommerce 3.2.3。我还使用了一些插件,包括一个电子邮件控件,一个用于感谢和确认银行(furikomi)付款的自定义电子邮件,以及用于日本的WooCommerce插件。

我想创建一个类似于其他流行的日本EC网站(rakuten karamishop,yahoo!拍卖等)的工作流程。在日本没有自动完成,它的服务集中在疯狂,一切都必须仔细检查和确认。如果你很好奇,日本的标准流程是:客户订单 - >客户获得一揽子确认电子邮件 - >我们检查以确保费用是正确的,订单是我们可以填写和处理的 - >我们发送具有特定交货日期和时间的处理订单等。 - >我们打包并填写订单,然后发送带有跟踪代码的“已发货”消息。

无论如何我发现了这个:

add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) {
    global $woocommerce;
     if ( !$order_id )
        return;
    $order = new WC_Order( $order_id );
    $order->update_status( 'on-hold' );
}

来自here。和许多variations along this theme。这让我走了一半。但电子邮件仍在触发处理(无论如何,对于PayPal和COD)。

我也知道COD订单的电子邮件似乎在这里挂钩:

add_filter( 'woocommerce_payment_complete_order_status', array( $this, 'change_payment_complete_order_status' ), 10, 3 );

在“class-wc-gateway-cod.php”文件中。而这些触发器将导致我不想要的电子邮件,即“处理”电子邮件。

// Triggers for this email
add_action( 'woocommerce_order_status_failed_to_processing_notification', array( $this, 'trigger' ), 10, 2 );
add_action( 'woocommerce_order_status_on-hold_to_processing_notification', array( $this, 'trigger' ), 10, 2 );
add_action( 'woocommerce_order_status_pending_to_processing_notification', array( $this, 'trigger' ), 10, 2 );

现在我们有三种付款方式:Paypal,Furikomi(日本银行转账)和COD。我希望所有这些付款方式都与保留消息一起返回,我们将其用作“自动确认”消息。它们在系统中的状态也应该“暂停”。然后我们可以将它们移动到处理中,之后我们可以顺利处理所有事情。

所以,总之,我想需要:1。从所有网关解开所有order statuses。 2.所有已完成的新订单都默认为“暂停”3.这应该使“持续”电子邮件触发,一举两得。

我似乎只是设法改变了状态,从订单处理和触发器完成后的状态改变为“暂停”(same as the official plugin it seems),这只能帮助我们在后端。

SIDE注意:他们真的应该把它包含在免费的Woocommerce for Japan插件中,如果他们真的想要Woocommerce在这里竞争,但是这个社区很慢,当我问他们刚刚为我提供支付自定义插件的问题时。

谢谢!

php wordpress email woocommerce event-triggers
1个回答
0
投票

编辑我想通了!我刚刚找到这个页面,带有电子邮件的解锁代码。使用这个新的电子邮件触发器解锁并重新连接。这是代码,以防任何人需要它:

/**
 * All orders that would normally go from pending to processing go from pending to on-hold
 */ 

add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_onhold_order' );

function custom_woocommerce_auto_onhold_order( $order_id ) {
    global $woocommerce;
     if ( !$order_id )
        return;
    $order = new WC_Order( $order_id );
    $order->update_status( 'on-hold' ); //All new orders go to "on-hold"
}

add_action( 'woocommerce_email', 'unhook_new_order_processing_emails' );

function unhook_new_order_processing_emails( $email_class ) {
        // Turn off pending to processing for now
        remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );
        // Turn it back on but send the on-hold email
        add_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_On_Hold_Order'], 'trigger' ) );
}
© www.soinside.com 2019 - 2024. All rights reserved.