如何在WordPress中动态获取当前分类页面的父term_id?
解决WordPress分类页面动态获取父term_id的问题
在WordPress的自定义分类页面(比如你用的products分类模板页),可以通过以下方式动态获取当前分类的父term_id,替代手动指定的$term_id = 10:
核心实现思路
借助get_queried_object()函数获取当前页面对应的分类对象,从该对象中提取parent属性(即父分类ID),同时判断当前分类是否为顶级分类(父ID为0),避免无意义的子分类查询。
修改后的完整代码
<?php // 获取当前分类页面的分类对象 $current_term = get_queried_object(); // 验证当前对象有效且存在父分类 if ($current_term && isset($current_term->parent) && $current_term->parent != 0) { $term_id = $current_term->parent; $taxonomy_name = 'products'; $termchildren = get_term_children($term_id, $taxonomy_name); echo '<ul>'; foreach ($termchildren as $child) { $term = get_term_by('id', $child, $taxonomy_name); // 确保分类项有效再输出,避免报错 if ($term && !is_wp_error($term)) { echo '<li><a href="' . esc_url(get_term_link($child, $taxonomy_name)) . '">' . esc_html($term->name) . '</a></li>'; } } echo '</ul>'; } ?>
关键细节说明
get_queried_object():在分类、标签、自定义分类等taxonomy页面中,该函数会返回当前对应的WP_Term对象,包含分类ID、名称、父ID等全量属性。$current_term->parent != 0的判断:如果当前分类本身是顶级分类(父ID为0),则跳过子分类查询,避免输出空列表。esc_url()和esc_html():对输出的链接和分类名称进行转义,符合WordPress安全规范,防止XSS漏洞。
内容的提问来源于stack exchange,提问作者dcvz
相关产品推荐
相关产品推荐

