prefix . sanitize_key($evqra_table_name); $wpdb->query($wpdb->prepare('DROP TABLE IF EXISTS %i', $evqra_table)); } /* Remove managed pages created by EventQora. */ $evqra_managed_pages = get_posts([ 'post_type' => 'page', 'post_status' => 'any', 'posts_per_page' => -1, 'fields' => 'ids', 'meta_key' => '_evqra_managed_page', 'meta_value' => '1', ]); foreach ((array) $evqra_managed_pages as $evqra_page_id) { wp_delete_post(absint($evqra_page_id), true); } /* Remove plugin-owned content when an explicit full purge is requested. */ foreach (['evqra_booking', 'evqra_event', 'evqra_venue', 'evqra_organizer'] as $post_type) { $page = 1; do { $posts = get_posts([ 'post_type' => $post_type, 'post_status' => 'any', 'posts_per_page' => 200, 'paged' => $page, 'fields' => 'ids', 'orderby' => 'ID', 'order' => 'ASC', ]); foreach ((array) $posts as $post_id) { wp_delete_post(absint($post_id), true); } $page++; } while (count($posts) === 200); } /* Remove the plugin taxonomy and its terms. */ $evqra_term_ids = get_terms([ 'taxonomy' => 'evqra_event_category', 'hide_empty' => false, 'fields' => 'ids', ]); if (!is_wp_error($evqra_term_ids)) { foreach ((array) $evqra_term_ids as $evqra_term_id) { wp_delete_term(absint($evqra_term_id), 'evqra_event_category'); } } /* Remove only media explicitly imported and marked by EventQora. */ $evqra_attachments = get_posts([ 'post_type' => 'attachment', 'post_status' => 'any', 'posts_per_page' => -1, 'fields' => 'ids', 'meta_key' => '_evqra_imported_attachment', 'meta_value' => '1', ]); foreach ((array) $evqra_attachments as $evqra_attachment_id) { wp_delete_attachment(absint($evqra_attachment_id), true); } /* Remove known Core settings. */ $evqra_options = [ 'evqra_db_version', 'evqra_rsvp_db_version', 'evqra_rewrite_version', 'evqra_my_bookings_page_id', 'evqra_payment_page_id', 'evqra_events_page_id', 'evqra_venues_page_id', 'evqra_categories_page_id', 'evqra_organizers_page_id', 'evqra_page_my_bookings_id', 'evqra_page_payment_id', 'evqra_page_events_id', 'evqra_page_venues_id', 'evqra_page_categories_id', 'evqra_page_organizers_id', 'evqra_currency', 'evqra_date_format', 'evqra_timezone', 'evqra_default_view', 'evqra_events_per_page', 'evqra_calendar_first_day', 'evqra_directory_settings', 'evqra_event_email_settings', 'evqra_disable_admin_emails', 'evqra_disable_frontend_emails', 'evqra_google_maps_api_key', 'evqra_google_maps_zoom', 'evqra_google_maps_enabled', 'evqra_event_settings', ]; foreach ($evqra_options as $evqra_option) { delete_option($evqra_option); } /* PayPal credentials/status options are all Core-owned. */ $evqra_paypal_options = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like('evqra_paypal_') . '%' ) ); foreach ((array) $evqra_paypal_options as $evqra_option_name) { delete_option($evqra_option_name); } /* Remove EventQora transients without touching unrelated plugin data. */ $evqra_like = '%' . $wpdb->esc_like('_transient_evqra_') . '%'; $evqra_timeout_like = '%' . $wpdb->esc_like('_transient_timeout_evqra_') . '%'; $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->options} WHERE option_name LIKE %s OR option_name LIKE %s", $evqra_like, $evqra_timeout_like)); /* Site-level copies of known options on multisite. */ foreach ($evqra_options as $evqra_option) { delete_site_option($evqra_option); }