2017-10-12 148 views
0

在WordPress中,我有新用户的自定义注册网站。注册后,会有一个可选的复选框来订阅我们的通讯。据我了解,它增加了复选框的价值user_meta表(整个事情已由印度的一家公司编码,我非常希望不再涉及,因为他们延误了他们的工作时间和时间毕竟并没有做好工作)。WordPress的:在注册通知中输出自定义user_meta数据

在我的子主题的functions.php中相应的代码片段看起来是这样的:

<?php echo '<div class="form-row form-row-wide"> 
<input type="checkbox" name="inter_offers" value="yes"> '; _e('I would like to subscribe to the Kurth Electronic newsletter.','kurth-child'); echo '<br></div>'; 
return $fields; ?> 

add_action('woocommerce_created_customer','adding_extra_reg_fields');  
function adding_extra_reg_fields($user_id) { 
extract($_POST); 
update_user_meta($user_id, 'billing_inter_offers',$inter_offers); 
} ?> 

(我已经离开了线无关这个问题。)

现在,这个值在内部保存,但没有显示给我。我希望在用户完成注册时显示由WordPress生成的电子邮件或通知中的值,以便我们可以在有人选择订阅新闻通讯时手动将其添加到我们的新闻通讯列表中。问题是我对PHP只有有限的知识,我不知道从哪里开始。

我还应该注意,这不是通过标准的WorPress注册表单,而是通过WooCommerce注册表单(由于安全原因已禁用标准WordPress注册)。

我试图在新用户完成注册时使用“更好通知”插件(https://wordpress.org/plugins/bnfw/)进行自定义通知,但它会忽略任何添加到自定义通知主体以显示user_meta数据的php代码。

任何帮助,将不胜感激。

回答

0

由于注册是通过woocomerce完成的,您可能需要寻找一个可与woocomerce一起使用的通知PlugIN,您拥有的通知可能只适用于wordpress核心版本!

你也可以在函数中通过php生成一个邮件,这样你就可以得到一个带有用户邮件地址的消息,但是我认为没有php知识,使用内置的PHP邮件程序并不那么容易......(您可能需要一个API!)

但是,将它们自动签名到您的通讯软件不是更好吗?例如对于Mailchimp或其他类似的系统,有相当不错的WordPress插件!

您也可以在您的注册表格中包含这些插件的形式,但没有仔细看看这个woocomerce注册,我无法确定!

+0

我能够在通过插件生成的自定义通知中输出默认用户数据,所以它应该可以工作。我在插件中遇到的问题是它不接受自定义php代码来输出自定义user_meta字段的数据。 在function.php中生成邮件是一个好主意 - 你推荐某个教程或资源吗?如果这对我来说太复杂了,我仍然可以决定。 ;) 至于电子邮件软件,我们使用一个不真正与其他系统一起工作的软件。我们必须手动输入新数据。 –

+0

我改正了自己,它似乎很容易通过使用邮件功能...我重新编写了一个案例,我不得不生成一个html邮件,并且发现它可能会很复杂地设置邮件内容,所以我使用了一个小的api为我解析邮件...... 但是在这种情况下,您只需要用户邮件作为内容如果自定义字段被检查,所以它应该没有问题,看看这里: https://www.w3schools.com/php/func_mail_mail.asp 如果你遇到问题,只是谷歌“PHP邮件程序“,api可以帮助你,你会发现很多教程! – ToTaTaRi

0

我认为这样做会诀窍,它会在每次创建新用户时通知您,并且还会告诉您他们是否订阅了。

function new_customer_registered_send_email_admin($user_login, $user_email) { 
    ob_start(); 
    do_action('woocommerce_email_header', 'New customer registered'); 
    $email_header = ob_get_clean(); 
    ob_start(); 
    do_action('woocommerce_email_footer'); 
    $email_footer = ob_get_clean(); 

    $user = get_user_by('email', $user_email); 
    $subscribed = get_user_meta($user->ID, 'billing_inter_offers', true); 

    woocommerce_mail(
     get_bloginfo('admin_email'), 
     get_bloginfo('name').' - New customer registered', 
     $email_header.'<p>The user '.esc_html($user_login).' created an account ' . ($subscribed ? ' and subscribed to the newsletter.' : '.') . '<br>Email:'.esc_html($user_email).'</p>'.$email_footer 
    ); 
} 

add_action('new_customer_registered', 'new_customer_registered_send_email_admin', 10, 2); 
+0

谢谢你的代码!不幸的是,它似乎并没有在注册测试用户时执行。没有发送电子邮件并且调试日志文件不显示与这些代码行相关的错误。我将代码放在原始文章中提到的代码之后 - 也许我必须把它放在其他地方? –

+0

代码是否执行?在代码中嵌入一条日志语句以确保它正在执行error_log('代码正在执行');现在也注释掉旧的代码操作。 –

+0

我已经尝试添加代码,但它没有做任何事情(日志文件中没有新条目),或者由于语法错误而破坏了网站。我应该把它放在哪里? –