2009-06-10 9 views
0

J'ai regardé et regardé et j'ai essayé de trouver une réponse à ce que je cherchais, mais je n'ai pas encore vu de réponse pour cela:Looping Through Définir le nombre de messages dans Wordpress, puis exécuter à nouveau la même boucle sur le jeu suivant, etc

J'essaie de générer une boucle Wordpress qui prend tous les messages d'une seule catégorie et les affiche trois à la fois à l'intérieur <li></li> étiquettes.

sortie devrait ressembler à ceci:

<li>My post title | Another Title | Third title</li> 
<li>The next post title | A different post | Post #6</li> 
<li>And so on | And so forth</li> 

Je en ai besoin pour boucler toutes les entrées dans la catégorie jusqu'à fini, puis sortir de la boucle.

Mon code est complètement inactif à ce stade, mais j'ai fourni ce que je travaille avec ci-dessous. Si quelqu'un a une solution à ce problème, j'adorerais vous donner des accessoires fous, car cela m'a harcelé pendant trois jours sans aucune solution pour l'instant.

<?php // Loop through posts three at a time 
$recoffsetinit = '0'; 
$recoffset = '3'; 
query_posts('cat=1&showposts=0'); 
$post = get_posts('category=1&numberposts=3&offset='.$recoffsetinit.'); 
while (have_posts()) : the_post(); 
?> 
<li> 
<?php 
$postslist = get_posts('cat=1&order=ASC&orderby=title'); 
foreach ($postslist as $post) : setup_postdata($post); 
static $count = 0; if ($count == "3") { break; } else { ?> 
<a href="<?php the_permalink() ?>"></a> 
<?php $count++; } ?> 
<?php endforeach; ?> 
<?php $recoffsetinit = $recoffset + $recoffsetinit; ?> 
</li> 
<?php endwhile; ?> 

Répondre

0

Pas de wordpress à tester avec, et pas de temps, mais quelque chose comme ça pourrait être une meilleure façon de faire?

<?php 

$postList = get_posts('cat=1&order=ASC&orderby=title'); 
$postsPerLine = 3; 

echo "<ul>"; 
echo buildPosts($postList, $postsPerLine); 
echo "</ul>"; 

function buildPosts($list, $perLine) { 

    $out = ''; 
    $currentPostNumber = 0; 

    foreach ($list as $post) { 

     if ($currentPostNumber == 0) { 
      $out .= '<li>'; 
     } 

     $out .= "<a href='" . the_permalink() . "'></a> "; 

     $currentPostNumber++; 

     if ($currentPostNumber <= $perLine) { 
      $currentPostNumber = 0; 
      $out .= '</li>'; 
     } 

    } 
    return $out; 
} 

?> 
1

J'ai hacké votre solution pour la faire fonctionner. Cela a pris un peu de temps, car mon code-fu n'est pas ce que vous appelez "bon". Voici la solution:

<ul> 
<?php 
query_posts('category=1&showposts=0'); 
$posts = get_posts('category_name=my_cat&order=ASC&orderby=title&numberposts=0'); 
$postsPerLine = 3; 
$currentPostNumber = 0; 

foreach ($posts as $post) : 

    if ($currentPostNumber == 0) { 
      echo '<li>'; 
    } 
      ?> 

    <a href="<?php the_permalink(); ?>"></a> 

    <?php 
$currentPostNumber++; 

    if ($currentPostNumber >= $postsPerLine) { 
      $currentPostNumber = 0; 
      echo '</li>'; 
    } 

    endforeach; 
    ?> 
</ul> 

Merci pour l'entrée!

0

Accrochez tous les messages d'une catégorie, à la fois, puis passez en revue dessus. Créer un lien vers chaque publication, lancer dans le séparateur, et à chaque troisième poste commencer un nouveau <li>

<ul> 
<?php 
global $post; 
$postsPerLine = 3; 
$counter = 0; 
$myposts = get_posts('category=1&orderby=title&order=ASC'); 

foreach($myposts as $post) : 
    echo (++$counter % postsPerLine) ? : '<li>'; 
?> 
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> 
<?php 
    echo ($counter % postsPerLine) ? ' | ' : '</li>'; 
endforeach; 

?> 
</ul>