在Woocommerce中将名字和姓氏添加到新帐户电子邮件通知中

时间:2018-08-29 13:50:10

标签: php wordpress templates woocommerce customer

我的特殊问题是在客户新帐户电子邮件中添加名字和姓氏,并且我尝试了各种方法。最终,由于woocommerce注册详细信息保存为用户帐户,因此我最终查看了Codex。问题似乎是Woocommerce在用户登录之前发送了新客户电子邮件-尽管我可能在这里丢失了一些东西?这是最后尝试过的方法,但是它的用户ID生成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 );

结果-“嗨,欢迎光临。”缺少名字。在这里我错过了什么,还是我需要捕获POSTed变量-POST [billing_first_name]?

非常感谢您的帮助。

鲍勃

3 个答案:

答案 0 :(得分:3)

您不能获得当前用户,因为它不是前端挂钩。相反,由于在此模板中定义了变量// hopefully something like this.. "assets": [ "src/assets", "src/favicon.ico", "src/favicon.png", { "glob": "*-mock-data/**/*", "input": "src/app/**/*", "output": "/mock-assets" } ], ,您可以使用它来替换{​​{1}}对象:

$user_login

作者:

WP_User

经过测试,可以在$current_user = wp_get_current_user(); 模板文件上使用。因此,现在您将能够显示姓氏和名字,如果它们作为用户元数据存在,并在此模板中插入以下代码:

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

答案 1 :(得分:0)

以下方法对我有用

在主题functions.php中添加以下代码。

add_filter('pre_user_display_name','default_display_name');
function default_display_name($name) {
if ( isset( $_POST['billing_first_name'] ) ) {
$firstname = sanitize_text_field( $_POST['billing_first_name'] );
}
if ( isset( $_POST['billing_last_name'] ) ) {
$lastname = sanitize_text_field( $_POST['billing_last_name'] );
}
$name = $firstname . ' ' . $lastname;
return $name;
}

接下来,将以下代码添加到customer-new-account.php

$user       = get_user_by('login', $user_login);
<p><?php printf( esc_html__( '%s, Welcome to website!', 'woocommerce' ), esc_html( $user->display_name ) ); ?></p>

答案 2 :(得分:0)

我刚刚将其添加到customer-new-account.php中(在“ do_action(...)”行下),它对我有用:

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

// if you need the email address or something else
$email = $user->user_email;

// if you need an extra field from the user metas
$firstname = get_user_meta( $user->ID, 'billing_first_name' , true );
$lastname = get_user_meta( $user->ID, 'billing_last_name', true);

当然,您需要确保在创建帐户时将这些字段保存在正确的meta字段中。