web-dev-qa-db-fra.com

Redirection personnalisée après l'enregistrement dans WooCommerce

Une fois qu'un utilisateur s'est inscrit à l'aide du formulaire d'inscription de WooCommerce, je souhaite le rediriger vers une page personnalisée, telle que mon autre site Web, au lieu de la page my-account.

add_action('woocommerce_registration_redirect', 'ps_wc_registration_redirect',10); 
function ps_wc_registration_redirect( $redirect_to ) {  
    $redirect_to ="http://example.com";
    return $redirect_to;
}

Le crochet ci-dessus redirige avec succès les utilisateurs lorsque la destination est une page du site actuel, mais lorsque l'emplacement de redirection est en dehors du site actuel, cela ne fonctionne pas.

Existe-t-il un autre raccordement disponible après la redirection de l'enregistrement de l'utilisateur?

2
Kajal Solanki

En interne, WooCommerce utilise la fonction wp_safe_redirect() de WordPress, qui n'autorise pas les redirections vers des hôtes externes. Pour résoudre ce problème, nous devons ajouter notre hôte souhaité à la liste blanche. La liste blanche peut être modifiée en utilisant le allowed_redirect_hosts qui a été démontré ci-dessous:

/**
 * Adds example.com to the list of allowed hosts when redirecting using wp_safe_redirect()
 *
 * @param array       $hosts An array of allowed hosts.
 * @param bool|string $Host  The parsed Host; empty if not isset.
 */
add_filter( 'allowed_redirect_hosts', 'wpse_allowed_redirect_hosts', 10, 2 );
function wpse_allowed_redirect_hosts( $hosts, $Host ) {
    $hosts[] = 'example.com';

    return $hosts;
}

Utilisez le code ci-dessus avec votre code d'origine (personnalisation de l'hôte si nécessaire) pour permettre aux utilisateurs de WooCommerce d'être redirigés vers un domaine externe une fois la procédure d'inscription terminée.

1
Dave Romsey

essayez de régler la fonction comme indiqué ci-dessous, aucun paramètre n’est nécessaire si vous configurez manuellement le lien dans la fonction

function custom_registration_redirect_after_registration() {
    return home_url('/post_slug_or_page_slug');
}
add_action('woocommerce_registration_redirect', 'custom_registration_redirect_after_registration', 2);
0
Regolith