Cómo redirigir visitantes a una URL personalizada usando código PHP en functions.php
Los usuarios deben ser redirigidos a una URL personalizada que ya conozco (es parte de la lógica de programación). Solo necesito saber qué función de WP usar o qué código PHP utilizar para redirigir al usuario a la nueva URL. Este código se ejecutará dentro de una función PHP en functions.php--> esa función primero realizará algún procesamiento y luego enviará al usuario a la nueva URL.
¿Cómo puedo hacer lo anterior?
Nota: Intenté usar wp_redirect pero no funciona.
Este es el código que intenté usar (que no funcionó):
$redirecturl = get_post_type_archive_link('property');
echo "\n\n URL de redirección para posts de propiedades=" . $redirecturl;
wp_redirect( "http://" . $redirecturl . "?post_type=property&search_keyword=" . $search_keyword);

Primero, es difícil creer que wp_redirect
no esté funcionando, aquí hay un código de ejemplo sobre cómo usarlo:
function wpse101952_redirect() {
global $post;
if( /*ALGUNA LÓGICA CONDICIONAL*/ ) { //ejemplos: is_home() o is_single() o is_user_logged_in() o isset($_SESSION['alguna_var'])
wp_redirect( /*ALGÚN URL ESPECÍFICO*/ );
exit();
}
}
add_action( 'template_redirect', 'wpse101952_redirect' );
Segundo, estaría la pregunta de si ese es el enfoque correcto para tu caso, pero para decidir eso deberías explicar un poco más lo que estás tratando de hacer.
edición:
La función get_post_type_archive_link()
te da el enlace permanente completo, no necesitas agregar http://
ni ?post_type=property
:
wp_redirect( $redirecturl . "?search_keyword=" . $search_keyword );

Al ejecutar algo similar a tu código, obtengo esta advertencia en el registro de errores:
Warning: Cannot modify header information - headers already sent by (output started at /xxx/wordpress/wp-content/themes/balance/functions.php:4) in /xxx/wordpress/wp-includes/pluggable.php on line 876
Cuando usé esto para probar:
$redirecturl = 'google.com';
wp_redirect( 'http://' . $redirecturl );
exit;
Todo funciona correctamente, así que podrías intentar:
$redirecturl = get_post_type_archive_link( 'property' );
wp_redirect( 'http://' . $redirecturl . '?post_type=property&search_keyword=' . $search_keyword );
exit;
El código exit
está recomendado en la Referencia de Funciones.
