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?
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.
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);