->delete_hpos_order_fulfillment_meta( $order_ids ); } /** * Delete fulfillment status meta from legacy postmeta table. * * @param array $order_ids Array of order IDs to delete fulfillment status meta for. */ private function delete_legacy_order_fulfillment_meta( $order_ids = array() ) { global $wpdb; if ( ! empty( $order_ids ) ) { $order_params = array_merge( array( '_fulfillment_status' ), $order_ids ); $wpdb->query( $wpdb->prepare( "DELETE pm FROM {$wpdb->postmeta} pm INNER JOIN {$wpdb->posts} p ON pm.post_id = p.ID WHERE p.post_type = 'shop_order' AND pm.meta_key = %s AND pm.post_id IN (" . implode( ',', array_fill( 0, count( $order_ids ), '%d' ) ) . ')', ...$order_params ) ); } else { $wpdb->query( $wpdb->prepare( "DELETE pm FROM {$wpdb->postmeta} pm INNER JOIN {$wpdb->posts} p ON pm.post_id = p.ID WHERE p.post_type = 'shop_order' AND pm.meta_key = %s", '_fulfillment_status' ) ); } } /** * Delete fulfillment status meta from HPOS meta table. * * @param array $order_ids Array of order IDs to delete fulfillment status meta for. */ private function delete_hpos_order_fulfillment_meta( $order_ids = array() ): void { global $wpdb; // Check if HPOS meta table exists. $table_name = $wpdb->prefix . 'wc_orders_meta'; if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name ) ) !== $table_name ) { return; } if ( ! empty( $order_ids ) ) { $order_params = array_merge( array( '_fulfillment_status' ), $order_ids ); $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}wc_orders_meta WHERE meta_key = %s AND order_id IN (" . implode( ',', array_fill( 0, count( $order_ids ), '%d' ) ) . ')', ...$order_params ) ); } else { $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}wc_orders_meta WHERE meta_key = %s", '_fulfillment_status' ) ); } } }