【问题标题】:How to add new account info on order completed email template in WooCommerce如何在 WooCommerce 中在订单完成的电子邮件模板上添加新帐户信息
【发布时间】:2020-06-18 23:36:16
【问题描述】:

我正在尝试减少在我的一个 WooCommerce 网站上每个订单发送的电子邮件数量。

现在,客户收到电子邮件

  • 已创建新帐户(除非他们之前有一个)
  • 订单已收到
  • 订单暂停
  • 订单已完成。

我已经核对了暂停订单并收到了 emalls,所以我从四个变成了两个。


我想在 Order Completed 电子邮件中显示帐户登录信息,这样我也可以省去发送 Account Created 电子邮件,但是当我刚刚将代码从 customer-new-account.php 电子邮件模板复制到 customer-completed-order.php 电子邮件时,同时列出用户名和密码的占位符变成空白,这很奇怪。

这是我粘贴到子主题的 WooCommerce 文件夹中的代码:

<?php /* translators: %s Customer username */ ?>
<p><?php printf( esc_html__( 'Hi %s,', 'woocommerce' ), esc_html( $user_login ) ); ?></p>
<?php /* translators: %1$s: Site title, %2$s: Username, %3$s: My account link */ ?>
<p><?php printf( __( 'Thanks for creating an account on %1$s. Your username is %2$s. You can access your account area to view orders, change your password, and more at: %3$s', 'woocommerce' ), esc_html( $blogname ), '<strong>' . esc_html( $user_login ) . '</strong>', make_clickable( esc_url( wc_get_page_permalink( 'myaccount' ) ) ) ); ?></p><?php // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped ?>

<?php if ( 'yes' === get_option( 'woocommerce_registration_generate_password' ) && $password_generated ) : ?>
    <?php /* translators: %s Auto generated password */ ?>
    <p><?php printf( esc_html__( 'Your password has been automatically generated: %s', 'woocommerce' ), '<strong>' . esc_html( $user_pass ) . '</strong>' ); ?></p>
<?php endif; ?>

【问题讨论】:

  • 1) 我想这个数据应该只添加一次(仅限客户下的第一个订单)? 2) 另外请记住,访客用户不会在订单期间创建帐户(当然,除非您的网站上没有该选项)
  • 请注意,出于安全原因,您将无法在收到订单的页面上获取和显示密码……
  • LoicTheAztec,我不希望它出现在已收到的订单页面上。只有电子邮件。
  • @AdamBell 我认为 Loic 是这个意思,但只是打错了。订购页面或订购完整的电子邮件...归结为同一件事,您可以在我的回答中阅读。创建帐户并发送新帐户电子邮件后,出于安全原因,密码会立即进行哈希处理并存储在数据库中。这就是为什么您之后无法读取未散列的密码的原因。
  • 然后在这个过程中创建帐户太快了。首次付款,并且仅在成功付款后,创建帐户,将订单添加到帐户,然后发送 1 封包含凭据和订单确认的电子邮件。如果是回头客,请跳过帐户创建,只需发送订单确认电子邮件即可。那么在订单被添加到数据库之前,我们可以使用一个钩子在订单完成状态下创建一个帐户吗?

标签: php wordpress templates woocommerce email-notifications


【解决方案1】:

问题是点击“确认订单”按钮后会立即创建一个新帐户。用户会收到带有用户名和密码的“您的帐户已创建”,并且密码以加密形式写入数据库。

“已完成订单”的消息将在很久以后发送。这封信不能再从数据库中得到密码,因为它是加密的。因此,在第二个字母的模板中插入带密码的变量是没有用的。

这是某种愚蠢的美国制度。实际上,您必须向用户发送 2 封信,他可能会在其中感到困惑,然后我们资源管理员将收到索赔,或者我们将坚持向客户解释如何进入帐户。

如果是正常的人类系统,在完成订单的那一刻就会创建一个新帐户(嗯,这是合乎逻辑的!付款的人为他创建了一个帐户)。而当提前创建账户时,在过渡到支付的阶段,这就是开发人员创建的那种系统。一个人刚把卡号输入支付系统,他就有这样一封信——“这是你的用户名-密码!进来吧!”上哪儿来!?您还没有付款!

【讨论】:

  • 我绝对同意这种流程是由不以人类逻辑方式思考的人制作的。应该是这样的:将产品放入购物车。去结账。选择支付网关,支付。然后在付款后,创建用户帐户,在数据库中插入凭据,添加订单并发送 1 封电子邮件,其中包含登录凭据以及订单确认和/或下载链接(如果它是可下载的产品)。如果是回头客,请跳过创建帐户并在付款后发送订单确认。对这种愚蠢的思维/处理方式有什么明智的解决方案来让它正确吗?
猜你喜欢
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2019-08-05
相关资源
最近更新 更多