Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Woocommerce:所有新完成的订单将被暂停(特别是COD),并仅发送一封暂停电子邮件作为标准确认_Php_Wordpress_Email_Woocommerce_Event Triggers - Fatal编程技术网

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

Php Woocommerce:所有新完成的订单将被暂停(特别是COD),并仅发送一封暂停电子邮件作为标准确认,php,wordpress,email,woocommerce,event-triggers,Php,Wordpress,Email,Woocommerce,Event Triggers,我在日本生活和工作。我们有一个资源有限的小牡蛎公司,我自己做所有的编程,但我的知识和技能有限。第一次发布,如果这不是一个好问题或者我犯了一个错误,很抱歉…提前谢谢 我正在使用最新的Woocommerce 3.2.3。我还使用了一些插件,包括一个电子邮件控制插件、一个用于感谢和确认银行(furikomi)付款的自定义电子邮件,以及WooCommerce for Japan插件 我想创建一个工作流程,它类似于其他流行的日本电子商务网站(乐天卡拉米肖普,雅虎拍卖等)。在日本没有自动完成,它是如此专注于

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

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

我想创建一个工作流程,它类似于其他流行的日本电子商务网站(乐天卡拉米肖普,雅虎拍卖等)。在日本没有自动完成,它是如此专注于服务,这是疯狂的,一切都必须仔细检查和确认。如果您好奇,日本标准流程是: 客户下单-> 客户收到全面确认电子邮件-> 我们检查以确保费用正确,并且订单是我们可以填写和处理的-> 我们发送带有特定交货日期和时间的加工订单,等等->我们打包并填写订单,然后发送带有跟踪代码的“已发货”消息

反正 我发现:

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' );
}
从。而且很多。这让我半途而废。但这些电子邮件仍在触发处理(无论如何,对于PayPal和COD而言)

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

add_filter( 'woocommerce_payment_complete_order_status', array( $this, 'change_payment_complete_order_status' ), 10, 3 );
在“class wc gateway cod.php”文件中。这些触发器将产生我不想要的电子邮件,即“正在处理”的电子邮件

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

总之,我想我们需要: 1.从所有网关上取消所有连接。 2.是否所有已完成的新订单都默认为“保留” 3.这将使“暂停”电子邮件触发,一举两得

我似乎只是设法将订单处理和触发器完成后的状态从原来的状态更改为“保留”(),这只在后端对我们有帮助

旁注:如果他们真的想让Woocommerce在这里竞争,他们真的应该把这个包含在免费的Woocommerce for Japan插件中,但是这个社区太慢了,当我问一个问题时,他们只是让我为自定义插件付费


谢谢大家!

编辑我想出来了!我刚找到这个页面,上面有电子邮件的解锁码。使用此新的电子邮件触发器取消和重新锁定。以下是代码,以防任何人需要它:

/**
 * 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' ) );
}

你的解决方案对我有效。你应该把它贴出来作为你问题的答案。
/**
 * 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' ) );
}