# wp_check_for_changed_slugs()

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

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

## Сигнатура

```php
wp_check_for_changed_slugs( int $post_id, WP_Post $post, WP_Post $post_before )
```

## Описание

Функция используется при обновлении объекта записи любого типа и сравнивает текущий и предыдущий объекты записи.
Если слаг изменился и ещё не входит в число старых слагов, он добавляется в метаполе записи ('_wp_old_slug'), где хранятся старые слаги этой записи.
Наиболее логичное применение функции — перенаправление изменившихся объектов записей, чтобы те, кто ссылался на изменившуюся запись, перенаправлялись на новую запись.

## Параметры

- `$post_id` `int` — обязательный. Идентификатор записи.
- `$post` `WP_Post` — обязательный. Объект записи.
- `$post_before` `WP_Post` — обязательный. Предыдущий объект записи.

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

Файл: `wp-includes/post.php:7345`

```php
function wp_check_for_changed_slugs( $post_id, $post, $post_before ) {
	// Don't bother if it hasn't changed.
	if ( $post->post_name === $post_before->post_name ) {
		return;
	}

	// We're only concerned with published, non-hierarchical objects.
	if ( ! ( 'publish' === $post->post_status || ( 'attachment' === $post->post_type && 'inherit' === $post->post_status ) )
		|| is_post_type_hierarchical( $post->post_type )
	) {
		return;
	}

	$old_slugs = (array) get_post_meta( $post_id, '_wp_old_slug' );

	// If we haven't added this old slug before, add it now.
	if ( ! empty( $post_before->post_name ) && ! in_array( $post_before->post_name, $old_slugs, true ) ) {
		add_post_meta( $post_id, '_wp_old_slug', $post_before->post_name );
	}

	// If the new slug was used previously, delete it from the list.
	if ( in_array( $post->post_name, $old_slugs, true ) ) {
		delete_post_meta( $post_id, '_wp_old_slug', $post->post_name );
	}
}
```

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

- 2.1.0 — Introduced.

## Связанные

Использует: [`add_post_meta`](https://chugunov.pro/api-wordpress/functions/add_post_meta/), [`delete_post_meta`](https://chugunov.pro/api-wordpress/functions/delete_post_meta/), [`is_post_type_hierarchical`](https://chugunov.pro/api-wordpress/functions/is_post_type_hierarchical/), [`get_post_meta`](https://chugunov.pro/api-wordpress/functions/get_post_meta/).

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