Ultimate Member: Redirecționare după înregistrare

16 nov. 2017, 13:05:29
Vizualizări: 13.5K
Voturi: 1

Am citit câteva discuții despre redirecționarea după înregistrare în legătură cu pluginul Ultimate Member și am încercat unele soluții, dar nu au funcționat.

Redirecționările pentru login și logout funcționează corect, dar pentru înregistrare cred că există o mică eroare, deoarece după ce setez un URL de redirecționare, de exemplu www.example.com, URL-ul devine www.example.com/register/www.example.com.

Am cunoștințe limitate de PHP și cred că ar putea fi o eroare în codul pluginului?

Vă mulțumesc anticipat.

edit:

<?php

/**
 * Cont aprobat automat
 */
add_action('um_post_registration_approved_hook', 'um_post_registration_approved_hook', 10, 2);
function um_post_registration_approved_hook($user_id, $args){
    global $ultimatemember;

    um_fetch_user( $user_id );

    $ultimatemember->user->approve();
}

/**
 * Cont necesită validare prin email
 */
add_action('um_post_registration_checkmail_hook', 'um_post_registration_checkmail_hook', 10, 2);
function um_post_registration_checkmail_hook($user_id, $args){
    global $ultimatemember;

    um_fetch_user( $user_id );

    $ultimatemember->user->email_pending();
}

/**
 * Cont necesită revizuire de către administrator
 */
add_action('um_post_registration_pending_hook', 'um_post_registration_pending_hook', 10, 2);
function um_post_registration_pending_hook($user_id, $args){
    global $ultimatemember;

    um_fetch_user( $user_id );

    $ultimatemember->user->pending();

}

/**
 * Adaugă utilizator în WordPress
 */
add_action('um_add_user_frontend', 'um_add_user_frontend', 10);
function um_add_user_frontend($args){
    global $ultimatemember;

    unset( $args['user_id'] );

    extract($args);


    if ( isset( $username ) && !isset($args['user_login']) ) {
        $user_login = $username;
    }

    if ( ! empty( $first_name ) &&  ! empty( $last_name ) && ! isset( $user_login ) ) {

        if ( um_get_option('permalink_base') == 'name' ) {
            $user_login = rawurlencode( strtolower( str_replace(" ",".",$first_name." ".$last_name ) ) );
        }else if ( um_get_option('permalink_base') == 'name_dash' ) {
            $user_login = rawurlencode( strtolower( str_replace(" ","-",$first_name." ".$last_name ) ) );
        }else if ( um_get_option('permalink_base') == 'name_plus' ) {
            $user_login = strtolower( str_replace(" ","+",$first_name." ".$last_name ) );
        }else{
            $user_login = strtolower( str_replace(" ","",$first_name." ".$last_name ) );
        }

        // dacă numele complet există
        $count = 1;
        while( username_exists( $user_login ) ) {
            $user_login .= $count;
            $count++;
        }
    }

    if( !isset( $user_login ) && isset( $user_email ) && $user_email )
    {
        $user_login = $user_email;
    }

    $unique_userID = $ultimatemember->query->count_users() + 1;

    if ( ! isset( $user_login ) ||  strlen( $user_login ) > 30 && ! is_email( $user_login ) ) {
        $user_login = 'user' . $unique_userID;
    }

    if ( isset( $username ) && is_email( $username ) ) {
        $user_email = $username;
    }

    if ( ! isset( $user_password ) ){
        $user_password = $ultimatemember->validation->generate( 8 );
    }


    if( ! isset( $user_email ) ) {
        $site_url = @$_SERVER['SERVER_NAME'];
        $user_email = 'nobody' . $unique_userID . '@' . $site_url;
        $user_email = apply_filters("um_user_register_submitted__email", $user_email );
    }


    $creds['user_login'] = $user_login;
    $creds['user_password'] = $user_password;
    $creds['user_email'] = trim( $user_email );

    $args = apply_filters('um_add_user_frontend_submitted', $args );

    $args['submitted'] = array_merge( $args['submitted'], $creds);
    $args = array_merge($args, $creds);

    unset( $args['user_id'] );


    do_action('um_before_new_user_register', $args);

    $user_id = wp_create_user( $user_login, $user_password, $user_email );

    do_action('um_after_new_user_register', $user_id, $args);

    return $user_id;
}

/**
 * După adăugarea unui nou utilizator
 */
