最近在做一个多站点主题,因为历史问题,每个站点的分类名称是相同的,但是分类链接与ID不同。在制作主题的时候为了兼容多个主题,需要统一通过分类的名称来调用分类链接以及该分类的文章列表。

查了下 WordPress 文档,看到 WP_QUERY 函数中可以使用 category_name 参数,兴冲冲的写出了如下代码:

<ul class="post-list">
	<?php $query = new WP_Query( ['category_name' => '通知公告','posts_per_page' =>6] ); while ( $query->have_posts() ) : $query->the_post();?>
	<li>
		<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
	</li>
	<?php endwhile; wp_reset_query();?>
</ul>

刷新一看,页面仍然空空如也,再仔细看了下文档,发现category_name指的是 slug ,也就是别名。并不是字面意思的分类名称。

WordPress 根据分类名称调用分类链接及文章列表的正确做法如下:

<div>
	<h2>
		<a href="<?php echo get_category_link( get_cat_ID( '通知公告' ) ); ?>">通知公告</a>
		<a href="<?php echo get_category_link( get_cat_ID( '通知公告' ) ); ?>"><span>更多</span></a>
	</h2>
	<ul class="post-list">
		<?php $query = new WP_Query( ['cat'=> get_cat_ID( '通知公告' ),'posts_per_page' =>6] ); while ( $query->have_posts() ) : $query->the_post();?>
		<li>
			<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
		</li>
		<?php endwhile; wp_reset_query();?>
	</ul>
</div>