2010-08-16 5 views
1

Disons que j'ai un blog avec 10 messages. Je veux afficher 20 postes sur ma page d'accueil.Wordpress boucle se répéter

Comment faire pour que la boucle wordpress se répète jusqu'à ce qu'elle atteigne 20?

if (has_posts()): while (has_posts()): le_post(); en attendant; endif;

... Btw je ne veux pas deux boucles ... réponse facile serait d'avoir 2 boucles, chacun avec 10 postes, ce qui en fait l'égalité 20.

Thx

+0

Si votre blog n'avait 10 postes, où les 10 proviendraient? Voulez-vous dupliquer les messages pour en faire 20? – gabe3886

+0

oui, sur ma première page, montre les 10 premiers messages puis les dupliquer – webmasters

+0

Exactement. Si vous avez moins de 20 messages, cherchez-vous une logique conditionnelle qui demande s'il y a moins de 20 messages, réimprimez-vous jusqu'à ce que 20 messages soient affichés? (Et quelle est la logique dans cela?) – markratledge

Répondre

1

laisser tomber cette dans le fichier functions.php de votre thème:

function my_awesome_post_booster(){ 
    if(!is_home()) 
    return; 
    global $wp_query; 
    if($wp_query->post_count < 20){ 
    $how_many = 20 - $wp_query->post_count; 
    $newposts = get_posts('numberposts='.$how_many); 
    $wp_query->posts = array_merge($wp_query->posts, $newposts); 
    $wp_query->post_count += count($newposts); 
    my_awesome_post_booster(); 
    } 
} 

add_action('template_redirect', 'my_awesome_post_booster'); 
+0

c'est un code cool John. Il affiche les 10 premiers, puis les 5 premiers, puis pour les 5 derniers, il n'affiche aucun lien ... pourquoi? Btw, pourriez-vous expliquer ce code vraiment cool;)? – webmasters

+0

J'ai corrigé le problème des 'shows only 15'. Ce qu'il fait est ceci: D'abord, il regarde pour voir combien de publications seront affichées par défaut. S'il est inférieur à 20, il saisit la différence (dans ce cas, il doit saisir 10 messages) et les ajoute à la requête en cours. Ensuite, il récursif à travers lui-même pour voir si c'est toujours moins de 20 postes. Si c'est le cas, il continue à fonctionner jusqu'à ce qu'il touche au moins 20 messages. –

+0

John, merci! Vraiment merci! – webmasters

0

il y a un paramètre dans Rendue fin que vous pouvez modifier le nombre maximal de messages sur la page d'accueil - regardez sous Paramètres-> lire

+0

Ty pour votre réponse, s'il vous plaît lire attentivement la question :) – webmasters

0

Ce lien sur WordPress Codex va vous aider: The Loop - Multiple loops in Action

vous pouvez interroger les messages avec WP_Query, si vous ré N'en avez pas au moins 10, alors vous pouvez boucler les résultats à nouveau.

<?php 
$my_query = new WP_Query('category_name=whatever'); 
$count = 0; 
while ($my_query->have_posts()) { 
    $my_query->the_post(); 
    $count++; 
} 
if (count < 10) { 
    //loop again or something 
+0

Cela semble intéressant .. ty fernando ... penser comment faire à nouveau boucle – webmasters

+0

L'idée est, à des fins de référencement ... aucun sens à l'écriture 20 postes à une fois que..mais pour les écrire sur une période d'un mois même – webmasters

1

Utiliser espace réservé Lorem Ipsum texte http://www.lipsum.com pour faire suffisamment de postes et d'utiliser le même pouce pour eux. Avoir plus de sens que d'écrire une nouvelle boucle (bien que ce serait facile) et de placer/remplacer cela dans les thèmes.

Et si vous êtes préoccupé par le référencement, ces préoccupations sont totalement déplacées. Bloquez votre site de développement des robots de recherche, car vous ne voulez pas qu'un site soit indexé avec plusieurs messages et/ou texte Lorem Ipsum. Une fois que le site est en direct sur un domaine, puis faire un plan du site et laisser les bots dans

+0

Même si j'adore coder juste pour m'amuser, cela a tout de même plus de sens pour moi. –

0

Que diriez-vous quelque chose comme ça.

$count = 0; 
while ($count < 20) { 
    if (!have_posts()) { 
     rewind_posts(); 
    } 
    the_post(); 
    $count++; 
} 

Ceci suppose bien entendu que la requête n'ont au moins un poste

Questions connexes