get_edit_term_link()
云策文档标注
概述
get_edit_term_link() 函数用于获取编辑指定分类法术语的 URL。它接受术语 ID 或对象、可选的分类法和对象类型参数,并返回编辑链接或 null。
关键要点
- 参数:$term(必需,术语 ID 或 WP_Term 对象),$taxonomy(可选,分类法名称,默认为术语的分类法),$object_type(可选,对象类型,用于高亮链接页面的文章类型菜单)。
- 返回值:成功时返回编辑链接 URL 字符串,失败时返回 null。
- 权限检查:函数内部使用 current_user_can('edit_term', $term_id) 验证用户是否有编辑权限。
- Hook:提供 get_edit_term_link 过滤器,允许修改编辑链接。
- 注意事项:$taxonomy 参数可选,但省略时可能导致 URL 中 taxonomy 参数为空,影响插件如 ACF 字段显示。
代码示例
$edit_link = esc_url( get_edit_term_link( $tag->term_id, $taxonomy, $this->screen->post_type ) );
原文内容
Retrieves the URL for editing a given term.
Parameters
$termint|WP_Term|objectrequired-
The ID or term object whose edit link will be retrieved.
$taxonomystringoptional-
Taxonomy. Defaults to the taxonomy of the term identified by
$term. $object_typestringoptional-
The object type. Used to highlight the proper post type menu on the linked page. Defaults to the first object_type associated with the taxonomy.
Source
function get_edit_term_link( $term, $taxonomy = '', $object_type = '' ) {
$term = get_term( $term, $taxonomy );
if ( ! $term || is_wp_error( $term ) ) {
return;
}
$tax = get_taxonomy( $term->taxonomy );
$term_id = $term->term_id;
if ( ! $tax || ! current_user_can( 'edit_term', $term_id ) ) {
return;
}
$args = array(
'taxonomy' => $tax->name,
'tag_ID' => $term_id,
);
if ( $object_type ) {
$args['post_type'] = $object_type;
} elseif ( ! empty( $tax->object_type ) ) {
$args['post_type'] = reset( $tax->object_type );
}
if ( $tax->show_ui ) {
$location = add_query_arg( $args, admin_url( 'term.php' ) );
} else {
$location = '';
}
/**
* Filters the edit link for a term.
*
* @since 3.1.0
*
* @param string $location The edit link.
* @param int $term_id Term ID.
* @param string $taxonomy Taxonomy name.
* @param string $object_type The object type.
*/
return apply_filters( 'get_edit_term_link', $location, $term_id, $taxonomy, $object_type );
}
Hooks
- apply_filters( ‘get_edit_term_link’, string $location, int $term_id, string $taxonomy, string $object_type )
-
Filters the edit link for a term.
Skip to note 4 content
Codex
Get term’s link to edit
$edit_link = esc_url( get_edit_term_link( $tag->term_id, $taxonomy, $this->screen->post_type ) );Skip to note 5 content
Steven Lin
Example from the legacy Codex:
Using
get_edit_tag_link()may be a better choice in most situations as it will apply the ‘get_edit_tag_link‘ filter, which may be implemented by plugins and themes.function get_edit_tag_link( $tag_id, $taxonomy = 'post_tag' ) { return apply_filters( 'get_edit_tag_link', get_edit_term_link( $tag_id, $taxonomy ) ); }Skip to note 6 content
Pt
Note that even though the
$taxonomyargument is optional, the URL returned will omit it if you choose not to use it, rather than properly getting it from the term object:$term = WP Term Object; echo get_edit_term_link($term); <a href="https://" rel="ugc">https://</a>{domain}/wp-admin/term.php?taxonomy&tag;_ID={term_id}&post;_type={post_type}echo get_edit_term_link($term, 'taxonomy'); <a href="https://" rel="ugc">https://</a>{domain}/wp-admin/term.php?taxonomy<strong>={taxonomy}</strong>&tag;_ID={term_id}&post;_type={post_type}