redirección no funciona en función ajax
Estoy usando ajax para enviar los datos del formulario. Al final quiero redirigir a la página de inicio. Estoy intentando el siguiente código, pero no funciona. Devuelve error 302. ¿Cómo puedo redirigir en la siguiente función? Gracias.
add_action('wp_ajax_nopriv_custom_register', 'custom_register');
add_action('wp_ajax_custom_register', 'custom_register');
function custom_register(){
//procesar datos
wp_redirect( home_url() );
exit;
}

La solicitud AJAX se ejecuta en segundo plano. Los redireccionamientos aquí no afectan la página principal. Y 302 no es un error, es solo un código de estado.
La respuesta de tu AJAX debe devolver ya sea la URL y el código de estado a la página que realiza la llamada o simplemente un número como 1. Luego manejas el redireccionamiento en la página que realiza la llamada:
jQuery( document ).ready( function( $ ) {
var url = '<?php echo home_url(); ?>';
$( '#ajaxtrigger' ).on( 'click',
function() {
$.post( ajaxurl, {}, function( response ) {
if ( 1 == response )
top.location.replace(url);
});
return false;
}
);
});

Tiene algunos años de antigüedad pero creo que esta respuesta puede ayudar a otros:
He utilizado una función para redirigir desde una llamada AJAX con JS. Primero, establece algunos valores en la base de datos y luego intenta redirigir de esta manera:
if (wp_safe_redirect( $url )
exit();
Pero simplemente devuelve la misma página seguida de 'undefined'.
Finalmente resolví directamente la parte de redirección en JS:
window.location.href = url; // mantiene el historial de la página
También funciona:
window.location.replace( url ); // limpia el historial de la página

Si deseas redirigir entonces usa javascript window.lcation="tu url"
en tu código php.
Prueba esto en tu función que es llamada por la llamada ajax;
add_action('wp_ajax_nopriv_custom_register', 'custom_register');
add_action('wp_ajax_custom_register', 'custom_register');
function custom_register(){
//proceso
$url = home_url();
?>
<script>
demo(); //nombre de la función de javascript
function demo()
{
window.location="<?php echo $url ?>";
}
</script>
<?php exit;
}
