2009-03-03 5 views
1

Ich habe eine Seite, die oben eine Kategorieliste enthält und in der Regel Beiträge darunter anzeigen sollte. Die Kategorieliste wird erstellt mit:Wie bekomme ich Wordpress um eine vorherige Posts Abfrage zu überschreiben?

<?php $display_categories = array(4,7,8,9,21,1); $i = 1; 
foreach ($display_categories as $category) { ?> 
<?php single_cat_title(); ?> //etc 
</div> 
    <?php } ?> 

Dies scheint jedoch die Post-Schleife Auftragspost nach Kategorie zu machen. Ich möchte, dass die Reihenfolge der Kategorien und absteigend sortiert wird. Ich habe eine neue WP_Query erstellt, da laut den Dokumenten Sie query_posts() nicht zweimal verwenden können, nur für den Fall.

<?php $q = new WP_Query("cat=-1&showposts=15&orderby=date&order=DESC"); 
    if ($q->have_posts()) : while ($q->have_posts()) : $q->the_post(); ?> 
    the_title(); // etc 
    endwhile; endif; ?> 

Doch dies noch scheint nach Kategorie (die gleiche Reihenfolge wie die Liste oben) und dann nach dem Datum zu bestellen, im Gegensatz zu nur nach Datum.

+0

ich sunshiiiine habe ... an einem bewölkten Tag ... – TheTXI

+0

Ich wünsche ich eine Seite hatte. Alles, was ich habe, ist die Fähigkeit, zusammenhängende Sätze zu bilden. – Pesto

Antwort

2

Ich habe vor als auch mit diesen Probleme hat.

Versuchen Sie folgendes:

 <?php 
    global $post; 
    $myposts = get_posts('numberposts=5'); 

    foreach($myposts as $post) : 
    setup_postdata($post); 
    ?> 
     <div <?php post_class(); ?>> 
     <div class="title"> 
      <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 
      <p class="small"><?php the_time('F j, Y'); ?> by <?php the_author(); ?></p> 
     </div> 
     <?php the_excerpt(); ?> 
     </div> 
<?php 
    endforeach; 
?> 

Die wichtige Linie ist 'global $ post;'.

Das sollte Ihre globale Abfrage zurücksetzen. Die 'setup_postdata ($ post) -Methode ist notwendig, um Ihnen Zugriff auf Funktionen wie' the_author() 'oder' the_content() 'zu geben.

-Chris

0

query_posts ist manchmal knifflig. Versuchen Sie so etwas wie dieses und sehen, ob es funktioniert:

query_posts(array('category__not_in'=>array(1), 
        'showposts'=>15, 
        'orderby'=>date, 
        'order'=>DESC)); 

Da dies nicht das Problem, versuchen update_post_caches ($ posts) in die zweite Schleife hinzufügen, wie folgt aus:

<?php $q = new WP_Query("cat=-1&showposts=15&orderby=date&order=DESC"); 
if ($q->have_posts()) : while ($q->have_posts()) : $q->the_post(); update_post_caches($posts); ?> 
the_title(); // etc 
endwhile; endif; ?> 

Angeblich soll diese solves some plugin problems.

+0

Danke für die Antwort! Das scheint jedoch keinen Unterschied zu machen. –

0

Ich habe keine Erfahrung mit Wordpress, aber ein paar Möglichkeiten:

  1. Sie definieren die „Ordnung“ Parameter zweimal in der Zeichenfolge Sie query_posts() mit anrufen, ich weiß nicht, ob das verursacht ein Problem oder nicht.
  2. Auch "Show" ist kein gültiger Parameter, Sie haben vielleicht nach "Showposts" gesucht.

Parameter und die Auswirkungen werden hier beschrieben: http://codex.wordpress.org/Template_Tags/query_posts#Parameters

+0

Hallo, danke, dass du das bemerkt hast. Ich habe den Code (und den obigen Beitrag) aktualisiert, aber das Problem scheint immer noch nicht behoben zu sein. –