当前位置: 首页 > 知识库问答 >
问题:

Woocommerce:所有新完成的订单都被搁置(特别是COD),并且只发送一封搁置邮件作为标准确认

蒋星驰
2023-03-14

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

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

我想创建一个工作流,它类似于其他流行的日本EC网站(乐天karamishop,Yahoo!Auctions,等等)。在日本没有自动完成,它是如此专注于服务,这是疯狂的,所有的事情都必须经过细致的检查和确认。如果你好奇的话,日本的标准流程是:客户下订单->客户得到全面的确认电子邮件->我们检查以确保费用是正确的,并且订单是我们可以填写和处理的->我们发送一个带有特定日期和时间的处理订单等->我们打包和填写订单,然后发送一个带有跟踪代码的“已发货”消息。

反正我发现了这个:

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

从这里开始。以及沿着这个主题的许多变体。这让我走了一半。但这些电子邮件仍在触发处理(无论如何,对于贝宝和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 );

目前,我们有三种支付方式:贝宝、日本银行转帐和COD。我希望所有这些付款方式返回与on-hold消息,我们将使用“自动确认”消息。它们在系统中的状态也应该是“保留”。然后我们可以把他们转移到处理,然后我们就可以顺利地处理所有的事情。

所以,总而言之,我猜需要:1。从所有网关中取消挂起所有订单状态。2.所有已完成的新订单默认为“搁置”3。这应该会让“在线”的电子邮件触发,一举两得。

我似乎只是设法将状态从订单处理和触发器完成后的状态改变为“ON-HOLD”(与官方插件看起来一样),这只是在后端帮助我们。

旁白:如果他们真的想让Woocommerce在这里竞争,他们真的应该把它包括在免费的日本Woocommerce插件中,但是这个社区很慢,当我问一个问题时,他们只是给我支付一个定制插件。

谢谢!

共有1个答案

冯澄邈
2023-03-14

编辑我想出来了!我刚找到这个页面,有电子邮件的解钩代码。用这个新的电子邮件触发器解除和重新挂钩。下面是代码,以防有人需要:

/**
 * 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' ) );
}
 类似资料:
  • 我的Wordpress安装有问题,更具体的说是WooCommerce。 我在过去几个月中一直在工作的客户希望,每次客户完成/支付订单时,除了标准的订单确认电子邮件外,还会向他的电子邮件地址发送一封自定义电子邮件。 简而言之:我需要在订单完成时给客户发送一封自定义邮件。如何在functions.php中做到这一点? 我尝试使用官方文档中描述的各种钩子和函数,但无法弄明白。 Wordpress的版本是

  • PhpStorm 2018.2中是否可以搁置未跟踪/新文件? 这似乎不是,但我找不到一个明确的答案,这个支持问题似乎表明,至少在过去是可能的。

  • 问题内容: 我想从这里使用以下代码: 如何在当前python会话中保存所有变量? 但是它给出了以下错误: 你能帮我吗? 谢谢! 问题答案: 从您的追溯来看,您似乎正在尝试从函数内部运行该代码。 但是在 当前本地范围内 查找名称。因此,如果在函数内部定义,它将在中而不是中。 您可能想要这样的东西: 请注意,当从函数 内部 调用时,它将从 定义 函数的模块返回变量,而不是从其 调用的位置返回 。 因此

  • 我尝试保存“统一差异”,但找不到应用它的方法。 补丁适用于提交的更改,我不希望在没有适当代码审查的情况下提交。 点子赞赏!

  • 我正在尝试取消/删除在订单发货后将订单状态保存为“已完成”时发送的自动客户电子邮件。 不想发送自动电子邮件的原因是,我在电子邮件模板文件(override)/woocommerce/email/customer-completed-order.php中添加了一个代码,它将在发送给客户的电子邮件中显示在admin中创建的新订单注释,如果我们添加订单注释并保存它,然后将订单状态更改为completed

  • 我在我的木业商店里遇到了一个很奇怪的问题。有几天“Customer_Processing_Order”电子邮件不再发送给客户。即使我在订单详细信息中触发手动发送此电子邮件,也没有发生任何事情。 在一般电子邮件中,发送与SMTP数据一起工作。当我将状态设置为“已完成”时,电子邮件将被发送。只有订单确认不起作用。 电子邮件被激活,我也检查了错误日志。我还安装了订单电子邮件的预览插件。当我想生成预览时,