Cómo establecer una página de categoría como página de inicio del blog
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ó.

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:
- Crear un
home.php
con el marcado deseado - Usar
template_redirect
ohome_template
para forzar a WordPress a incluir tu plantillacategory.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 comohttp://ejemplo.com/principal/
)
...entonces la respuesta aceptada es correcta para tu caso de uso.

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.

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.

La página de categoría no puede ser la página de inicio (simplemente no funciona así).
Hay otras dos opciones:
- Limitar la página de inicio a publicaciones de una categoría específica (similar pero no exactamente lo mismo).
- 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.

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

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-->

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".
