Как добавить информацию о новой учетной записи в шаблон электронного письма с готовым заказом в WooCommerce - PullRequest
1 голос
/ 19 июня 2020

Я пытаюсь уменьшить количество писем, отправляемых за заказ на одном из моих сайтов WooCommerce.

Прямо сейчас клиенты получают электронные письма для

  • Создана новая учетная запись (если у них раньше был один)
  • Заказ получен
  • Заказ отложен
  • Заказ завершен.

Я проверил отложенный заказ и Полученные электронные письма, поэтому у меня осталось от четырех до двух.


Я хочу отображать информацию для входа в учетную запись в электронном письме о завершении заказа, чтобы я также мог отказаться от отправки электронного письма о создании учетной записи, но когда я просто скопировал код из шаблона электронной почты 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 Ответ

0 голосов
/ 19 июня 2020

Приведенный ниже код учитывает

  • Только при самом первом заказе, который делает клиент.
  • Гостевые пользователи, которые не создают учетную запись во время заказа (если только этот вариант не конечно, недоступно на вашем веб-сайте)
  • Часть пароля отсутствует, см. комментарий от LoicTheAztec
    • «Обратите внимание, что вы не сможете получить и отобразить пароль в письме с полным заказом. , по соображениям безопасности… ".

Добавьте этот код в строку 26

<?php
// Get user id
$user_id = $order->get_customer_id();

// User id is found
if ( $user_id > 0 ) {
    // Get the total orders by a customer.
    $customer_order_count = wc_get_customer_order_count( $user_id );

    // First order
    if ( $customer_order_count == 1 ) {
        // Get user data
        $user_data = get_userdata( $user_id );

        // User login
        $user_login = $user_data->user_login;

        // Get blogname
        $blogname = $email->get_blogname();
        ?>
        <?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( esc_html__( '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' ) ) ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></p>
        <?php
    }
}
?>

https://github.com/woocommerce/woocommerce/blob/4.1.0/templates/emails/customer-completed-order.php

  • Этот шаблон можно переопределить, скопировав его в yourtheme/woocommerce/emails/customer-completed-order.php.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...