我正在尝试获取每个类别中最新帖子的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; ?>
我做错了什么?
答案 0 :(得分:1)
除了一行外,你所拥有的一切看起来都是正确的。你需要改变:
'category' => array( get_query_var($category->id)),
要:
'category' => $category->cat_ID
类别对象没有'id'属性,而是'cat_ID'属性。
另外:如果由于某种原因无法解决您的问题,我唯一能想到的就是改变这一行:
$randpostid = ($randpost->ID);
要:
$randpostid = ($randpost[0]->ID);
get_posts()返回一个数组,但是当我返回单个帖子时,我不确定它是否是数组格式。无论哪种方式,第一次代码更改都是必须的,第二次可能是必需的。
答案 1 :(得分: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 } ?>