使用自定义文章类型

自定义文章类型模板

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

  • single-{post_type} .php - 用于定制文章类型的单个帖子
  • archive-{post_type} .php - 用于存档

其中{post_type}是 register_post_type() 函数的 $post_type 参数。

基于我们以前学到的知识,您可以为单个产品帖子和存档创建单一wporg_product.php和archive-wporg_product.php模板文件。

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

按帖子类型查询

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

$args = [
    '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 动作钩子。以下示例显示主页上的文章,页面和电影文章类型的文章:

function wporg_add_custom_post_types($query)
{
    if (is_home() && $query->is_main_query()) {
        $query->set('post_type', ['post', 'page', 'movie']);
    }
    return $query;
}
add_action('pre_get_posts', 'wporg_add_custom_post_types');
下一节:WordPress允许开发人员创建自定义分类。当想要创建不同的命名系统并使它们以可预测的方式在幕后被访问时,自定义分类是有用的。