2014-12-21 10 views
5

Salve colleghi sviluppatori. Sto tentando di modificare una query di Wordpress secondaria e fargli visualizzare un elenco di post in base alla categoria dei post principali. Attualmente emette l'html per lo stile del post, tuttavia non è in base alla categoria. Cosa mi manca qui? Grazie in anticipo.Provare a passare la variabile alla funzione Wordpress

<?php 
      $the_category = get_the_category($post->ID); 
      global $post; 
      $myposts = get_posts('numberposts=5&category='.$the_category.''); 
      foreach($myposts as $post) : setup_postdata($post); ?> 
     <li> 
      <div class="suggestVid"> 
       <span style="padding-right:5px; float:left;"> 
       <?php the_post_thumbnail('suggest-vid'); ?></span> 
       <a href="<?php the_permalink() ?>"><?php the_title(); ?></a> 
      </div> 
     </li> 
     <?php wp_reset_postdata(); ?> 
     <?php endforeach; ?> 
     <?php wp_reset_query(); ?> 

risposta

3

Stai chiamando get_the_category($post->ID); e stai pensando di restituire una categoria, quando in realtà è returns an array of category objects. Supponendo che ogni post abbia una sola categoria, puoi semplicemente prendere il primo risultato che è stato restituito.

È stato inoltre modificato l'ordine di wp_reset_postdata(); e endforeach;. Finisci per reimpostare i dati dei post all'interno del tuo loop in modo che si reimposti sempre alla pagina corrente attraverso ogni iterazione del ciclo. Si desidera ripristinarlo solo una volta terminato il ciclo.

Inoltre, se si è all'interno di The Loop, come dire, su una pagina di modello, non è necessario specificare global $post; direttamente.

Prova questo:

$categories = get_the_category(); 
$category = $categories[0]; 

$myposts = get_posts(array(
    'posts_per_page' => 5, 
    'category'  => $category->cat_ID 
)); 

?><ul><?php 

foreach($myposts as $post) : setup_postdata($post); ?> 
    <li> 
     <div class="suggestVid"> 
      <span style="padding-right:5px; float:left;"> 
      <?php the_post_thumbnail('suggest-vid'); ?></span> 
      <a href="<?php the_permalink() ?>"><?php the_title(); ?></a> 
     </div> 
    </li><?php 

endforeach; 
wp_reset_postdata(); 

>

+1

Sembra proprio questo! Grazie mille, signor Roman! – Ken

2

sostituire questo:

$myposts = get_posts('numberposts=5&category='.$the_category.''); 

con

$myposts = get_posts('numberposts=5&category='.$the_category); 

Non utilizzare $post come parola chiave nella programmazione perché $post è una parola chiave riservata per WordPress.

+0

Anche questo, purtroppo, non ha prodotto alcun risultato diverso da quello di Mike Purcell?. Grazie comunque per il tuo aiuto. – Ken

Problemi correlati