将用户元值添加到Wordpress管理员电子邮件中

时间:2016-10-04 03:18:27

标签: php wordpress email

当新用户在我们的网站上注册时,他们需要填写他们的公司信息。此信息与meta_key'公司'一起存储在_usermeta表中。

我想要做的就是将这些信息包含在Wordpress发送给网站管理员的通知邮件中。我有一些运气操纵pluggables.php(默认电子邮件代码所在的位置),但我无法在电子邮件中发送任何元值。

这是我目前的代码:

function wp_new_user_notification($user_id, $plaintext_pass = '') {
    $user = get_userdata( $user_id );
    $user_meta = get_user_meta( $user_id );
    $company = $user_meta['company'][0];

// The blogname option is escaped with esc_html on the way into the database in sanitize_option
// we want to reverse this for the plain text arena of emails.
$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

$message  = sprintf(__('New user registration on your site %s:'), $blogname) . "\r\n\r\n";
$message .= sprintf(__('Name: %s'), $user->display_name) . "\r\n\r\n";
$message .= sprintf(__('E-mail: %s'), $user->user_email) . "\r\n\r\n";
$message .= sprintf(__('Company: %s'), $company) . "\r\n";

@wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message);

代码输出:

您网站mywebsite上的新用户注册

名称:名字姓氏

电子邮件:email@example.com

公司:

我已经包含了get_user_meta()和get_metadata(),但该值始终为空。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我想出了这个问题。我用来创建新用户的插件(个人资料印刷机)是发布新用户,触发wp_new_user_notification,然后将自定义值添加到元表。我将元表函数移到了wp_new_user_notification之上,数据正按预期传输。如果其他人遇到这个问题,这里有解决方法:

在wp-includes / pluggable.php中,以下工作正常:

$company = get_user_meta( $user_id, 'company', true ); 
$message .= sprintf(__('Company: %s'), $company) . "\r\n";

至于个人资料新闻,请导航至wp-content / plugins / profilepress / classes / class-registration-form-auth.php并输入:

// register custom profile field
if ( ! is_wp_error($user_id)) {
.
//truncated
.
            do_action('pp_after_custom_field_update', $key, $value, $user_id, 'registration');
        }
    }

以上:

    if (is_int($user_id) && 'enable' == $new_user_notification) {
        wp_new_user_notification($user_id, null, 'admin');
    }

希望这可以帮助其他有类似问题的人。特别感谢@RaunakGupta指出我的方向,并感谢他们的代码。