Cómo establecer una página de categoría como página de inicio del blog

15 sept 2010, 20:24:24
Vistas: 15.1K
Votos: 5

Quiero usar una página de categoría como la página de inicio de mi blog. ¿Es posible hacerlo y cómo puedo lograrlo? Intenté con una regla de reescritura en .htaccess pero no funcionó.

0
Todas las respuestas a la pregunta 4
3
13

Actualización

Eliminando todas las demás soluciones, queda al menos una: template_redirect:

function wpse121308_redirect_homepage() {
    // Verificar el índice de entradas del blog
    // NO la página frontal del sitio,
    // que sería is_front_page()
    if ( is_home() ) {
        wp_redirect( get_category_link( $id ) );
        exit();
    }
}
add_action( 'template_redirect', 'wpse121308_redirect_homepage' );

Por supuesto, necesitarás pasar el $id de la categoría correspondiente.

El beneficio de redirigir en template_redirect es que solo ocurre una carga de plantilla, en lugar de una segunda redirección después de que se cargue la plantilla.

Nota que puedes enlazarte al proceso incluso antes, como en pre_get_posts, ahorrando potencialmente una solicitud de consulta completa:

add_action( 'pre_get_posts', 'wpse121308_redirect_homepage' );

Respuesta Original

Si solo quieres mostrar una categoría específica en el índice de entradas del blog, puedes lograrlo con un simple filtro de la $wp_query principal en pre_get_posts:

function wpse1862_pre_get_posts( $query ) {
    // Solo modificar la consulta principal
    // en la página índice de entradas del blog
    if ( is_home() && $query->is_main_query() ) {
        $query->set( 'category_name', 'slug-de-la-categoria-aqui' );
    }
}
add_action( 'pre_get_posts', 'wpse1862_pre_get_posts' );

Si quieres modificar la plantilla, entonces puedes hacer una de dos cosas:

  1. Crear un home.php con el marcado deseado
  2. Usar template_redirect o home_template para forzar a WordPress a incluir tu plantilla category.php.

Edición

Y si quieres que la URL del índice de entradas del blog luzca como:

www.ejemplo.com/principal

Entonces puedes usar una Página Frontal Estática, y asignar una página estática llamada "principal" como tu índice de entradas del blog.

Y si este es tu objetivo:

Realmente quiero la redirección. Quiero que la página de inicio (http://ejemplo.com/) redirija a la página de categoría (que luce como http://ejemplo.com/principal/)

...entonces la respuesta aceptada es correcta para tu caso de uso.

5 nov 2013 16:17:53
Comentarios

Lo siento, no. Realmente quiero la redirección. Quiero que la página de inicio (http://example.com/) redirija a la página de categoría (que luce como http://example.com/main/), porque las categorías son 'Ediciones' (por país) en el sitio y la predeterminada es EE.UU. (main). Me gustaría poder editar la descripción de la recompensa para aclarar esto.

its_me its_me
5 nov 2013 16:22:19

Puedes editar la pregunta para aclararlo. Y si tu pregunta es tan diferente de la original, deberías haber hecho tu propia pregunta en lugar de colocar una recompensa en esta. Y: ¿por qué quieres una redirección, específicamente? Una redirección es una implementación, no un objetivo final. Describe lo que realmente estás tratando de lograr. Una redirección puede o no ser la única o mejor implementación.

Chip Bennett Chip Bennett
5 nov 2013 16:23:21

Chip, la razón/caso de uso puede ser diferente, pero la pregunta es exactamente la misma, por eso evité hacer otra pregunta. Y como puedes ver, ya se publicó una respuesta similar (aunque usando query_posts, un método menos recomendado).

its_me its_me
5 nov 2013 16:24:53
2

La página de categoría no puede ser la página de inicio (simplemente no funciona así).

Hay otras dos opciones:

  1. Limitar la página de inicio a publicaciones de una categoría específica (similar pero no exactamente lo mismo).
  2. Redirigir la página de inicio a la página de categoría real.

Como parece que te parece bien la redirección, prueba lo siguiente. Crea una plantilla home.php en el directorio de tu tema con el siguiente contenido:

<?php
wp_redirect( 'http://www.tusitio.com/category/slug-de-categoria' );
?>

Probablemente haya alguna forma más ordenada de hacer esto con hooks, pero ahora mismo no se me ocurre ninguna.

15 sept 2010 20:38:12
Comentarios

Gracias, eso es lo que estaba buscando. WP realmente debería documentar mejor todos esos archivos PHP especiales (como el maintenance.php).

2ndkauboy 2ndkauboy
15 sept 2010 21:59:46

Solo ten en cuenta que esto casi duplica la carga del servidor para la página de inicio. El núcleo de WP se ejecuta dos veces. Podría ser un factor importante si tienes una cantidad considerable de visitantes.

Rarst Rarst
15 sept 2010 22:06:33
1

La forma más semántica de hacer esto en lugar de usar una redirección (tiempo de conexión adicional) es crear una plantilla de página personalizada.

nueva página:

/* Template Name: Nueva Página de Inicio por Categoría */

<?php query_posts('cat_id'=>'3');?>
<--insertar bucle-->
6 ene 2012 22:39:02
Comentarios

Sí, este es el correcto. Sube esta plantilla a tu tema. Añade una nueva página, establece la plantilla como "Nueva Página de Inicio por Cat". Luego ve a ajustes > lectura > elige 'una página estática' > página de inicio = Nueva Página de Inicio por Cat...

y listo...

inTOWN inTOWN
7 nov 2013 20:30:06
0

Si deseas redirigir a una categoría específica, por ejemplo, la categoría con ID 3, entonces copia el contenido de category.php y crea otra plantilla como category-3.php. Después de eso:

    /* Nombre de la plantilla: Nueva Página de Inicio por Cat 3 */

    <?php query_posts('cat_id'=>'3');?>
    <--inserta el bucle-->

En WordPress, en la sección de lectura, necesitamos configurar la página de inicio como página de entradas y para la página de inicio seleccionar la plantilla "Nueva Página de Inicio por Cat 3".

8 nov 2013 12:59:14