自定义文章类型模板
您可以为自定义文章类型创建自定义模板。使用single.php
和archive.php
以同样的方式显示文章及其存档,您可以创建模板:
single-{post_type}.php
– 用于自定义文章类型的单个文章archive-{post_type}.php
– 用于存档
其中{post_type}
是文章类型标识符,使用register_post_type()
函数的$post_type
参数。
在我们之前学习的基础上,您可以为单个产品文章和归档创建single-wporg_product.php
和archive-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
动作钩子。
下一个示例将在主页上显示来自post
、page
和movie
文章类型的文章:
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');