Cum să redirecționezi o înregistrare reușită către un șablon de pagină?
De fiecare dată când mă înregistrez ajung pe pagina wp-login (back-end):
Există vreo modalitate de a redirecționa utilizatorii care se înregistrează către un șablon de pagină (front-end)?

Poți folosi filtrul registration_redirect
pentru a redirecționa către propria ta adresă URL, de exemplu:
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 ) {
// Înregistrare reușită, poți face ceva cu $user
}
return home_url( '/pagina-mea' );
}
add_filter( 'registration_redirect', 'wpse_19692_registration_redirect' );
Adaugă acest cod în fișierul functions.php
sau într-un plugin :)

Mulțumesc pentru răspuns, dar tot sunt redirecționat către wp-login back-end :( (lucrez pe localhost LAMP, dar nu cred că asta e motivul).

Ești sigur că tema cu codul este activă? Și ce versiune de WP folosești? La mine a funcționat perfect (testat acum, 3.1.3).

OK, a funcționat după ce am dezactivat bbPress. Cred că există un conflict cu acel plugin. Mulțumesc!

@TheDeadMedic Am o întrebare similară, dar înregistrez de pe o pagină cu un șablon personalizat care include un formular de înregistrare. Redirecționarea nu funcționează, mă trimite înapoi la pagina principală de înregistrare cu mesajul să verific emailul pentru parolă. Poți să arunci o privire la întrebarea mea, te rog. http://wordpress.stackexchange.com/questions/130560/redirect-to-custom-url-after-registering-from-a-page-with-registration-form

@TheDeadMedic Există vreo modalitate de a obține ID-ul utilizatorului nou înregistrat în acest filtru? Te rog să-mi recomanzi!

Acesta este ce folosesc eu
<form action="<?php echo site_url('wp-login.php?action=register', 'login_post') ?>" method="post">
<input type="text" name="user_login" value="Nume utilizator" 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="Înregistrare" id="register" />
<input type="hidden" name="redirect_to" value="/success"/>
<p class="statement">O parolă va fi trimisă pe e-mail.</p>
</form>

Dacă, ca și mine, folosești un plugin precum ProfilePress pentru a crea/formularul de înregistrare WordPress, următorul cod va conecta automat utilizatorii înregistrați și îi va redirecționa către o pagină de bun venit.
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;
}
Notă: Folosesc versiunea gratuită a plugin-ului (https://wordpress.org/support/plugin/ppress), iar codul de mai sus funcționează atât în versiunea gratuită, cât și în cea PRO.

Am dezvoltat un plugin pentru această problemă. Mai jos este și codul brut pentru o redirecționare fără a folosi vreun plugin.
/** * Redirecționează utilizatorii către o URL personalizată în funcție de rolul lor după autentificare **/ function wp_woo_custom_redirect( $redirect, $user ) { // Obține primul rol din toate rolurile atribuite utilizatorului $role = $user->roles[0]; $dashboard = admin_url(); $myaccount = get_permalink( wc_get_page_id( 'my-account' ) ); if( $role == 'administrator' ) { // Redirecționează administratorii către panoul de administrare $admin_redirect = get_option('admin_redirect'); $redirect = $admin_redirect; } elseif ( $role == 'shop-manager' ) { // Redirecționează managerii de magazin către panoul de administrare $shop_manager_redirect = get_option('shop_manager_redirect'); $redirect = $shop_manager_redirect; } elseif ( $role == 'customer' || $role == 'subscriber' ) { // Redirecționează clienții și abonații către pagina "Contul meu" $customer_redirect = get_option('customer_redirect'); $redirect = $customer_redirect; } else { // Redirecționează orice alt rol către pagina vizitată anterior sau, dacă nu este disponibilă, către pagina principală $redirect = wp_get_referer() ? wp_get_referer() : home_url(); } return $redirect; } add_filter( 'woocommerce_login_redirect', 'wp_woo_custom_redirect', 10, 2 );
Dacă vă simțiți confortabil lucrând cu un plugin sau fără cod? Puteți descărca și instala pluginul meu "WP WooCommerce Redirect"
