最近测试WooCommerce,发现当有新用户注册时没有管理员通知,感觉这是个很实用的功能,不明白为什么没有。找了一些方案,发现下面这个可用。

在主题的functions.php中放如下代码

//New user notification to admin
// Woocommerce New Customer Admin Notification Email
add_action('woocommerce_created_customer', 'admin_email_on_registration');
function admin_email_on_registration( $customer_id ) {
    wp_new_user_notification( $customer_id );
}

邮件通知会发送到设置 » 常规 » 电子邮件地址中填写的Email。

代码来自:Woocommerce new registration not sending email to admin

该action在wc_create_new_customer()函数总调用,原型如下

do_action( 'woocommerce_created_customer', $customer_id, $new_customer_data, $password_generated );

$new_customer_data的数据类似下面这样

Array
(
    [user_login] => test3
    [user_pass] => 111111
    [user_email] => test3@email.com
    [role] => customer
)

如果想发送定制化的邮件,包含更多信息,可以自己用wp_mail()函数直接发邮件。

8条留言

  1. 你好
    那如果說我想要新註冊的會員
    導向一個歡迎註冊的頁面
    不知道該如何修改呢
    謝謝

      1. 你好 我嘗試了好幾次
        function wpse_19692_registration_redirect() {
        return home_url( ‘/my-page’ );
        }

        add_filter( ‘registration_redirect’, ‘wpse_19692_registration_redirect’ );

        不知道是不是我輸入錯誤
        程式碼中my-page,是要輸入什麼格式呢

        因為我隨便打了一個網址測試
        比如註冊完畢 會跳至google首頁
        我打return home_url( ‘http://www.google.com.tw’ );
        沒有作用

        我也是依據文章所寫 將程式碼加在主題的functions.php中

        1. 首先要确认你的函数是真的执行了,可以在函数里强制exit试试看。
          另外检查一下你的注册表单里是否有redirect_to这个字段,以及这个字段的的值是否是你写的那个,因为注册表单的源代码里有这么一段

          <input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />

          而$redirect_to是这么来的

          $redirect_to = apply_filters( 'registration_redirect', $registration_redirect );
          1. 你好
            那這樣的話
            是否要在$redirect_to = apply_filters( ‘registration_redirect’, $registration_redirect );
            更改registration_redirect’單引號內的字串 變為想要連結的網址就可以了

            另外我在我的註冊表單(/wp-content/plugins/woocommerce/templates/myaccount/form-login.php)
            中,並沒看看到<input type="hidden" name="redirect_to" value="” />

            實在不知道如何去修改
            謝謝

    1. 好吧,你没说清是在woocommerce里做重定向。woocommerce已经接管了注册重定向这个过程,因此更改wordpress注册重定向的代码不会管用。
      你可以看看我之前写的文章http://www.solagirl.net/woocommerce-login-register-redirect.html
      代码有没有用我不知道,因为woocommerce更新了好几版了,但思路大概就是那样。

      如果这个太麻烦,你可以直接在myaccount页面模板里加欢迎注册的内容。

  2. 我用了这个代码,成功了,不过内容里面的用户名和邮箱都为空。

    1. 貌似没有获取到user_id,这样改一下
      add_action(‘woocommerce_created_customer’, ‘admin_email_on_registration’);
      function admin_email_on_registration( $customer_id ) {
      wp_new_user_notification( $customer_id );
      }

评论功能已关闭