Come fare una pagina di categoria alla home page del blog?
-
16-10-2019 - |
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.
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:
- Crea una
home.php
con il markup desiderato - Usa
template_redirect
ohome_template
alla forza di WordPress per includere il modellocategory.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 assomigliahttp://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:
- Limite home page per i messaggi di categoria specifica (vicino ma non la stessa cosa).
- 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.