无法从类别中获取最新帖子

时间:2014-09-01 23:21:54

标签: php wordpress

我正在尝试获取一个类别并遍历其子类别,从每个子类别中获取一个帖子。以下是我的代码:

<? 
$homepage_cat = get_category_by_slug( 'home-page-slider' );

$id = $homepage_cat->cat_ID;

print($id);

$sub_cat = get_categories('hide_empty=0&child_of=' . $id);

print_r($sub_cat);

    foreach ($sub_cat as $key => $cat) 
    {
        echo $cat->term_id;
        query_posts('cat=' . $cat->term_id);
        if ( have_posts() ) 
        {  echo '<h1> HELL YEAH </h1>';
            while ( have_posts() ) 
            { 
              echo  '<h1>' get_the_title(); '</h1>'; 
            } // end while
        }  // end if
    } //end foreach
?>

由于HELL YEAH未被回复,因此代码不会撤回任何帖子。有人可以提出解决方案吗?

3 个答案:

答案 0 :(得分:1)

使用get_posts()而不是query_posts,这种情况会更好。

$args = array('posts_per_page' => 1, 'category' => $cat->term_id);
$posts = get_posts($args);

foreach($posts as $post) : setup_postdata( $post ) ?>
   <h1><?php get_the_title(); ?></h1>
<?php endforeach; ?>

答案 1 :(得分:0)

这里有很多问题

  • 首先,永远不要使用query_posts来构建自定义查询。它破坏了主要查询,不可靠,在大多数情况下在分页中完全失败

  • 其次,您必须在每次自定义查询后重置您的postdata

  • 第三,永远不要使用短标签。始终使用完整标记,即<?php,而不只是<?

  • 最后,您缺少应该返回帖子对象的the_post()

您的查询应该是这样的

<?php 
$homepage_cat = get_category_by_slug( 'home-page-slider' );

$id = $homepage_cat->cat_ID;

print($id);

$sub_cat = get_categories('posts_per_page=1&hide_empty=0&child_of=' . $id);

print_r($sub_cat);

    foreach ($sub_cat as $key => $cat) 
    {
        echo $cat->cat_ID;
        $q = new WP_Query('cat=' . $cat->cat_ID);
        if ( $q->have_posts() ) 
        {  echo '<h1> HELL YEAH </h1>';
            while ( $q->have_posts() ) 
            { 
                 $q->the_post();
                 echo  '<h1>' get_the_title(); '</h1>'; 
            } // end while
        }  // end if
        wp_reset_postdata();
    } //end foreach
?>

答案 2 :(得分:-1)

替换此

$post_args = array(
   'showposts' => 1,
   'cat' => $cat->term_id 
);

有了这个。

$post_args = array(
   'posts_per_page' => 1,
   'category' => $cat->term_id 
);

我希望它能够发挥作用。