Come reindirizzare una registrazione avvenuta con successo a un template di pagina?
Ogni volta che effettuo una registrazione vengo reindirizzato alla pagina wp-login (back-end):
C'è un modo per reindirizzare gli utenti che si registrano verso un template di pagina (front-end)?

Puoi utilizzare il filtro registration_redirect
per reindirizzare a un URL personalizzato, ad esempio:
function wpse_19692_registration_redirect( $url, $result ) {
$is_error = is_wp_error( $result );
$user_id = $is_error ? 0 : $result;
$user = $is_error ? false : get_userdata( $user_id );
if ( $user ) {
// Registrazione avvenuta con successo, fai qualcosa con $user
}
return home_url( '/mia-pagina' );
}
add_filter( 'registration_redirect', 'wpse_19692_registration_redirect' );
Aggiungi questo codice nel tuo file functions.php
o in un plugin :)

Grazie per la risposta ma vengo ancora reindirizzato al back-end wp-login :( (Sto lavorando su localhost LAMP, ma non credo che sia questo il motivo).

Sei sicuro che il tema con il codice sia attivo? E quale versione di WP stai usando? Per me ha funzionato bene (testato proprio ora, 3.1.3).

OK ha funzionato dopo aver disattivato bbPress, immagino ci sia un conflitto con il plugin. Grazie!

@TheDeadMedic Ho una domanda simile ma sto registrando da una pagina con un template personalizzato che include un modulo di registrazione. Il reindirizzamento non funziona e mi riporta alla pagina principale di registrazione con il messaggio di controllare l'email per la password. Potresti dare un'occhiata alla mia domanda per favore? http://wordpress.stackexchange.com/questions/130560/redirect-to-custom-url-after-registering-from-a-page-with-registration-form

@TheDeadMedic C'è un modo per ottenere l'ID dell'utente appena registrato in questo filtro? Per favore, consigliami!

Questo è ciò che utilizzo
<form action="<?php echo site_url('wp-login.php?action=register', 'login_post') ?>" method="post">
<input type="text" name="user_login" value="Username" id="user_login" class="input" />
<input type="text" name="user_email" value="E-Mail" id="user_email" class="input" />
<?php do_action('register_form'); ?>
<input type="submit" value="Registrati" id="register" />
<input type="hidden" name="redirect_to" value="/success"/>
<p class="statement">Ti verrà inviata una password via email.</p>
</form>

Se come me utilizzi un plugin come ProfilePress per creare/gestire il tuo modulo di registrazione WordPress, il seguente codice effettuerà automaticamente il login e reindirizzerà gli utenti registrati a una pagina di benvenuto.
add_action( 'pp_after_registration', 'pp_redirect_after_registration', 10, 3 );
function pp_redirect_after_registration( $form_id, $user_data, $user_id ) {
wp_set_auth_cookie( $user_id );
wp_set_current_user( $user_id );
$custom_page_url = 'http://example.com/welcome/';
wp_redirect( $custom_page_url );
exit;
}
Nota: utilizzo la versione gratuita del plugin (https://wordpress.org/support/plugin/ppress) e il codice sopra funziona sia nella versione gratuita che in quella PRO.

Ho sviluppato un plugin per questo problema. Di seguito troverai anche il codice grezzo per un reindirizzamento senza alcun plugin.
/** * Reindirizza gli utenti a un URL personalizzato in base al loro ruolo dopo il login **/ function wp_woo_custom_redirect( $redirect, $user ) { // Ottieni il primo dei ruoli assegnati all'utente $role = $user->roles[0]; $dashboard = admin_url(); $myaccount = get_permalink( wc_get_page_id( 'my-account' ) ); if( $role == 'administrator' ) { // Reindirizza gli amministratori alla dashboard $admin_redirect = get_option('admin_redirect'); $redirect = $admin_redirect; } elseif ( $role == 'shop-manager' ) { // Reindirizza i gestori del negozio alla dashboard $shop_manager_redirect = get_option('shop_manager_redirect'); $redirect = $shop_manager_redirect; } elseif ( $role == 'customer' || $role == 'subscriber' ) { // Reindirizza clienti e abbonati alla pagina "Il mio account" $customer_redirect = get_option('customer_redirect'); $redirect = $customer_redirect; } else { // Reindirizza qualsiasi altro ruolo alla pagina visitata precedentemente o, se non disponibile, alla home $redirect = wp_get_referer() ? wp_get_referer() : home_url(); } return $redirect; } add_filter( 'woocommerce_login_redirect', 'wp_woo_custom_redirect', 10, 2 );
Se ti senti a tuo agio a lavorare con un plugin o senza codice? Puoi scaricare e installare il mio plugin "WP WooCommerce Redirect"
