![](/img/trans.png)
[英]Contact Form 7 (CF7) radio button to change User Role on WordPress
[英]Contact Form 7 change user role after submitting
好吧,我一直在努力做到以下幾點:
如果當前用戶角色是 SUBSCRIBER 並且已成功提交聯系表單 ID“1234”,則將用戶角色更改為 EDITOR。
這是我到目前為止所做的,但我不明白為什么它不起作用。
add_action( 'wpcf7_mail_sent', 'changerole_wpcf7' );
function changerole_wpcf7( $contact_form ) {
$user = wp_get_current_user();
if ( ! empty( $user ) && in_array( "subscriber", (array) $user->roles ) && $contact_form->id() !== 1234 )
return;
$user->remove_role( "subscriber" );
$user->add_role( "editor" );
}
好吧伙計們,我終於成功了。 我對@rank 代碼做了一些小改動,並在 Contact Form 7 的“Additional Settings”選項卡中添加了subscribers_only: true
。
add_action( 'wpcf7_mail_sent', 'changerole_wpcf7' );
function changerole_wpcf7( $cf7 ) {
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;
$submission = WPCF7_Submission::get_instance();
if ( $cf7->id() == 1234 ) {
if($submission) {
if ( in_array( 'subscriber', $user_roles ) ) {
wp_update_user( array( 'ID' => $user_id, 'role' => 'editor' ) );
}
}
} else { return; }
}
}
使用return
會終止 function 的執行。因此您永遠不會到達刪除和添加角色的部分。
編輯:嘗試使用其他掛鈎“wpcf7_before_send_mail”並檢查用戶是否已登錄。您可以更新用戶角色而不是刪除和添加它。
add_action( 'wpcf7_before_send_mail', 'changerole_wpcf7' );
function changerole_wpcf7( $contact_form ) {
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 ( $contact_form->id() == 1234 ) {
if ( in_array( 'subscriber', $user_roles ) ) {
wp_update_user( array( 'ID' => $user_id, 'role' => 'editor' ) );
}
}
} else { return; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.