在 Contact Form 7 中加载 Ultimate Member 动态电子邮件发送电子邮件
Load Ultimate Member dynamic email in Contact Form 7 send email
我正在使用 Ultimate Member 插件,我需要 CF7 加载 public 成员配置文件中每个用户的电子邮件以供发送。
在这里,我保留了我使用过的代码,但它只适用于我以字符串格式 $dynamic_email = 'mail@mail.com';
而不是 $dynamic_email = $value;
的电子邮件
如何让以下动态代码为我工作?
function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {
$form_id = $contact_form->id();
if($form_id == 799 ){
$valor = get_the_author_meta('user_email', um_profile_id()); // um_profile_id() - Profile ID in the Ultimate Member plugin
$dynamic_email = $valor;
$properties = $contact_form->get_properties();
$properties['mail']['recipient'] = $dynamic_email;
$contact_form->set_properties($properties);
return $contact_form;
}
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );
我需要加载 get_the_author_meta('user_email', um_profile_id())
的值,以便在每个 public 配置文件中上传邮件。
非常感谢您的帮助。
总结一下这个功能如果有效,它设法更改发送电子邮件并发送表单:
function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {
$form_id = $contact_form->id();
if($form_id == 799 ){
$dynamic_email = 'mail@mail.com';
$properties = $contact_form->get_properties();
$properties['mail']['recipient'] = $dynamic_email;
$contact_form->set_properties($properties);
return $contact_form;
}
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );
我需要的另一台机器无法正常工作,也无法发送显示错误“尝试发送您的消息时发生错误。请稍后重试。”的邮件。我不明白或不知道如果我只做一个小的改变它就不起作用的原因,它也 returns 一封电子邮件:
function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {
$form_id = $contact_form->id();
if($form_id == 799 ){
$valor = get_the_author_meta('user_email', um_profile_id()); // um_profile_id() - Profile ID in the Ultimate Member plugin
$dynamic_email = $valor;
$properties = $contact_form->get_properties();
$properties['mail']['recipient'] = $dynamic_email;
$contact_form->set_properties($properties);
return $contact_form;
}
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );
感谢您的帮助。
要将 um_profile_id()
传递给表单数据,您需要将其添加到表单中(如我自己和@cbroe 的评论所述)。为此,您需要使用 javascript 将其传递给隐藏的表单字段,或者简单地创建一个自定义表单标签。下面使用自定义表单标签。
将 [um_profile_id]
添加到您的表单中,下面的功能将起作用。
此外,由于 wpcf7_before_send_mail 是一个动作挂钩,您不必 return 任何东西,$contact_form 对象通过引用传递并在您设置 属性.
function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {
if ( $submission && 799 === $contact_form->id() ) {
$posted_data = $submission->get_posted_data();
if ( isset( $posted_data['um-profile-id'] ) ) {
$user = get_user_by( 'id', absint( $posted_data['um-profile-id'] ) );
$properties = $contact_form->get_properties();
$properties['mail']['recipient'] = $user->user_email;
$contact_form->set_properties( $properties );
}
}
}
add_action( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );
add_action( 'wpcf7_init', 'um_profile_id_form_tag' );
function um_profile_id_form_tag() {
wpcf7_add_form_tag( 'um_profile_id', 'cf7_get_um_profile_id' );
}
function cf7_get_um_profile_id() {
$output = sprintf( '<input type="hidden" name="um-profile-id" value="%s"/>', um_profile_id() );
return $output;
}
此方法已经过测试,有效。
我正在使用 Ultimate Member 插件,我需要 CF7 加载 public 成员配置文件中每个用户的电子邮件以供发送。
在这里,我保留了我使用过的代码,但它只适用于我以字符串格式 $dynamic_email = 'mail@mail.com';
而不是 $dynamic_email = $value;
的电子邮件
如何让以下动态代码为我工作?
function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {
$form_id = $contact_form->id();
if($form_id == 799 ){
$valor = get_the_author_meta('user_email', um_profile_id()); // um_profile_id() - Profile ID in the Ultimate Member plugin
$dynamic_email = $valor;
$properties = $contact_form->get_properties();
$properties['mail']['recipient'] = $dynamic_email;
$contact_form->set_properties($properties);
return $contact_form;
}
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );
我需要加载 get_the_author_meta('user_email', um_profile_id())
的值,以便在每个 public 配置文件中上传邮件。
非常感谢您的帮助。
总结一下这个功能如果有效,它设法更改发送电子邮件并发送表单:
function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {
$form_id = $contact_form->id();
if($form_id == 799 ){
$dynamic_email = 'mail@mail.com';
$properties = $contact_form->get_properties();
$properties['mail']['recipient'] = $dynamic_email;
$contact_form->set_properties($properties);
return $contact_form;
}
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );
我需要的另一台机器无法正常工作,也无法发送显示错误“尝试发送您的消息时发生错误。请稍后重试。”的邮件。我不明白或不知道如果我只做一个小的改变它就不起作用的原因,它也 returns 一封电子邮件:
function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {
$form_id = $contact_form->id();
if($form_id == 799 ){
$valor = get_the_author_meta('user_email', um_profile_id()); // um_profile_id() - Profile ID in the Ultimate Member plugin
$dynamic_email = $valor;
$properties = $contact_form->get_properties();
$properties['mail']['recipient'] = $dynamic_email;
$contact_form->set_properties($properties);
return $contact_form;
}
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );
感谢您的帮助。
要将 um_profile_id()
传递给表单数据,您需要将其添加到表单中(如我自己和@cbroe 的评论所述)。为此,您需要使用 javascript 将其传递给隐藏的表单字段,或者简单地创建一个自定义表单标签。下面使用自定义表单标签。
将 [um_profile_id]
添加到您的表单中,下面的功能将起作用。
此外,由于 wpcf7_before_send_mail 是一个动作挂钩,您不必 return 任何东西,$contact_form 对象通过引用传递并在您设置 属性.
function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {
if ( $submission && 799 === $contact_form->id() ) {
$posted_data = $submission->get_posted_data();
if ( isset( $posted_data['um-profile-id'] ) ) {
$user = get_user_by( 'id', absint( $posted_data['um-profile-id'] ) );
$properties = $contact_form->get_properties();
$properties['mail']['recipient'] = $user->user_email;
$contact_form->set_properties( $properties );
}
}
}
add_action( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );
add_action( 'wpcf7_init', 'um_profile_id_form_tag' );
function um_profile_id_form_tag() {
wpcf7_add_form_tag( 'um_profile_id', 'cf7_get_um_profile_id' );
}
function cf7_get_um_profile_id() {
$output = sprintf( '<input type="hidden" name="um-profile-id" value="%s"/>', um_profile_id() );
return $output;
}
此方法已经过测试,有效。