WordPress如何获取自定义分类法值生成关联文章链接
解决方法
你之前的代码失效是因为get_term()的用法错误——这个函数需要传入术语ID和分类法名称,不能直接传分类法名。要自动获取当前Testimonial关联的Company页面链接,可采用以下两种正确实现方式:
方式一:直接获取术语Slug
这种方式更简洁,适合只需要Slug拼接URL的场景:
// 获取当前Testimonial文章关联的company_key分类术语Slug $company_slugs = wp_get_post_terms(get_the_ID(), 'company_key', ['fields' => 'slugs']); // 验证是否获取到有效数据 if (!empty($company_slugs) && !is_wp_error($company_slugs)) { $company_slug = $company_slugs[0]; // 生成并输出链接,用esc_url保证URL安全 echo '<a href="' . esc_url('https://mywebsite.com/company/' . $company_slug) . '">See Company</a>'; } else { // 没有关联术语时的 fallback 内容 echo '<span>No Related Company</span>'; }
方式二:获取完整术语对象
如果后续需要用到术语名称、描述等其他信息,可使用这种方式:
$company_terms = get_the_terms(get_the_ID(), 'company_key'); if (!empty($company_terms) && !is_wp_error($company_terms)) { // 取第一个关联的术语(假设每个Testimonial只关联一个company_key) $company_term = reset($company_terms); echo '<a href="' . esc_url('https://mywebsite.com/company/' . $company_term->slug) . '">See Company</a>'; }
重要提示
- 代码要放在Testimonial的循环模板内,
get_the_ID()才能正确获取当前文章ID。 esc_url()是WordPress安全规范,必须添加以避免URL注入风险。- 若存在一个Testimonial关联多个company_key的情况,需根据业务逻辑调整取术语的逻辑(比如循环输出多个链接)。
内容的提问来源于stack exchange,提问作者Alex Harris
相关产品推荐
相关产品推荐

