You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历自定义文章类型artwork并返回自定义分类法period及存档链接

解决WordPress自定义分类法period的存档链接展示问题

嘿,我来帮你搞定这个问题!你已经创建了artwork自定义文章类型和period自定义分类法,现在要在首页展示每个period分类并链接到它的存档页面,对吧?下面给你两种可行的方案,按需选择:

方案1:直接展示所有period分类(含存档链接)

如果想直接列出所有已创建的period分类,不管有没有关联的艺术作品,可以用get_terms()函数来获取分类数据,再配合get_term_link()生成存档链接:

<?php
// 获取所有period分类,排除空分类(可选)
$period_terms = get_terms(array(
    'taxonomy' => 'period',
    'hide_empty' => true, // 设为false会显示没有关联作品的分类
    'orderby' => 'name', // 按分类名称排序,也可以用slug/ID等
    'order' => 'ASC'
));

// 检查是否有分类
if (!empty($period_terms) && !is_wp_error($period_terms)) {
    echo '<div class="period-categories">';
    echo '<h3>艺术作品时期分类</h3>';
    echo '<ul>';
    foreach ($period_terms as $term) {
        // 获取分类存档链接
        $term_link = get_term_link($term);
        // 检查链接是否有效
        if (is_wp_error($term_link)) {
            continue;
        }
        echo '<li><a href="' . esc_url($term_link) . '">' . esc_html($term->name) . '</a></li>';
    }
    echo '</ul>';
    echo '</div>';
}
?>

方案2:遍历artwork文章时,提取并去重展示对应period分类

如果只想展示有作品关联的period分类,并且是在遍历artwork文章的过程中提取,可以用这个方法(避免重复展示同一个分类):

<?php
// 初始化一个数组存储已出现的period分类ID,用于去重
$seen_period_ids = array();

// 查询所有artwork文章
$artwork_query = new WP_Query(array(
    'post_type' => 'artwork',
    'posts_per_page' => -1, // 显示所有作品,可按需修改数量
    'orderby' => 'date',
    'order' => 'DESC'
));

if ($artwork_query->have_posts()) {
    echo '<div class="artwork-periods">';
    echo '<h3>作品所属时期</h3>';
    echo '<ul>';
    while ($artwork_query->have_posts()) {
        $artwork_query->the_post();
        
        // 获取当前作品的period分类
        $period_terms = get_the_terms(get_the_ID(), 'period');
        
        if (!empty($period_terms) && !is_wp_error($period_terms)) {
            foreach ($period_terms as $term) {
                // 检查是否已经展示过这个分类
                if (!in_array($term->term_id, $seen_period_ids)) {
                    $seen_period_ids[] = $term->term_id;
                    $term_link = get_term_link($term);
                    if (!is_wp_error($term_link)) {
                        echo '<li><a href="' . esc_url($term_link) . '">' . esc_html($term->name) . '</a></li>';
                    }
                }
            }
        }
    }
    echo '</ul>';
    echo '</div>';
    // 重置查询
    wp_reset_postdata();
}
?>

注意事项

  • 确保你注册artwork自定义文章类型时,已经将period分类法关联进去了(注册代码里要包含'taxonomies' => array('period')参数),否则分类和文章不会关联。
  • 写完代码后,记得去WordPress后台的「设置→固定链接」页面刷新一下固定链接,避免分类存档页面出现404错误。

内容的提问来源于stack exchange,提问作者E.Owen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:21:06