0

我正在尝试获取每个类别中最新帖子的 id,并使用该 id 获取元信息和缩略图并将其显示在相应类别旁边。我只是不知道该怎么做。

我一直在尝试这段代码,但它对我不起作用:

<?php
$args=array(
  'orderby' => 'name',
  'order' => 'ASC'
  );
$categories=get_categories($args);
foreach($categories as $category) : ?>

    <?php $randpost = get_posts(
        array(
            'numberposts' => 1,
            'category' => array( get_query_var($category->id)),
        ));
    $randpostid = ($randpost->ID);
    ?>

    <?php echo '<h2 class="newsitem"><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </h2> '; ?>
    <?php echo '<p>'. $category->count . ' nummer</p>'; ?>

    <strong>Stad:</strong>
    <?php $city = get_post_meta($randpostid, 'city', true); ?>
    <?php echo $city ?> 

<?php endforeach; ?>

我究竟做错了什么?

4

2 回答 2

1

你所拥有的一切看起来都是正确的,除了一行。你需要改变:

'category' => array( get_query_var($category->id)),

到:

'category' => $category->cat_ID

类别对象没有“id”属性,而是“cat_ID”属性。

另外:如果由于某种原因不能解决您的问题,我唯一能想到的另一件事就是更改这一行:

$randpostid = ($randpost->ID);

到:

$randpostid = ($randpost[0]->ID);

get_posts() 返回一个数组,但我不确定返回单个帖子时它是否为数组格式。无论哪种方式,第一次代码更改是必须的,第二次可能需要。

于 2012-05-23T13:14:48.240 回答
0

如果您只是在显示最新帖子中的信息之后,您可能会以更简单的方式执行此操作。在您的页面模板中这样的东西应该可以工作(未经测试):

编辑

根据OP评论编辑的答案:

<?php
$cat_args = array('orderby' => 'name','order' => 'ASC'); //for parameters see http://codex.wordpress.org/Function_Reference/get_categories

$categories=get_categories($cat_args);

foreach($categories as $category) { // for each category we as for the most recent post

$post_args = array('numberposts' => 1, 'category' => $category, 'orderby' => 'post_date', 'order' => 'DESC', );

$posts_array = get_posts( $post_args );

foreach($lastposts as $post) : setup_postdata($post); //Use setup_postdata to access parts of the object using regular WP template tags ?> 

    <?php post_id = get_the_ID(); // or you could just use $post->ID ?>

    <!--Do your stuff here-->

<?php endforeach; ?>

<?php } ?>
于 2012-05-23T11:18:00.443 回答