add_action('um_after_new_user_register', 'um_after_new_user_register', 10, 2);
function um_after_new_user_register( $user_id, $args ){
    global $ultimatemember, $pagenow;
    extract( $args );

    um_fetch_user( $user_id );

    if ( !isset( $args['role'] ) ) {
        $role = um_get_option('default_role');
    }

    if ( $pagenow != 'user-new.php' && !array_key_exists( $role, $ultimatemember->query->get_roles( false, array('admin') ) ) {
        $role = um_get_option('default_role');
    }

    $ultimatemember->user->set_role( $role );

    $ultimatemember->user->set_registration_details( $args['submitted'] );

    $ultimatemember->user->set_last_login();

    do_action('um_new_user_registration_plain');

    do_action('um_post_registration_save', $user_id, $args);

    do_action('um_post_registration_listener', $user_id, $args);

    do_action('um_update_profile_full_name', $args );

    do_action('um_post_registration', $user_id, $args);

    if( ! is_admin() ){
        do_action('user_register', $user_id );
    }

}

/**
 * Actualizează profilul utilizatorului după înregistrare
 */
add_action('um_post_registration_save', 'um_post_registration_save', 10, 2);
function um_post_registration_save( $user_id, $args ){
    global $ultimatemember;

    unset( $args['user_id'] );
    $args['_user_id'] = $user_id;
    $args['is_signup'] = 1;

    do_action('um_user_edit_profile', $args);

}

/**
 * Ascultător post-înregistrare pentru administrator
 */
add_action('um_post_registration_listener', 'um_post_registration_listener', 10, 2);
function um_post_registration_listener( $user_id, $args ){
    global $ultimatemember;

    if ( um_user('status') != 'pending' ) {
        $ultimatemember->mail->send( um_admin_email(), 'notification_new_user', array('admin' => true ) );
    } else {
        $ultimatemember->mail->send( um_admin_email(), 'notification_review', array('admin' => true ) );
    }

}

/**
 * Procedură post-înregistrare
 */
add_action('um_post_registration', 'um_post_registration', 10, 2);
function um_post_registration( $user_id, $args ){
    global $ultimatemember;
    unset(  $args['user_id'] );
    extract($args);

    $status = um_user('status');

    do_action("um_post_registration_global_hook", $user_id, $args);

    do_action("um_post_registration_{$status}_hook", $user_id, $args);

    if ( !is_admin() ) {

        do_action("track_{$status}_user_registration");

        // Redirecționare prioritară
        if ( isset( $args['redirect_to'] ) ) {
            exit( wp_redirect(  urldecode( $args['redirect_to'] ) ) );
        }

        if ( $status == 'approved' ) {

            $ultimatemember->user->auto_login( $user_id );
            $ultimatemember->permalinks->profile_url( true );

            do_action('um_registration_after_auto_login', $user_id );

            if ( um_user('auto_approve_act') == 'redirect_url' && um_user('auto_approve_url') !== '' ){
                exit( wp_redirect( um_user('auto_approve_url') ) );
            }
            if ( um_user('auto_approve_act') == 'redirect_profile' ){
                exit( wp_redirect( um_user_profile_url() ) );
            }

        }

        if ( $status != 'approved' ) {

            if ( um_user( $status . '_action' ) == 'redirect_url' && um_user( $status . '_url' ) != '' ) {
                exit( wp_redirect( um_user( $status . '_url' ) ) );
            }

            if ( um_user( $status . '_action' ) == 'show_message' && um_user( $status . '_message' ) != '' ) {

                $role_id = $ultimatemember->user->get_role_name( um_user('role'), true );
                $url  = $ultimatemember->permalinks->get_current_url();
                $url  = add_query_arg( 'message', esc_attr( $status ), $url );
                $url  = add_query_arg( 'um_role', esc_attr( $role_id ), $url );
                $url  = add_query_arg( 'um_form_id', esc_attr( $form_id ), $url );

                exit( wp_redirect( $url ) );
            }

        }

    }

}

/**
 * Înregistrare utilizator nou
 */
add_action('um_user_registration', 'um_user_registration', 10);
function um_user_registration($args){
    global $ultimatemember;

    unset( $args['user_id'] );
    do_action('um_add_user_frontend', $args);

}

/**
 * Procesare formular
 */
add_action('um_submit_form_register', 'um_submit_form_register', 10);
function um_submit_form_register($args){
    global $ultimatemember;

    if ( !isset($ultimatemember->form->errors) ) do_action('um_user_registration', $args);

    do_action('um_user_registration_extra_hook', $args );

}

/**
 * Înregistrare utilizator cu rol predefinit în opțiuni
 */
add_action('um_after_register_fields', 'um_add_user_role');
function um_add_user_role( $args ){

    global $ultimatemember;

    if ( isset( $args['custom_fields']['role_select'] ) || isset( $args['custom_fields']['role_radio'] ) ) return;

    $use_global_settings = get_post_meta( $args['form_id'], '_um_register_use_globals', true);

    if (isset($args['role']) && !empty($args['role']) && $use_global_settings == 0 ) {
        $role = $args['role'];
    } else if( $use_global_settings == 1 ) {
        $role = um_get_option('default_role');
    }

    if( empty( $role ) ) return;

    $role = apply_filters('um_register_hidden_role_field', $role );
    if( $role ){
        echo '<input type="hidden" name="role" id="role" value="' . $role . '" />';
    }

}

/**
 * Afișează butonul de trimitere
 */
add_action('um_after_register_fields', 'um_add_submit_button_to_register', 1000);
function um_add_submit_button_to_register($args){
    global $ultimatemember;

    // NU adăuga când se revizuiesc detaliile utilizatorului
    if ( isset( $ultimatemember->user->preview ) && $ultimatemember->user->preview == true && is_admin() ) return;

    $primary_btn_word = $args['primary_btn_word'];
    $primary_btn_word = apply_filters('um_register_form_button_one', $primary_btn_word, $args );

    $secondary_btn_word = $args['secondary_btn_word'];
    $secondary_btn_word = apply_filters('um_register_form_button_two', $secondary_btn_word, $args );

    $secondary_btn_url = ( isset( $args['secondary_btn_url'] ) && $args['secondary_btn_url'] ) ? $args['secondary_btn_url'] : um_get_core_page('login');
    $secondary_btn_url = apply_filters('um_register_form_button_two_url', $secondary_btn_url, $args );

    ?>

    <div class="um-col-alt">

        <?php if ( isset($args['secondary_btn']) && $args['secondary_btn'] != 0 ) { ?>

        <div class="um-left um-half"><input type="submit"  value="<?php echo __( $primary_btn_word,'ultimate-member'); ?>" class="um-button" id="um-submit-btn" /></div>
        <div class="um-right um-half"><a href="<?php echo $secondary_btn_url; ?>" class="um-button um-alt"><?php echo __( $secondary_btn_word,'ultimate-member'); ?></a></div>

        <?php } else { ?>

        <div class="um-center"><input type="submit" value="<?php echo __( $primary_btn_word,'ultimate-member'); ?>" class="um-button" id="um-submit-btn" /></div>

        <?php } ?>

        <div class="um-clear"></div>

    </div>

    <?php
}

/**
 * Afișează câmpuri
 */
add_action('um_main_register_fields', 'um_add_register_fields', 100);
function um_add_register_fields($args){
    global $ultimatemember;

    echo $ultimatemember->fields->display( 'register', $args );

}

/**
 * Setează gravatarul utilizatorului cu user_email
 */
add_action('user_register','um_user_register_generate_gravatar');
function um_user_register_generate_gravatar( $user_id ){
    global $ultimatemember;

    $ultimatemember->user->set_gravatar( $user_id );

}
7
Comentarii

Poți să împărtășești codul?

Piyush Rawat Piyush Rawat
16 nov. 2017 13:12:33

@PiyushRawat a împărtășit codul mai sus în edit. Mulțumesc.

ProjectX ProjectX
16 nov. 2017 13:37:17

acesta este codul pluginului, l-ai modificat? sau ai vreun cod de redirecționare în functions.php?

Piyush Rawat Piyush Rawat
16 nov. 2017 13:43:42

Și unde ai setat URL-ul de redirecționare?

Piyush Rawat Piyush Rawat
16 nov. 2017 13:48:58

Nu l-am modificat și nici nu am adăugat cod de redirecționare în functions.php. Am setat URL-ul de redirecționare către pagina principală a site-ului meu. Practic, vreau ca pagina să fie accesibilă doar anumitor persoane și să fie nevoie să se înregistreze înainte de a intra pe pagină.

ProjectX ProjectX
16 nov. 2017 13:50:13

Da, dar unde ai setat URL-ul de redirecționare?... Este în setările plugin-ului sau într-un template personalizat??

Piyush Rawat Piyush Rawat
16 nov. 2017 13:50:59

poți încerca să îl setezi ca http://www.example.com în loc de www.example.com, adică folosește http:// sau https:// înaintea numelui de domeniu

Piyush Rawat Piyush Rawat
16 nov. 2017 13:52:19
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 1
1

Cred că problema ta este legată de protocoalele URL, nu de vreun bug în plugin. Încearcă să adaugi http:// sau https:// înaintea URL-ului de redirecționare.

Pentru mai multe informații, consultă acest răspuns

16 nov. 2017 14:06:08
Comentarii

@ProjectX.. marchează răspunsul ca acceptat

Piyush Rawat Piyush Rawat
16 nov. 2017 14:43:46