Domanda

Voglio usare una pagina di categoria come home page del mio blog. E 'questo possibile e come posso farlo? E 'provato con un .htacces regola di riscrittura, ma che non ha funzionato.

È stato utile?

Soluzione

Aggiorna

Eliminando tutte le altre soluzioni, v'è almeno un residuo: 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' );

Si avrà bisogno di passare alla categoria $id appropriata, naturalmente.

Il vantaggio di reindirizzare a template_redirect è che si ottiene solo un modello di carico che si svolgono, piuttosto che un secondo redirect dopo i carichi di modello.

Si noti che è possibile collegare al processo anche in precedenza, come ad esempio a pre_get_posts, con potenziale risparmio un'intera richiesta di query:

add_action( 'pre_get_posts', 'wpse121308_redirect_homepage' );

risposta originale

Se tutto quello che vogliamo fare è visualizzare una categoria specifica sull'indice post del blog, si può realizzare che con un semplice filtro del $wp_query principale 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 si desidera modificare il modello , allora si può fare una delle due cose:

  1. Crea una home.php con il markup desiderato
  2. Usa template_redirect o home_template alla forza di WordPress per includere il modello category.php.

Modifica

E se si desidera che l'URL dell'indice post del blog a guardare come:

www.example.com/main

Quindi è possibile utilizzare un Static Front Page , e assegnare una pagina statica denominata "main" come l'indice post del blog.

E se questo è il vostro obiettivo:

Voglio davvero il reindirizzamento. Voglio la home page (http://example.com/) per reindirizzare alla pagina di categoria (che assomiglia http://example.com/main/)

... allora la risposta accettata è corretto per il caso d'uso.

Altri suggerimenti

Pagina La categoria non può essere home page (semplicemente non funziona così).

Ci sono altre due opzioni:

  1. Limite home page per i messaggi di categoria specifica (vicino ma non la stessa cosa).
  2. reindirizzamento home page alla categoria attuale.

Dal momento che sembra bene con reindirizzamento prova seguente. Creare template home.php nella directory tema con seguente contenuto:

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

C'è probabilmente un modo più ordinato di fare questo con ganci, ma niente mi viene in mente al momento.

Il modo più semantica per fare questo invece di utilizzare un redirect (tempo di connessione extra) è quello di creare un modello di pagina personalizzata.

nuova pagina:

/* Template Name: New Homepage by Cat */

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

è sufficiente aggiungere un filtro di categoria nella vostra interrogazione index.php nel modello. simples

Se si desidera reindirizzare a una categoria particolare categoria cioè id 3 quindi copiare il contenuto da category.php e fare un altro modello come categoria-3.php Dopo di che

    * Template Name: New Homepage by Cat 3*/

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

In wordpress lettura abbiamo bisogno di impostare casa come page messaggi e per la home page selezionare la nuova home page di Cat 3 come un modello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top