Comment faire une page de catégorie la page d'accueil de blog?
-
16-10-2019 - |
Question
Je veux utiliser une page de catégorie comme la page d'accueil de mon blog. Est-ce possible et comment puis-je le faire? Il a essayé avec une .htacces règle de réécriture, mais cela n'a pas fonctionné.
La solution
Mise à jour
L'élimination de toutes les autres solutions, il y a au moins un reste: 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' );
Vous devrez passer la catégorie $id
appropriée, bien sûr.
L'avantage de rediriger à template_redirect
est que vous obtenez seulement un modèle ayant lieu-charge, au lieu d'une seconde redirection après les charges de modèle.
Notez que vous pouvez brancher dans le processus même plus tôt, comme à pre_get_posts
, ce qui pourrait sauver des toute une demande de requête:
add_action( 'pre_get_posts', 'wpse121308_redirect_homepage' );
Réponse originale
Si tout ce que vous voulez faire est d'afficher une catégorie spécifique sur les messages blog index, vous pouvez accomplir cela avec un filtre simple du principal $wp_query
à 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' );
Si vous voulez modifier le template , vous pouvez le faire de deux choses:
- Créer un
home.php
avec le balisage souhaité - Utilisez
template_redirect
ouhome_template
pour WordPress de force pour inclure votre modèlecategory.php
.
Modifier
Et si vous voulez que les messages du blog URL de l'index pour ressembler à:
www.example.com/main
Ensuite, vous pouvez utiliser un statique avant , et affecter une page statique appelée "principale" comme messages de blog index.
Et si cela est votre objectif:
Je veux vraiment la redirection. Je veux la page d'accueil (
http://example.com/
) pour rediriger vers la page de catégorie (qui ressemble àhttp://example.com/main/
)
... alors la réponse acceptée est correcte pour votre cas d'utilisation.
Autres conseils
page Catégorie ne peut pas être la page d'accueil (n'a tout simplement pas travailler comme ça).
Il y a deux autres options:
- Limite page d'accueil à des postes de catégorie spécifique (proche, mais pas la même chose).
- Redirect page d'accueil à la page de catégorie réelle.
Puisque vous semblez bien avec redirect essayer de suivre. Créer un modèle de home.php
dans votre répertoire thématique avec le contenu suivant:
<?php
wp_redirect( 'http://www.yoursite.com/category/category-slug' );
?>
Il y a probablement une façon plus propre de le faire avec des crochets, mais je ne peux rien penser à ce moment.
La façon la plus sémantique pour le faire au lieu d'utiliser une redirection (temps de connexion supplémentaire) est de créer un modèle de page personnalisé.
nouvelle page:
/* Template Name: New Homepage by Cat */
<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
il suffit d'ajouter un filtre de catégorie dans votre requête index.php dans votre modèle. simples
Si vous souhaitez rediriger vers une catégorie catégorie particulière i.e. id 3 puis copiez le contenu de category.php et de faire un autre modèle comme catégorie 3.php Après cela,
* Template Name: New Homepage by Cat 3*/
<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
En lecture, nous devons wordpress à la maison comme jeu page messages et pour la page d'accueil, sélectionnez la nouvelle page d'accueil par Cat 3 comme modèle.