簡體   English   中英

Contact Form 7 提交后更改用戶角色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM