WC_Post_Data::delete_post_data
Removes variations etc. belonging to a deleted post, and clears transients.
Method of the class: WC_Post_Data{}
No Hooks.
Returns
null. Nothing (null).
Usage
$result = WC_Post_Data::delete_post_data( $id );
- $id(mixed) (required)
- ID of post being deleted.
Changelog
| Since 9.8.0 | Introduced. |
WC_Post_Data::delete_post_data() WC Post Data::delete post data code WC 10.8.1
public static function delete_post_data( $id ) {
$container = wc_get_container();
$post_type = self::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' );
$container->get( ProductAttributesLookupDataStore::class )->on_product_deleted( $id );
$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 ) );
$container->get( ProductAttributesLookupDataStore::class )->on_product_deleted( $id );
break;
case 'shop_order':
case DataSynchronizer::PLACEHOLDER_ORDER_POST_TYPE:
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;
}
}