首页 / 插件开发手册 / 自定义文章类型 / 使用自定义文章类型

使用自定义文章类型

自定义文章类型模板

您可以为自定义文章类型创建自定义模板。使用single.phparchive.php以同样的方式显示文章及其存档,您可以创建模板:

  • single-{post_type}.php – 用于自定义文章类型的单个文章
  • archive-{post_type}.php – 用于存档

其中{post_type}是文章类型标识符,使用register_post_type()函数的$post_type参数。

在我们之前学习的基础上,您可以为单个产品文章和归档创建single-wporg_product.phparchive-wporg_product.php模板文件。

或者,您可以在任何模板文件中使用is_post_type_archive()函数来检查查询是否显示给定文章类型的存档页面,以及post_type_archive_title()函数以显示文章类型标题。

 

按文章类型查询

您可以通过在WP_Query类构造函数的参数数组中传递post_type键来查询特定类型的文章。

<?php
$args = array(
	'post_type'      => 'product',
	'posts_per_page' => 10,
);
$loop = new WP_Query($args);
while ( $loop->have_posts() ) {
	$loop->the_post();
	?>
	<div class="entry-content">
		<?php the_title(); ?>
		<?php the_content(); ?>
	</div>
	<?php
}

这将循环浏览最新的十篇产品文章,并逐一显示它们的标题和内容。

 

更改主查询

注册自定义文章类型并不意味着它会自动添加到主查询中。

如果您希望自定义文章类型的文章显示在标准存档中,或者将它们与其他文章类型混合在一起,请使用pre_get_posts动作钩子。

下一个示例将在主页上显示来自postpagemovie文章类型的文章:

function wporg_add_custom_post_types($query) {
	if ( is_home() && $query->is_main_query() ) {
		$query->set( 'post_type', array( 'post', 'page', 'movie' ) );
	}
	return $query;
}
add_action('pre_get_posts', 'wporg_add_custom_post_types');