Redireccionar URL de página a URL de inicio sin usar un plugin

14 mar 2015, 06:58:35
Vistas: 68.3K
Votos: 14

¿Cómo redirecciono esta URL de página, http://localhost/wordpress_rnd/?page_id=2, a la URL de inicio, http://localhost/wordpress_rnd/, sin usar ningún plugin?

0
Todas las respuestas a la pregunta 4
2
22

La forma correcta de hacer esto es usando el hook template_redirect agregando una función a tu archivo functions.php:

function redirect_to_home() {
  if(!is_admin() && is_page('2')) {
    wp_redirect(home_url());
    exit();
  }
}
add_action('template_redirect', 'redirect_to_home');
15 mar 2015 03:39:20
Comentarios

¿Podrías decirme por qué tenemos que usar exit después de wp_redirect(home_url());?

D.JCode D.JCode
5 ene 2021 18:22:37

Buena pregunta y no puedo decirlo con certeza, pero sé que el ejemplo de la documentación oficial lo usa, así que yo también lo uso.

cfx cfx
5 ene 2021 22:42:28
0
add_action( 'init', function() {
    if ( 0 === stripos( $_SERVER['REQUEST_URI'], '/page_id=2' ) ) {

       wp_redirect( home_url(), 301 );
       exit;

    }
}

Coloca este código en un mu-plugin o en el archivo functions.php de tu tema

14 mar 2015 11:31:35
6
-1

Localiza el archivo page.php (asumiendo que ya lo has creado). Después de esta línea <?php get_header(); ?> añade el siguiente código:

<?php if(is_page('2')) {
    wp_redirect( home_url(), '302' ); 
} ?>

En el código anterior, is_page('2') es en realidad el ID de tu página como lo has especificado en tu ejemplo.

14 mar 2015 10:01:02
Comentarios

Esto puede funcionar, pero creo que es mejor, dependiendo de la situación exacta, hacer la redirección a nivel de servidor, por ejemplo usando .htaccess, para que no se ejecute ni una sola línea de código y no gastes recursos.

cybmeta cybmeta
14 mar 2015 11:09:20

@cybmeta buen punto de hecho :) Gracias por hacérmelo notar.

cristian.raiber cristian.raiber
14 mar 2015 13:38:54

Una nota más. Usa tu código en un hook de acción, como init sugerido por @paul en su respuesta, no en un archivo de plantilla como sugeriste. Si cambias a otro tema, pierdes la funcionalidad, por eso las funcionalidades y el look&feel (tema y archivo de plantilla) deben estar separados. Editaría la respuesta para añadir el hook de acción.

cybmeta cybmeta
14 mar 2015 13:53:14

Cierto también. Hay momentos en los que uno no piensa en optimizar el código, sino en completar la tarea más rápido :) Este fue (en mi opinión) uno de esos escenarios.

Sin embargo, realmente aprecio tu aporte y es muy valioso - cada día aprendo algo nuevo aquí :)

cristian.raiber cristian.raiber
14 mar 2015 16:36:38

Escribir tu código en un hook de acción es tan rápido como escribirlo en un archivo de plantilla.

cybmeta cybmeta
14 mar 2015 16:39:27

Me refería a las soluciones también. A veces, solo necesitas pensar rápido y resolver un trabajo urgente, otras veces tienes que optimizar un fragmento de código. Sin embargo, ningún código es malo, al menos desde mi punto de vista.

cristian.raiber cristian.raiber
14 mar 2015 19:45:58
Mostrar los 1 comentarios restantes
0
-1

WP_REDIRECT es la función que necesitas usar para redireccionar en WordPress. Se puede usar de la siguiente manera:

wp_redirect( $location, $status );
exit;
//$location es un parámetro obligatorio. Se utiliza para proporcionar la URL destino a la que se redirigirá la página.
//$status es opcional. Se usa para establecer el código de estado. Por defecto es 302

Puedes usar esta función para redirigir usuarios de una página a otra. Debe colocarse en functions.php o en el archivo de plantilla que se esté utilizando para mostrar la página actual. Ahora, para usarla en tu situación, simplemente coloca el siguiente código al final de tu archivo functions.php

$redirectFromPageID = 2;  //Redirigir desde la página con ID 2
$redirectTo = home_url(); //Redirigir a la URL de inicio

if( is_page( $redirectFromPageID ) ){
    wp_redirect( $redirectTo  );
    exit;
}
14 mar 2015 13:12:20