# wp_trash_post()

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

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

## Сигнатура

```php
wp_trash_post( int $post_id ): WP_Post|false|null
```

## Описание

Если Корзина отключена, запись или страница удаляется окончательно.
См. alsowp_delete_post()

## Параметры

- `$post_id` `int` — необязательный. ID записи. По умолчанию — ID глобального объекта $post, если EMPTY_TRASH_DAYS равно true.

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

`WP_Post|false|null`

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

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

```php
function wp_trash_post( $post_id = 0 ) {
	if ( ! EMPTY_TRASH_DAYS ) {
		return wp_delete_post( $post_id, true );
	}

	$post = get_post( $post_id );

	if ( ! $post ) {
		return $post;
	}

	if ( 'trash' === $post->post_status ) {
		return false;
	}

	$previous_status = $post->post_status;

	/**
	 * Filters whether a post trashing should take place.
	 *
	 * @since 4.9.0
	 * @since 6.3.0 Added the `$previous_status` parameter.
	 *
	 * @param bool|null $trash           Whether to go forward with trashing.
	 * @param WP_Post   $post            Post object.
	 * @param string    $previous_status The status of the post about to be trashed.
	 */
	$check = apply_filters( 'pre_trash_post', null, $post, $previous_status );

	if ( null !== $check ) {
		return $check;
	}

	/**
	 * Fires before a post is sent to the Trash.
	 *
	 * @since 3.3.0
	 * @since 6.3.0 Added the `$previous_status` parameter.
	 *
	 * @param int    $post_id         Post ID.
	 * @param string $previous_status The status of the post about to be trashed.
	 */
	do_action( 'wp_trash_post', $post_id, $previous_status );

	add_post_meta( $post_id, '_wp_trash_meta_status', $previous_status );
	add_post_meta( $post_id, '_wp_trash_meta_time', time() );

	$post_updated = wp_update_post(
		array(
			'ID'          => $post_id,
			'post_status' => 'trash',
		)
	);

	if ( ! $post_updated ) {
		return false;
	}

	wp_trash_post_comments( $post_id );

	/**
	 * Fires after a post is sent to the Trash.
	 *
	 * @since 2.9.0
	 * @since 6.3.0 Added the `$previous_status` parameter.
	 *
	 * @param int    $post_id         Post ID.
	 * @param string $previous_status The status of the post at the point where it was trashed.
	 */
	do_action( 'trashed_post', $post_id, $previous_status );

	return $post;
}
```

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

- 2.9.0 — Introduced.

## Связанные

Использует: [`wp_update_post`](https://chugunov.pro/api-wordpress/functions/wp_update_post/), [`wp_delete_post`](https://chugunov.pro/api-wordpress/functions/wp_delete_post/), [`wp_trash_post_comments`](https://chugunov.pro/api-wordpress/functions/wp_trash_post_comments/), [`add_post_meta`](https://chugunov.pro/api-wordpress/functions/add_post_meta/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/), [`do_action`](https://chugunov.pro/api-wordpress/functions/do_action/), [`get_post`](https://chugunov.pro/api-wordpress/functions/get_post/).
Используется в: `WP_REST_Templates_Controller::delete_item`, [`_wp_keep_alive_customize_changeset_dependent_auto_drafts`](https://chugunov.pro/api-wordpress/functions/_wp_keep_alive_customize_changeset_dependent_auto_drafts/), [`_wp_delete_customize_changeset_dependent_auto_drafts`](https://chugunov.pro/api-wordpress/functions/_wp_delete_customize_changeset_dependent_auto_drafts/), `WP_REST_Posts_Controller::delete_item`, [`wp_ajax_trash_post`](https://chugunov.pro/api-wordpress/functions/wp_ajax_trash_post/), [`wp_delete_attachment`](https://chugunov.pro/api-wordpress/functions/wp_delete_attachment/), [`wp_delete_post`](https://chugunov.pro/api-wordpress/functions/wp_delete_post/).

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