WP_Customize_Manager::trash_changeset_post()publicWP 4.9.0

Trashes or deletes a changeset post.

The following re-formulates the logic from wp_trash_post() done in wp_publish_post(). The reason for bypassing wp_trash_post() that it will mutate the the post_content and the post_name when they should be untouched.

Method of the class: WP_Customize_Manager{}

Return

Mixed. A WP_Post object for the trashed post or an empty value on failure.

Usage

$WP_Customize_Manager = new WP_Customize_Manager();
$WP_Customize_Manager->trash_changeset_post( $post );
$post(int|WP_Post) (required)
The changeset post.

Notes

  • See: wp_trash_post()
  • Global. wpdb. $wpdb WordPress database abstraction object.

Changelog

Since 4.9.0 Introduced.

WP_Customize_Manager::trash_changeset_post() code WP 6.4.3

public function trash_changeset_post( $post ) {
	global $wpdb;

	$post = get_post( $post );

	if ( ! ( $post instanceof WP_Post ) ) {
		return $post;
	}
	$post_id = $post->ID;

	if ( ! EMPTY_TRASH_DAYS ) {
		return wp_delete_post( $post_id, true );
	}

	if ( 'trash' === get_post_status( $post ) ) {
		return false;
	}

	/** This filter is documented in wp-includes/post.php */
	$check = apply_filters( 'pre_trash_post', null, $post );
	if ( null !== $check ) {
		return $check;
	}

	/** This action is documented in wp-includes/post.php */
	do_action( 'wp_trash_post', $post_id );

	add_post_meta( $post_id, '_wp_trash_meta_status', $post->post_status );
	add_post_meta( $post_id, '_wp_trash_meta_time', time() );

	$old_status = $post->post_status;
	$new_status = 'trash';
	$wpdb->update( $wpdb->posts, array( 'post_status' => $new_status ), array( 'ID' => $post->ID ) );
	clean_post_cache( $post->ID );

	$post->post_status = $new_status;
	wp_transition_post_status( $new_status, $old_status, $post );

	/** This action is documented in wp-includes/post.php */
	do_action( "edit_post_{$post->post_type}", $post->ID, $post );

	/** This action is documented in wp-includes/post.php */
	do_action( 'edit_post', $post->ID, $post );

	/** This action is documented in wp-includes/post.php */
	do_action( "save_post_{$post->post_type}", $post->ID, $post, true );

	/** This action is documented in wp-includes/post.php */
	do_action( 'save_post', $post->ID, $post, true );

	/** This action is documented in wp-includes/post.php */
	do_action( 'wp_insert_post', $post->ID, $post, true );

	wp_after_insert_post( get_post( $post_id ), true, $post );

	wp_trash_post_comments( $post_id );

	/** This action is documented in wp-includes/post.php */
	do_action( 'trashed_post', $post_id );

	return $post;
}