函数文档

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.

Return

int|WP_Error Value 0 or WP_Error on failure. The link ID on success.

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.