在之前的文章里,悟空搜详细讲解过WordPress自定义文章类型(PostType),并且有过使用自定义文章类型实现网址导航案例,有心的朋友可以再温故下前面这两篇文章。
接下来这篇WordPress教程悟空搜将会详细讲解如何获取自定义文章类型下所有分类法和文章循环。
话不多说,直接贴上功能代码:
<?php
// 获取自定义文章类型的所有顶级分类法
$args = array(
'taxonomy' => 'sitecat', // 自定义分类法名称
'hide_empty' => false, // 显示空分类
'parent' => 0, // 只获取顶级分类
);
$categories = get_categories($args);
// 循环每个分类
foreach ($categories as $category) {
$cat_id = $category->term_id;
?>
<!-- 这里可以输出分类标题,例如: -->
<h2><?php echo esc_html($category->name); ?></h2>
<?php
// 查询属于当前分类的文章
$salong_posts = new WP_Query(array(
'post_type' => 'site', // 自定义文章类型名称
'posts_per_page' => 8, // 每页显示文章数
'tax_query' => array(
array(
'taxonomy' => 'sitecat',
'field' => 'term_id',
'terms' => $cat_id,
),
),
));
// 开始文章循环
if ($salong_posts->have_posts()) :
while ($salong_posts->have_posts()) : $salong_posts->the_post();
?>
<!-- 循环内容模板 -->
<h3><?php the_title(); ?></h3>
<?php the_excerpt(); ?>
<?php
endwhile;
wp_reset_postdata(); // 重置查询数据
endif;
}
?>
代码说明
上述代码分为两个主要部分:
- 获取分类法:使用
get_categories()函数获取自定义文章类型关联的顶级分类(父级ID为0)。 - 嵌套文章循环:对每个分类,创建一个
WP_Query实例来查询属于该分类的文章,并使用标准的have_posts()和the_post()循环输出文章内容。
重要提示:
- 代码中的
sitecat和site分别为自定义分类法和自定义文章类型的名称,请根据你的实际设置修改。 - 循环结束后务必调用
wp_reset_postdata()来恢复主查询,避免影响页面其他部分的查询。 - 示例中使用了
the_title()和the_excerpt()输出文章标题和摘要,你可以根据需要替换为其他模板标签。
使用方法
上面代码能够获取到你已经创建的自定义文章类型、分类法和分类法的所有文章,只需要新建一个自定义文章类型的分类模板即可使用!
新建一个自定义文章类型的分类模板可以参考下面这篇文章:
(此处原内容包含一个短代码块 [xx_insert_post station_article="1262"],用于插入相关文章链接。在实际部署时,请确保该短代码功能正常或替换为具体文章链接。)