it-swarm-pt.tech

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

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.

3
2ndkauboy

Atualizar

Eliminando todas as outras soluções, há pelo menos um 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 carrega.

Observe que você pode conectar-se ao processo ainda mais cedo, como em pre_get_posts, potencialmente salvando 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 filtro simples do $wp_query principal em 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 posts do blog seja semelhante:

www.example.com/main

Então você pode usar um Static Front Page , e atribuir uma página estática chamada "main" como seu índice de posts do blog.

E se este é seu objetivo:

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

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

10
Chip Bennett

A página da 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 para postagens de categoria específica (fechar, mas não é a mesma coisa).
  2. Redirecionar a home page para a página da categoria atual.

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

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

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

2
Rarst

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-->
2
Robbie Guilfoyle

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

    * Template Name: New Homepage by Cat 3*/

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

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

0
Kishore Sahoo

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

0
Mild Fuzz