WC_Post_Data::delete_post( mixed $id )

Removes variations etc belonging to a deleted post, and clears transients.


Description Description


Parameters Parameters

$id

(Required) ID of post being deleted.


Top ↑

Source Source

File: includes/class-wc-post-data.php

	public static function delete_post( $id ) {
		if ( ! current_user_can( 'delete_posts' ) || ! $id ) {
			return;
		}

		$post_type = get_post_type( $id );

		switch ( $post_type ) {
			case 'product':
				$data_store = WC_Data_Store::load( 'product-variable' );
				$data_store->delete_variations( $id, true );
				$data_store->delete_from_lookup_table( $id, 'wc_product_meta_lookup' );
				$parent_id = wp_get_post_parent_id( $id );

				if ( $parent_id ) {
					wc_delete_product_transients( $parent_id );
				}
				break;
			case 'product_variation':
				$data_store = WC_Data_Store::load( 'product' );
				$data_store->delete_from_lookup_table( $id, 'wc_product_meta_lookup' );
				wc_delete_product_transients( wp_get_post_parent_id( $id ) );
				break;
			case 'shop_order':
				global $wpdb;

				$refunds = $wpdb->get_results( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type = 'shop_order_refund' AND post_parent = %d", $id ) );

				if ( ! is_null( $refunds ) ) {
					foreach ( $refunds as $refund ) {
						wp_delete_post( $refund->ID, true );
					}
				}
				break;
		}
	}


Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.