Como tornar uma página de categoria na home page do blog?

3

Eu quero usar uma página de categoria como a home page do meu blog. Isso é possível e como posso fazer isso? Ele tentou com uma regra de reescrita de .htacces, mas isso não funcionou.

    
por 2ndkauboy 15.09.2010 / 19:24

5 respostas

10

Atualizar

Eliminando todas as outras soluções, há pelo menos uma restante: template_redirect :

function wpse121308_redirect_homepage() {
    // Check for blog posts index
    // NOT site front page, 
    // which would be is_front_page()
    if ( is_home() ) {
        wp_redirect( get_category_link( $id ) );
        exit();
    }
}
add_action( 'template_redirect', 'wpse121308_redirect_homepage' );

Você precisará passar a categoria apropriada $id , é claro.

O benefício de redirecionar em template_redirect é que você só obtém uma carga de modelo ocorrendo, em vez de um segundo redirecionamento após o modelo ser carregado.

Observe que você pode conectar-se ao processo ainda mais cedo, como em pre_get_posts , economizando potencialmente uma solicitação de consulta inteira:

add_action( 'pre_get_posts', 'wpse121308_redirect_homepage' );

Resposta Original

Se tudo o que você deseja fazer é exibir uma categoria específica no índice de postagens do blog, você pode fazer isso com um simples filtro da principal $wp_query at pre_get_posts :

function wpse1862_pre_get_posts( $query ) {
    // Only modify the main query
    // on the blog posts index page
    if ( is_home() && $query->is_main_query() ) {
        $query->set( 'category_name', 'category-slug-here' );
    }
}
add_action( 'pre_get_posts', 'wpse1862_pre_get_posts' );

Se você quiser modificar o template , então você pode fazer uma das duas coisas:

  1. Crie um home.php com a marcação desejada
  2. Use template_redirect ou home_template para forçar o WordPress a incluir seu modelo category.php .

Editar

E se você quiser que a URL do índice de postagens de blog seja:

www.example.com/main

Em seguida, você pode usar uma página frontal estática e atribuir uma página estática chamada "principal" como seu índice de posts do blog.

E se este é o seu objetivo:

  

Eu realmente quero o redirecionamento. Quero que a página inicial ( http://example.com/ ) redirecione para a página da categoria (que parece com http://example.com/main/ )

... então a resposta aceita está correta para o seu caso de uso.

    
por Chip Bennett 05.11.2013 / 15:17
2

A página de categoria não pode ser a página inicial (simplesmente não funciona assim).

Existem duas outras opções:

  1. Limite a página inicial a postagens de categoria específica (feche, mas não a mesma coisa).
  2. Redirecionar a página inicial para a página da categoria real.

Desde que você parece bem com o redirecionamento tente seguir. Crie home.php template no diretório do seu tema com o seguinte conteúdo:

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

Provavelmente, existe uma maneira mais organizada de fazer isso com ganchos, mas nada que eu possa pensar agora.

    
por Rarst 15.09.2010 / 19:38
2

A maneira mais semântica de fazer isso em vez de usar um redirecionamento (tempo de conexão extra) é criar um modelo de página personalizado.

nova página:

/* Template Name: New Homepage by Cat */

<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
    
por Robbie Guilfoyle 06.01.2012 / 21:39
0

Basta adicionar um filtro de categoria à sua consulta index.php no seu modelo. simples

    
por Mild Fuzz 15.09.2010 / 20:18
0

Se você deseja redirecionar para uma categoria específica, por exemplo, id de categoria 3 copie o conteúdo de category.php e crie outro template como category-3.php Depois disso

    * Template Name: New Homepage by Cat 3*/

    <?php query_posts('cat_id'=>'3');?>
    <--insert loop-->

Na leitura de wordpress, precisamos definir como home page as postagens e, para a home page, selecionar a New Homepage pela Cat 3 como modelo.

    
por Kishore Sahoo 08.11.2013 / 11:59