函数文档

sanitize_bookmark()

💡 云策文档标注

概述

sanitize_bookmark() 函数用于清理书签(bookmark)的所有字段,确保数据安全。它接受书签对象或数组作为输入,并可选指定过滤上下文,返回清理后的相同类型数据。

关键要点

  • 函数 sanitize_bookmark() 清理书签的多个字段,包括 link_id、link_url、link_name 等。
  • 参数 $bookmark 可以是 stdClass 对象或数组,必需;$context 可选,默认为 'display'。
  • 返回类型与 $bookmark 相同,但字段已通过 sanitize_bookmark_field() 清理。
  • 函数内部处理对象和数组类型,确保兼容性。
  • 自 WordPress 2.3.0 版本引入。

代码示例

function sanitize_bookmark( $bookmark, $context = 'display' ) {
    $fields = array(
        'link_id',
        'link_url',
        'link_name',
        'link_image',
        'link_target',
        'link_category',
        'link_description',
        'link_visible',
        'link_owner',
        'link_rating',
        'link_updated',
        'link_rel',
        'link_notes',
        'link_rss',
    );

    if ( is_object( $bookmark ) ) {
        $do_object = true;
        $link_id   = $bookmark->link_id;
    } else {
        $do_object = false;
        $link_id   = $bookmark['link_id'];
    }

    foreach ( $fields as $field ) {
        if ( $do_object ) {
            if ( isset( $bookmark->$field ) ) {
                $bookmark->$field = sanitize_bookmark_field( $field, $bookmark->$field, $link_id, $context );
            }
        } else {
            if ( isset( $bookmark[ $field ] ) ) {
                $bookmark[ $field ] = sanitize_bookmark_field( $field, $bookmark[ $field ], $link_id, $context );
            }
        }
    }

    return $bookmark;
}

注意事项

  • 函数依赖于 sanitize_bookmark_field() 进行具体字段清理。
  • 被 WP_Links_List_Table::display_rows()、wp_insert_link() 和 get_bookmark() 等函数使用。
  • 确保输入数据格式正确,以避免运行时错误。

📄 原文内容

Sanitizes all bookmark fields.

Parameters

$bookmarkstdClass|arrayrequired
Bookmark row.
$contextstringoptional
How to filter the fields. Default 'display'.

Return

stdClass|array Same type as $bookmark but with fields sanitized.

Source

function sanitize_bookmark( $bookmark, $context = 'display' ) {
	$fields = array(
		'link_id',
		'link_url',
		'link_name',
		'link_image',
		'link_target',
		'link_category',
		'link_description',
		'link_visible',
		'link_owner',
		'link_rating',
		'link_updated',
		'link_rel',
		'link_notes',
		'link_rss',
	);

	if ( is_object( $bookmark ) ) {
		$do_object = true;
		$link_id   = $bookmark->link_id;
	} else {
		$do_object = false;
		$link_id   = $bookmark['link_id'];
	}

	foreach ( $fields as $field ) {
		if ( $do_object ) {
			if ( isset( $bookmark->$field ) ) {
				$bookmark->$field = sanitize_bookmark_field( $field, $bookmark->$field, $link_id, $context );
			}
		} else {
			if ( isset( $bookmark[ $field ] ) ) {
				$bookmark[ $field ] = sanitize_bookmark_field( $field, $bookmark[ $field ], $link_id, $context );
			}
		}
	}

	return $bookmark;
}

Changelog

Version Description
2.3.0 Introduced.