Je souhaite utiliser une page de catégorie comme page d'accueil de mon blog. Est-ce possible et comment puis-je le faire? Il a essayé avec une règle de réécriture .htacces mais cela n'a pas fonctionné.
En éliminant toutes les autres solutions, il en reste au moins une: 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 bien sûr passer la catégorie appropriée $id
.
L'avantage de la redirection à template_redirect
est que vous ne recevez qu'un seul chargement de modèle, et non une deuxième redirection après le modèle chargé.
Notez que vous pouvez vous connecter au processus encore plus tôt, par exemple à pre_get_posts
, et ainsi potentiellement enregistrer une requête de requête complète:
add_action( 'pre_get_posts', 'wpse121308_redirect_homepage' );
Si tout ce que vous voulez, c'est afficher une catégorie spécifique dans l'index des articles de blog, vous pouvez le faire avec un simple filtre du $wp_query
principal à 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 souhaitez modifier le modèle, vous pouvez alors effectuer l'une des opérations suivantes:
home.php
avec le balisage souhaitétemplate_redirect
ou home_template
pour forcer WordPress à inclure votre modèle category.php
.Et si vous voulez que l'URL d'index des articles de blog ressemble à ceci:
www.example.com/main
Ensuite, vous pouvez utiliser une page de garde Static et attribuer une page statique appelée "main" comme index des publications de votre blog.
Et si tel est votre objectif:
Je veux vraiment la redirection. Je veux que la page d'accueil (
http://example.com/
) soit redirigée 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.
La page de catégorie ne peut pas être la page d'accueil (ça ne fonctionne tout simplement pas comme ça).
Il y a deux autres options:
Puisque vous semblez bien avec la redirection, essayez de suivre. Créez un modèle home.php
dans le répertoire de votre thème avec le contenu suivant:
<?php
wp_redirect( 'http://www.yoursite.com/category/category-slug' );
?>
Il y a probablement un moyen plus ordonné de faire cela avec des crochets, mais rien que je ne puisse penser pour le moment.
La manière la plus sémantique de procéder au lieu d'utiliser une redirection (temps de connexion supplémentaire) consiste à créer un modèle de page personnalisé.
nouvelle page:
/* Template Name: New Homepage by Cat */
<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
Si vous souhaitez rediriger vers une catégorie particulière, par exemple la catégorie 3, copiez le contenu de category.php et créez un autre modèle comme celui de category-3.php.
* Template Name: New Homepage by Cat 3*/
<?php query_posts('cat_id'=>'3');?>
<--insert loop-->
Dans wordpress reading, nous devons définir home en tant que page de messages et pour la page d’accueil, sélectionner New Homepage by Cat 3 en tant que modèle.
ajoutez simplement un filtre de catégorie à votre requête index.php dans votre modèle. simples