Moves a post or page to the Trash
Description
If Trash is disabled, the post or page is permanently deleted.
See also
Parameters
$post_id
intoptional- Post ID. Default is the ID of the global
$post
ifEMPTY_TRASH_DAYS
equals true.
Source
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; }
Hooks
- apply_filters( ‘pre_trash_post’,
bool|null $trash ,WP_Post $post ,string $previous_status ) Filters whether a post trashing should take place.
- do_action( ‘trashed_post’,
int $post_id ,string $previous_status ) Fires after a post is sent to the Trash.
- do_action( ‘wp_trash_post’,
int $post_id ,string $previous_status ) Fires before a post is sent to the Trash.
Changelog
Version | Description |
---|---|
2.9.0 | Introduced. |
Basic Example
Trash the default WordPress Post, “Hello World,” which has an ID of ‘1’.