【发布时间】: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