当他们提交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"不能正常工作