如何在WordPress的PHP代码中获取自定义分类法页面URL?
获取WordPress自定义分类法术语页面URL的正确方法
你之前用的get_post_type_archive_link()是用来获取自定义文章类型的归档页面URL,不是自定义分类法下某个术语的页面URL,所以不符合需求。正确的做法是使用get_term_link()函数,以下分两种场景给出代码:
1. 已知术语信息(slug/ID)时直接获取
如果你明确要获取某个特定术语(比如Fingersoft)的URL,可以通过slug或ID先获取术语对象,再生成链接:
// 通过术语slug获取并输出URL $term = get_term_by('slug', 'Fingersoft', 'developer'); if ($term && !is_wp_error($term)) { $term_url = get_term_link($term); echo esc_url($term_url); // 输出目标URL:https://check1.site/developer/Fingersoft/ } // 或者通过术语ID获取(替换123为实际术语ID) $term_id = 123; $term_url = get_term_link($term_id, 'developer'); if (!is_wp_error($term_url)) { echo esc_url($term_url); }
2. 在文章循环中获取当前文章的developer术语URL
因为每篇文章会分配1-2个developer标签,在文章循环内可以这样获取并输出所有关联术语的URL:
// 必须在文章循环内调用 $developer_terms = get_the_terms(get_the_ID(), 'developer'); if ($developer_terms && !is_wp_error($developer_terms)) { foreach ($developer_terms as $term) { // 输出带链接的术语名称 echo '<a href="' . esc_url(get_term_link($term)) . '">' . esc_html($term->name) . '</a> '; } }
注意事项
- 每次调用
get_term_link()后记得检查是否返回WP_Error,避免术语不存在时抛出错误; - 使用
esc_url()和esc_html()做安全转义,防止XSS漏洞。
内容的提问来源于stack exchange,提问作者Frank Smith
相关产品推荐
相关产品推荐

