Добавление имени и фамилии в уведомление по электронной почте о новой учетной записи в Woocommerce

Моя конкретная проблема заключается в добавлении имени и фамилии в адрес электронной почты новой учетной записи Клиента, и я пробовал различные способы сделать это. В конце концов, я остановился на Кодексе, поскольку данные регистрации woocommerce сохраняются как учетные записи пользователей. Кажется, проблема в том, что Woocommerce отправляет электронное письмо новому клиенту до того, как пользователь войдет в систему — хотя я мог что-то здесь упустить? Это последний использованный метод, но он дает 0 в идентификаторе пользователя, по сути пользователь не вошел в систему, отсюда мой предыдущий комментарий. Вот код, который я использую, объединенный с шаблоном woocommerce по умолчанию …

        if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}

?>
<?php do_action( 'woocommerce_email_header', $email_heading, $email ); ?>

<?php
$current_user = wp_get_current_user();
/**
* Get current logged in user detail from codex
*/
echo 'Username: ' . $current_user->user_login . '<br />';
echo 'User email: ' . $current_user->user_email . '<br />';
echo 'User first name: ' . $current_user->user_firstname . '<br />';
echo 'User last name: ' . $current_user->user_lastname . '<br />';
echo 'User display name: ' . $current_user->display_name . '<br />';
echo 'User ID: ' . $current_user->ID . '<br />';
?>

<!--<img src = "image-name" style="margin-right:0px;">-->
<h3 style="text-align:center;" ><?php echo 'Hi '. $current_user->user_firstname . ', welcome to.'; ?></h3>
<p style="text-align:center;" >Thanks for signing up to our online service.</p>
<h4 style="text-align:center; color:#289b38; ">Getting in touch  with us.</h4>
<p style="text-align:center;"><?php printf( __( 'Contact us by phone on: %1$s, or by email to %2$s'), '<strong style="color:#289b38;">0999 999 999</strong>', '<strong><a href="mailto:someone@something.com">someone@something.com</a></strong>' ); ?></h4>
<h4 style="text-align:center; color:#2f51a8;">Your account details.</h4>

<p style="text-align:center;" ><?php printf( __( 'Thanks for creating an account on %1$s. Your username is %2$s', 'woocommerce' ), esc_html( $blogname ), '<strong>' . esc_html( $user_login ) . '</strong>' ); ?></p>

<?php if ( 'yes' === get_option( 'woocommerce_registration_generate_password' ) && $password_generated ) : ?>

<p style="text-align:center;" ><?php printf( __( 'Your password has been automatically generated: %s', 'woocommerce' ), '<strong>' . esc_html( $user_pass ) . '</strong>' ); ?></p>

<?php endif; ?>

<p style="text-align:center;" ><?php printf( __( 'You can access your account area to view your orders and change your password here: %s.', 'woocommerce' ), make_clickable( esc_url( wc_get_page_permalink( 'myaccount' ) ) ) ); ?></p>

<p style="text-align:center;" >Best wishes<p>
<p style="text-align:center;" >Company name</p>
<br>
<?php do_action( 'woocommerce_email_footer', $email );

Результат — «Привет, добро пожаловать …», пропустив имя. Есть что-то, что я пропустил здесь, или мне нужно захватить переменную POST — POST [billing_first_name]?

Помощь будет очень ценится.

боб

1

Решение

Вы не можете получить текущего пользователя, так как это не интерфейсный хук. Вместо этого как переменная $user_login определяется в этом шаблоне, вы можете использовать его, чтобы получить WP_User замена объекта:

$current_user = wp_get_current_user();

от:

$current_user = get_user_by('login', $user_login );

Проверено и работает на emails/customer-new-account.php файл шаблона. Так что теперь вы сможете отобразить имя и фамилию, если они существуют как метаданные пользователя, со следующим кодом для вставки в этот шаблон:

<?php $user = get_user_by('login', $user_login ); ?>
<p><?php
_e('First name'); ?>: <?php echo $user->first_name; ?><br />
_e('First name'); ?>: <?php echo $user->last_name;
?></p>
3

Другие решения

Других решений пока нет …