prefix . 'arrayfunnel_order_bumps', $wpdb->prefix . 'arrayfunnel_analytics', $wpdb->prefix . 'arrayfunnel_abandoned_carts', ); foreach ( $arrayfunnel_tables as $arrayfunnel_table ) { // Table names cannot be bound as placeholders; each value here is built from $wpdb->prefix // and a literal suffix, so no request data reaches the statement. // phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared $wpdb->query( 'DROP TABLE IF EXISTS `' . esc_sql( $arrayfunnel_table ) . '`' ); } $arrayfunnel_option_patterns = array( $wpdb->esc_like( 'arrayfunnel_' ) . '%', '_transient_' . $wpdb->esc_like( 'arrayfunnel_' ) . '%', '_transient_timeout_' . $wpdb->esc_like( 'arrayfunnel_' ) . '%', ); foreach ( $arrayfunnel_option_patterns as $arrayfunnel_option_pattern ) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", $arrayfunnel_option_pattern ) ); } wp_clear_scheduled_hook( 'arrayfunnel_check_abandoned_carts' ); wp_clear_scheduled_hook( 'arrayfunnel_cleanup_analytics' ); wp_clear_scheduled_hook( 'arrayfunnel_cleanup_abandoned_carts' ); wp_cache_flush();