2010-08-11 4 views
4

J'essaye d'ajouter deux boucles à un thème sur deux pages distinctes: la maison et le blog.Ajouter une deuxième boucle à un thème Wordpress sur une page séparée

Blog est essentiellement un index des messages. C'est ce que la plupart des pages Wordpress par défaut comme une page d'accueil. Pour ce faire, je suis passé à la "lecture des paramètres" et à la "mise en page" comme "statique" avec "page de couverture" sur une page d'accueil définie dans les pages Wordpress.

Maintenant, le problème est que lorsque j'ajoute la boucle à la page d'accueil, cela ne fonctionne pas, sans doute parce que j'ai posté la page sur une autre page.

Alors, comment faire pour que la boucle fonctionne sur la page d'accueil ainsi que sur la page du blog? Btw, la boucle de la page d'accueil est juste poster le titre + la date + peut-être des extraits. Ai-je besoin de retravailler complètement le thème ou est-ce que ce n'est pas une possibilité sous Wordpress?

Oh, et la boucle que je utilise est:

<?php if(have_posts()) : ?> 
     <?php while(have_posts()) : the_post() ?> 

Répondre

4

Il existe au moins trois façons d'exécuter des requêtes personnalisées dans WordPress.

Query_posts() peut définir la chaîne de requête de votre deuxième boucle. C'est facile et très commun à faire. Ce code est une structure de base que je copiais du codex page for query_posts():

//The Query 
query_posts('posts_per_page=5'); 

//The Loop 
if (have_posts()) : while (have_posts()) : the_post(); 
.. 
endwhile; else: 
.. 
endif; 

//Reset Query 
wp_reset_query(); 

You can also use get_posts() qui est similaire.

<ul> 
<?php 
global $post; 
$myposts = get_posts('numberposts=5&offset=1&category=1'); 
foreach($myposts as $post) : 
    setup_postdata($post); 
?> 
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> 
<?php endforeach; ?> 
</ul> 

Les deux fonctions acceptent un certain nombre d'arguments qui sont expliqués sur la page de référence de la fonction query_posts. Les arguments présentés ci-dessus ne sont que des exemples. La liste des arguments disponibles est longue.

Une troisième méthode à votre disposition consiste à instancier une autre instance de WordPress Query object (méthode de requête principale de WP). Query_posts et get_posts exécutent tous deux un second appel à la base de données après que WordPress a exécuté la requête par défaut wp_query. Si vous êtes très préoccupé par les performances ou la réduction des hits db, je suggère d'apprendre comment vous pouvez interagir avec wp_query pour modifier la requête par défaut avant de l'exécuter. La classe wp_query fournit un certain nombre de méthodes simples pour vous permettre de modifier la requête.

Bonne chance!

+0

Merci de votre réponse. Je suis nouveau à Wordpress et je ne sais pas où je peux mettre ce code, parce que maintenant le fichier index.php est maintenant lié à la page "Blog" à travers les paramètres de lecture. Et corrigez-moi si je me trompe, mais vous ne pouvez pas simplement ouvrir le code PHP pour une seconde boucle au milieu d'une page WP statique? –

+0

Il doit y avoir un fichier dans votre thème appelé 'page.php'. Sauf si vous copiez et renommez-le, et changez le nom du modèle dans le fichier où il est indiqué/* nom du modèle: xxxxxxx/*, il s'agit du modèle de page statique. Vous mettez mon code ci-dessus dans ce fichier, ou celui que vous créez et utilisez comme modèle de page d'accueil. Si vous créez un fichier de modèle de page alternatif, assurez-vous de le définir comme modèle de page d'accueil en modifiant votre page dans la zone d'administration du WP et sélectionnez votre fichier dans la liste déroulante page-template-habituellement dans la colonne de droite de la page d'édition écran. – kevtrout

+0

Cela ne le fera-t-il pas apparaître sur toutes les pages statiques au lieu de simplement la page d'accueil? –

0

Il est possible que WordPress ne démarre pas une boucle pour vous parce que vous utilisez une page statique. Mais si cette page statique est définie dans votre thème (puisque vous incluez le code PHP pour afficher la boucle, je suppose que c'est le cas), vous pouvez toujours start a new loop there yourself. Appelez simplement query_posts et votre code devrait commencer à fonctionner.

+0

Salut, merci de répondre. J'ai fini par utiliser "new WP_query" car il s'agissait d'une boucle imbriquée et en utilisant le template par défaut de front-page.php. –