prefix . 'replyping_subscriptions'; $wpdb->query( $wpdb->prepare( 'DROP TABLE IF EXISTS %i', $table ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange -- Custom table; dropping on uninstall. delete_option( 'replyping_version' ); delete_option( 'replyping_db_version' ); delete_option( 'replyping_settings' ); // Rate-limit transients. $wpdb->query( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Custom table; one-off uninstall cleanup. $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s OR option_name LIKE %s", $wpdb->esc_like( '_transient_replyping_' ) . '%', $wpdb->esc_like( '_transient_timeout_replyping_' ) . '%' ) ); // Comment meta. delete_metadata( 'comment', 0, '_replyping_queued', '', true ); delete_metadata( 'comment', 0, '_replyping_mailed', '', true ); delete_metadata( 'comment', 0, '_replyping_intent', '', true ); // Scheduled events. wp_unschedule_hook( 'replyping_send_notifications' ); wp_unschedule_hook( 'replyping_purge_pending' ); } if ( is_multisite() ) { foreach ( get_sites( array( 'fields' => 'ids', 'number' => 0 ) ) as $replyping_blog_id ) { switch_to_blog( (int) $replyping_blog_id ); replyping_uninstall_site(); restore_current_blog(); } } else { replyping_uninstall_site(); }