我知道如何显示我网站的最新帖子,但是我想知道是否有办法列出最新帖子,每个类别仅显示一个帖子。可以说我们有4个类别,因此列表上仅显示4个帖子,并根据发布日期排序。 我该怎么办? 这是我目前的代码:
<?php $postid = get_the_ID(); ?>
<?php
$args = array(
'post_type' => 'topics',
);
?>
<?php $query = new WP_Query( $args ); ?>
<?php if($query -> have_posts()): ?>
<?php while($query -> have_posts()): $query->the_post();?>
<article class="article">
<a href="<?php the_permalink(); ?>">
<?php
if ($terms = get_the_terms($post->ID, 'topics_category')) :
foreach ( $terms as $term ) :
$term_slug = $term -> slug;
$term_link = get_term_link( $term );
?>
<p class="article__category">
<?php
echo $term->name;
?>
</p>
<?php
endforeach;
endif;
?>
<h2 class="article__title"><?php the_title(); ?></h2>
<p class="article__date"><?php the_time('Y年m月d日'); ?></p>
</a>
</article>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
答案 0 :(得分:2)
您可以替换代码
<?php $postid = get_the_ID(); ?>
<?php
$args = array(
'post_type' => 'topics',
'post_status' => 'publish'
);
?>
<?php $query = new WP_Query( $args ); ?>
<?php if($query -> have_posts()): ?>
<?php while($query -> have_posts()): $query->the_post();?>
<article class="article">
<a href="<?php the_permalink(); ?>">
<?php
if ($product_terms = wp_get_object_terms($post->ID, 'topics_category')) :
foreach ( $product_terms as $term ) :
$term_slug = $term->slug;
$term_link = get_term_link( $term, 'topics_category' );
?>
<p class="article__category">
<?php
echo $term->name;
?>
</p>
<?php
endforeach;
endif;
?>
<h2 class="article__title"><?php the_title(); ?></h2>
<p class="article__date"><?php the_time('Y年m月d日'); ?></p>
</a>
</article>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
如果它不起作用,则将功能wp_get_object_terms
替换为wp_get_post_terms
为了知识
https://codex.wordpress.org/Function_Reference/wp_get_post_terms
和
https://codex.wordpress.org/Function_Reference/wp_get_object_terms
答案 1 :(得分:1)
您应该采用另一种方法,即首先使用get_terms()获取类别,然后在foreach循环中使用WP_Query为每个类别获取一个帖子。在WP_Query参数中,您应该传递posts_per_page => 1参数以及tax_query参数。有关可用参数的信息,请参见:https://gist.github.com/luetkemj/2023628
希望有帮助