2014-12-21 18 views
5

Witam moich kolegów deweloperów. Próbuję zmodyfikować wtórne zapytanie Wordpress i wyświetlić listę postów zgodnie z kategorią nadrzędnych wpisów. Obecnie nie wyprowadza html do stylu postu, jednak nie jest to zgodne z kategorią. Czego tu mi brakuje? Z góry dziękuję.Próba przekazania zmiennej do funkcji 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(); ?> 

Odpowiedz

3

Dzwonisz pod numer get_the_category($post->ID); i myślę, że po prostu zwraca kategorię, kiedy faktycznie jest to returns an array of category objects. Zakładając, że każdy post ma tylko jedną kategorię, możesz po prostu wziąć pierwszy wynik, który został zwrócony.

Zmieszałeś także kolejność wp_reset_postdata(); i endforeach;. Kończysz resetowanie danych posta w pętli, więc zawsze powraca do bieżącej strony w każdej iteracji pętli. Po zakończeniu pętli chcesz ją zresetować.

Ponadto, jeśli jesteś w środku The Loop, na przykład na stronie szablonu, nie musisz bezpośrednio określać global $post;.

Spróbuj tego:

$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

To chyba jest to! Wielkie dzięki, panie Roman! – Ken

2

Wymień to:

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

z

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

Nie używaj $post jako słowo kluczowe w programowaniu ponieważ $post jest zarezerwowanym kluczowe dla WordPressa.

+0

to również niestety nie przyniosły żadnego rezultatu inną niż Mike Purcella?. Dziękuję za pomoc. – Ken