# wp_insert_link()

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

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

## Сигнатура

```php
wp_insert_link( array $linkdata, bool $wp_error = false ): int|WP_Error
```

## Описание

Выполняет всю необходимую очистку, подставляет значения по умолчанию, если аргументы отсутствуют, и в итоге сохраняет ссылку.

## Параметры

- `$linkdata` `array` — обязательный. Элементы, из которых состоит вставляемая ссылка.
  
  link_id intНеобязательный. ID существующей ссылки при обновлении.
  
  link_url stringURL, на который указывает ссылка.
  
  link_name stringЗаголовок ссылки.
  
  link_image stringНеобязательный. URL изображения.
  
  link_target stringНеобязательный. Целевой элемент для тега привязки.
  
  link_description stringНеобязательный. Краткое описание ссылки.
  
  link_visible stringНеобязательный. 'Y' означает «видимая», любое другое значение — «нет».
  
  link_owner intНеобязательный. ID пользователя.
  
  link_rating intНеобязательный. Рейтинг ссылки.
  
  link_rel stringНеобязательный. Ваше отношение к ссылке.
  
  link_notes stringНеобязательный. Расширенное описание ссылки или заметки к ней.
  
  link_rss stringНеобязательный. URL связанной RSS-ленты.
  
  link_category intНеобязательный. ID термина категории ссылки.
  
  Если пусто, используется категория ссылок по умолчанию.
- `$wp_error` `bool` — необязательный, по умолчанию `false`. Возвращать ли объект WP_Error в случае неудачи.

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

`int|WP_Error` — WP_Error

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

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

```php
function wp_insert_link( $linkdata, $wp_error = false ) {
	global $wpdb;

	$defaults = array(
		'link_id'     => 0,
		'link_name'   => '',
		'link_url'    => '',
		'link_rating' => 0,
	);

	$parsed_args = wp_parse_args( $linkdata, $defaults );
	$parsed_args = wp_unslash( sanitize_bookmark( $parsed_args, 'db' ) );

	$link_id   = $parsed_args['link_id'];
	$link_name = $parsed_args['link_name'];
	$link_url  = $parsed_args['link_url'];

	$update = false;
	if ( ! empty( $link_id ) ) {
		$update = true;
	}

	if ( '' === trim( $link_name ) ) {
		if ( '' !== trim( $link_url ) ) {
			$link_name = $link_url;
		} else {
			return 0;
		}
	}

	if ( '' === trim( $link_url ) ) {
		return 0;
	}

	$link_rating      = ( ! empty( $parsed_args['link_rating'] ) ) ? $parsed_args['link_rating'] : 0;
	$link_image       = ( ! empty( $parsed_args['link_image'] ) ) ? $parsed_args['link_image'] : '';
	$link_target      = ( ! empty( $parsed_args['link_target'] ) ) ? $parsed_args['link_target'] : '';
	$link_visible     = ( ! empty( $parsed_args['link_visible'] ) ) ? $parsed_args['link_visible'] : 'Y';
	$link_owner       = ( ! empty( $parsed_args['link_owner'] ) ) ? $parsed_args['link_owner'] : get_current_user_id();
	$link_notes       = ( ! empty( $parsed_args['link_notes'] ) ) ? $parsed_args['link_notes'] : '';
	$link_description = ( ! empty( $parsed_args['link_description'] ) ) ? $parsed_args['link_description'] : '';
	$link_rss         = ( ! empty( $parsed_args['link_rss'] ) ) ? $parsed_args['link_rss'] : '';
	$link_rel         = ( ! empty( $parsed_args['link_rel'] ) ) ? $parsed_args['link_rel'] : '';
	$link_category    = ( ! empty( $parsed_args['link_category'] ) ) ? $parsed_args['link_category'] : array();
	$link_updated     = gmdate( 'Y-m-d H:i:s', current_time( 'timestamp', 0 ) );

	// Make sure we set a valid category.
	if ( ! is_array( $link_category ) || 0 === count( $link_category ) ) {
		$link_category = array( get_option( 'default_link_category' ) );
	}

	if ( $update ) {
		if ( false === $wpdb->update( $wpdb->links, compact( 'link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss', 'link_updated' ), compact( 'link_id' ) ) ) {
			if ( $wp_error ) {
				return new WP_Error( 'db_update_error', __( 'Could not update link in the database.' ), $wpdb->last_error );
			} else {
				return 0;
			}
		}
	} else {
		if ( false === $wpdb->insert( $wpdb->links, compact( 'link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss', 'link_updated' ) ) ) {
			if ( $wp_error ) {
				return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database.' ), $wpdb->last_error );
			} else {
				return 0;
			}
		}
		$link_id = (int) $wpdb->insert_id;
	}

	wp_set_link_cats( $link_id, $link_category );

	if ( $update ) {
		/**
		 * Fires after a link was updated in the database.
		 *
		 * @since 2.0.0
		 *
		 * @param int $link_id ID of the link that was updated.
		 */
		do_action( 'edit_link', $link_id );
	} else {
		/**
		 * Fires after a link was added to the database.
		 *
		 * @since 2.0.0
		 *
		 * @param int $link_id ID of the link that was added.
		 */
		do_action( 'add_link', $link_id );
	}
	clean_bookmark_cache( $link_id );

	return $link_id;
}
```

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

- 2.0.0 — Introduced.

## Связанные

Использует: [`wp_set_link_cats`](https://chugunov.pro/api-wordpress/functions/wp_set_link_cats/), [`current_time`](https://chugunov.pro/api-wordpress/functions/current_time/), [`sanitize_bookmark`](https://chugunov.pro/api-wordpress/functions/sanitize_bookmark/), [`clean_bookmark_cache`](https://chugunov.pro/api-wordpress/functions/clean_bookmark_cache/), `wpdb::update`, `wpdb::insert`, [`__`](https://chugunov.pro/api-wordpress/functions/__/), [`wp_unslash`](https://chugunov.pro/api-wordpress/functions/wp_unslash/), [`wp_parse_args`](https://chugunov.pro/api-wordpress/functions/wp_parse_args/), [`do_action`](https://chugunov.pro/api-wordpress/functions/do_action/), [`get_option`](https://chugunov.pro/api-wordpress/functions/get_option/), [`get_current_user_id`](https://chugunov.pro/api-wordpress/functions/get_current_user_id/), `WP_Error::__construct`.
Используется в: [`wp_update_link`](https://chugunov.pro/api-wordpress/functions/wp_update_link/), [`edit_link`](https://chugunov.pro/api-wordpress/functions/edit_link/).

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