edit_link()
云策文档标注
概述
edit_link() 函数用于基于 $_POST 数据更新或插入链接,是 WordPress 后台链接管理的核心函数。它首先检查用户权限,然后处理输入数据,最后调用 wp_update_link() 或 wp_insert_link() 执行操作。
关键要点
- 函数接受可选参数 $link_id,默认为 0,用于指定要编辑的链接 ID;若提供则更新链接,否则插入新链接。
- 执行前验证当前用户是否具有 'manage_links' 权限,否则通过 wp_die() 终止执行并显示错误信息。
- 对 $_POST 中的关键字段(如 link_url、link_name、link_image、link_rss)进行安全转义处理,确保数据安全。
- 返回值:成功时返回链接 ID,失败时返回 0 或 WP_Error 对象。
- 内部依赖 wp_update_link() 和 wp_insert_link() 函数完成数据库操作。
代码示例
function edit_link( $link_id = 0 ) {
if ( ! current_user_can( 'manage_links' ) ) {
wp_die(
'' . __( 'You need a higher level of permission.' ) . '' .
'' . __( 'Sorry, you are not allowed to edit the links for this site.' ) . '',
403
);
}
$_POST['link_url'] = esc_url( $_POST['link_url'] );
$_POST['link_name'] = esc_html( $_POST['link_name'] );
$_POST['link_image'] = esc_html( $_POST['link_image'] );
$_POST['link_rss'] = esc_url( $_POST['link_rss'] );
if ( ! isset( $_POST['link_visible'] ) || 'N' !== $_POST['link_visible'] ) {
$_POST['link_visible'] = 'Y';
}
if ( ! empty( $link_id ) ) {
$_POST['link_id'] = $link_id;
return wp_update_link( $_POST );
} else {
return wp_insert_link( $_POST );
}
}注意事项
- 函数自 WordPress 2.0.0 版本引入,是链接管理的基础功能。
- 相关函数包括 wp_update_link()、wp_insert_link()、current_user_can() 等,用于权限检查和数据操作。
- 使用前需确保 $_POST 数据已正确设置,否则可能导致操作失败。
原文内容
Updates or inserts a link using values provided in $_POST.
Parameters
$link_idintoptional-
ID of the link to edit. Default 0.
Source
function edit_link( $link_id = 0 ) {
if ( ! current_user_can( 'manage_links' ) ) {
wp_die(
'<h1>' . __( 'You need a higher level of permission.' ) . '</h1>' .
'<p>' . __( 'Sorry, you are not allowed to edit the links for this site.' ) . '</p>',
403
);
}
$_POST['link_url'] = esc_url( $_POST['link_url'] );
$_POST['link_name'] = esc_html( $_POST['link_name'] );
$_POST['link_image'] = esc_html( $_POST['link_image'] );
$_POST['link_rss'] = esc_url( $_POST['link_rss'] );
if ( ! isset( $_POST['link_visible'] ) || 'N' !== $_POST['link_visible'] ) {
$_POST['link_visible'] = 'Y';
}
if ( ! empty( $link_id ) ) {
$_POST['link_id'] = $link_id;
return wp_update_link( $_POST );
} else {
return wp_insert_link( $_POST );
}
}
Changelog
| Version | Description |
|---|---|
| 2.0.0 | Introduced. |