Cómo redirigir al usuario a una página después del envío de un formulario
Tengo tres filtros desplegables en el sitio para seleccionar país, territorio y región y necesito redirigir al usuario a la página país/territorio/región según los valores seleccionados al hacer clic en el botón Enviar.
Para su información, tengo páginas con el mismo slug. Ejemplo: ejemplo.com/nombre-pais/nombre-territorio/nombre-region
Estoy intentando usar wp_redirect( $final_url ); exit;
pero me muestra un warning:
Warning: Cannot modify header information - headers already sent by (output started at E:\path\to\root-folder\wp-includes\class.wp-styles.php:154) in E:\path\to\root-folder\wp-includes\pluggable.php on line 1121
¿Alguien puede ayudarme?
¿Alguien puede sugerirme una mejor forma de hacerlo?
//Edición- aquí está mi código
if(isset($_POST['submit']) and $_POST['action']=='findurl')
{
//Resultado del Array $POST ( [countrySelect] => 1 [territorySelect] => 1 [regionSelect] => 2 )
if (isset($_POST['countrySelect'])){
$rows_country_url = $wpdb->get_results("select url from country where id=".$_POST['countrySelect']."");
}
if (isset($_POST['territorySelect'])){
$rows_territory_url = $wpdb->get_results("select url from territory where id=".$_POST['territorySelect']."");
}
if (isset($_POST['regionSelect'])){
$rows_region_url = $wpdb->get_results("select url from region where id=".$_POST['regionSelect']."");
}
if($rows_country_url[0]->url !=''){
$final_url = home_url('/').$rows_country_url[0]->url;}
if($rows_territory_url[0]->url !=''){
$final_url = $final_url.'/'.$rows_territory_url[0]->url;}
if($rows_region_url[0]->url !=''){
$final_url = $final_url.'/'.$rows_region_url[0]->url;}
echo $final_url;
if($final_url!=''){
wp_redirect( home_url() ); exit;
echo "not blank";
}else{ echo "Por favor selecciona valores";}
}

Asegúrate de que no haya salida de datos o espacios en blanco antes de wp_redirect( $final_url ); exit;
de lo contrario, esta advertencia aparecerá siempre.
Opcionalmente también puedes usar:
<?php
//Código PHP
?>
<script type="text/javascript">
document.location.href="http://example.com";
</script>
<?php
//código PHP
?>

este script funciona perfectamente y resolvió mi propósito. No estoy seguro de por qué wp_redirect no funciona después de eliminar las declaraciones echo y eliminar los espacios entre los argumentos. Mi acción from es <?php the_permalink()?> ¿Debo llamar a alguna función y colocar este código en ella para usar wp_redirect?

Mi solución es.
Crear una función para redirección en javascript.
function rm_redirect($url){ $string = ''; $string .= 'window.location = "' . $url . '"'; $string .= ''; echo $string; }
Llamar a esta función cuando quieras de esta manera.
rm_redirect('http://example.com');
