web-dev-qa-db-fra.com

Comment faire une page de la page d'accueil du blog?

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é.

3
2ndkauboy

Mettre à jour

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' );

Réponse originale

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:

  1. Créez un home.php avec le balisage souhaité
  2. Utilisez template_redirect ou home_template pour forcer WordPress à inclure votre modèle category.php.

Modifier

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.

10
Chip Bennett

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:

  1. Limiter la page d'accueil aux publications d'une catégorie spécifique (proche mais pas la même chose).
  2. Rediriger la page d'accueil vers la page de catégorie actuelle.

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.

2
Rarst

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

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.

0
Kishore Sahoo

ajoutez simplement un filtre de catégorie à votre requête index.php dans votre modèle. simples

0
Mild Fuzz