# sanitize_bookmark_field()

URL: https://chugunov.pro/api-wordpress/functions/sanitize_bookmark_field/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.3.0.

## Сигнатура

```php
sanitize_bookmark_field( string $field, mixed $value, int $bookmark_id, string $context ): mixed
```

## Описание

Очищает поля закладки в зависимости от имени поля. Если для поля задано строгое значение, оно проверяется по нему, иначе применяется более общая фильтрация. После применения более строгого фильтра, если $context равно 'raw', значение сразу возвращается.
Для более общих случаев предусмотрены хуки. В контексте 'edit' вызывается фильтр 'edit_$field', которому передаются $value и $bookmark_id соответственно.
В контексте 'db' вызывается фильтр 'pre_$field', которому передаётся значение.
Контекст 'display' является финальным, в нём именем фильтра служит $field, и ему передаются $value, $bookmark_id и $context соответственно.

## Параметры

- `$field` `string` — обязательный. Поле закладки.
- `$value` `mixed` — обязательный. Значение поля закладки.
- `$bookmark_id` `int` — обязательный. ID закладки.
- `$context` `string` — обязательный. Как фильтровать значение поля. Принимает 'raw', 'edit', 'db', 'display', 'attribute' или 'js'. Значение по умолчанию — 'display'.

## Возвращаемое значение

`mixed`

## Исходный код

Файл: `wp-includes/bookmark.php:399`

```php
function sanitize_bookmark_field( $field, $value, $bookmark_id, $context ) {
	$int_fields = array( 'link_id', 'link_rating' );
	if ( in_array( $field, $int_fields, true ) ) {
		$value = (int) $value;
	}

	switch ( $field ) {
		case 'link_category': // array( ints )
			$value = array_map( 'absint', (array) $value );
			/*
			 * We return here so that the categories aren't filtered.
			 * The 'link_category' filter is for the name of a link category, not an array of a link's link categories.
			 */
			return $value;

		case 'link_visible': // bool stored as Y|N
			$value = preg_replace( '/[^YNyn]/', '', $value );
			break;
		case 'link_target': // "enum"
			$targets = array( '_top', '_blank' );
			if ( ! in_array( $value, $targets, true ) ) {
				$value = '';
			}
			break;
	}

	if ( 'raw' === $context ) {
		return $value;
	}

	if ( 'edit' === $context ) {
		/** This filter is documented in wp-includes/post.php */
		$value = apply_filters( "edit_{$field}", $value, $bookmark_id );

		if ( 'link_notes' === $field ) {
			$value = esc_html( $value ); // textarea_escaped
		} else {
			$value = esc_attr( $value );
		}
	} elseif ( 'db' === $context ) {
		/** This filter is documented in wp-includes/post.php */
		$value = apply_filters( "pre_{$field}", $value );
	} else {
		/** This filter is documented in wp-includes/post.php */
		$value = apply_filters( "{$field}", $value, $bookmark_id, $context );

		if ( 'attribute' === $context ) {
			$value = esc_attr( $value );
		} elseif ( 'js' === $context ) {
			$value = esc_js( $value );
		}
	}

	// Restore the type for integer fields after esc_attr().
	if ( in_array( $field, $int_fields, true ) ) {
		$value = (int) $value;
	}

	return $value;
}
```

## История изменений

- 2.3.0 — Introduced.

## Связанные

Использует: [`esc_js`](https://chugunov.pro/api-wordpress/functions/esc_js/), [`esc_html`](https://chugunov.pro/api-wordpress/functions/esc_html/), [`esc_attr`](https://chugunov.pro/api-wordpress/functions/esc_attr/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/).
Используется в: [`get_links`](https://chugunov.pro/api-wordpress/functions/get_links/), [`get_linkrating`](https://chugunov.pro/api-wordpress/functions/get_linkrating/), [`_walk_bookmarks`](https://chugunov.pro/api-wordpress/functions/_walk_bookmarks/), [`sanitize_bookmark`](https://chugunov.pro/api-wordpress/functions/sanitize_bookmark/), [`get_bookmark_field`](https://chugunov.pro/api-wordpress/functions/get_bookmark_field/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/sanitize_bookmark_field/
