提交联系表格 7 后更改登录用户的角色



当他们提交Contact Form 7表单时,我试图更改登录用户的用户角色。

我从我发现的各种类似的解决方案中编译了这个,但它们都不适合我。我没有看到任何错误,但是它没有更新用户角色。

function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {
$post_id = $submission->get_meta('container_post_id');
$form_id = $contact_form->id();
// do something   
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
$user_id = $user->ID;
$user_meta = get_userdata($user_id);
$user_roles = $user_meta->roles;
if ( $form_id == 2368 ) {

$user_id = wp_update_user( array( 'ID' => $user_id, 'role' => 'paid' ) );

}
}
return $contact_form;

}
add_action( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );

我实际上无法测试,但我认为这应该适用于您。

可以用函数set_role()代替wp_update_user它是USER类

的成员
function wpcf7_before_send_mail_function($contact_form, $abort, $submission) {
$form_id = $contact_form->id();

if ( is_user_logged_in() && $form_id === 2368) {
$user = wp_get_current_user();
$user->set_role('paid');
}
}
add_action( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );

联系人表单7中有一个设置,您必须添加:"subscribers_only: true"到附加设置选项卡。如果没有这个,登录检查和"wp_get_current_user"不能正常工作

最新更新