-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuninstall.php
More file actions
112 lines (98 loc) · 3.41 KB
/
Copy pathuninstall.php
File metadata and controls
112 lines (98 loc) · 3.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php
/**
* Plugin uninstall cleanup for Ultimate SEO WP.
*
* @package UltimateSEOWP
*/
if (!defined('WP_UNINSTALL_PLUGIN')) {
exit;
}
/**
* Remove all plugin data for the current site.
*/
function useo_uninstall_cleanup_site_data() {
global $wpdb;
$option_keys = [
'useo_features',
'useo_meta_defaults',
'useo_og_defaults',
'useo_twitter_defaults',
'useo_website_profile',
'useo_sitemap_settings',
'useo_robots_txt',
'useo_llms_txt',
'useo_analysis_settings',
'useo_indexnow_settings',
'useo_indexnow_queue',
'useo_advanced_settings',
'useo_data_version',
'useo_license_key',
'useo_license_status',
'useo_license_last_check',
'useo_license_domain',
'useo_license_error',
'useo_store_api_base',
'useo_update_info_cache',
];
foreach ($option_keys as $option_key) {
delete_option($option_key);
}
wp_clear_scheduled_hook('useo_indexnow_process_queue');
$post_meta_keys = [
'_useo_title',
'_useo_description',
'_useo_target_keyword',
'_useo_target_keywords',
'_useo_keyword_synonyms',
'_useo_internal_links_outbound',
'_useo_internal_links_inbound',
'_useo_canonical',
'_useo_robots',
'_useo_og_title',
'_useo_og_description',
'_useo_og_image',
'_useo_twitter_title',
'_useo_twitter_description',
'_useo_twitter_image',
'_useo_schema_json',
];
$term_meta_keys = [
'_useo_title',
'_useo_description',
'_useo_canonical',
'_useo_robots',
'_useo_og_title',
'_useo_og_description',
'_useo_og_image',
'_useo_twitter_title',
'_useo_twitter_description',
'_useo_twitter_image',
];
$post_meta_placeholders = implode(', ', array_fill(0, count($post_meta_keys), '%s'));
$term_meta_placeholders = implode(', ', array_fill(0, count($term_meta_keys), '%s'));
// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
$wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->postmeta} WHERE meta_key IN ({$post_meta_placeholders})", $post_meta_keys));
// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
$wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->termmeta} WHERE meta_key IN ({$term_meta_placeholders})", $term_meta_keys));
// Remove analysis and admin notice transients written by the plugin.
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_useo_analysis_%'");
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout_useo_analysis_%'");
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_useo_license_notice_%'");
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout_useo_license_notice_%'");
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}useo_redirects");
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}useo_internal_links");
}
if (is_multisite()) {
$site_ids = get_sites([
'fields' => 'ids',
'number' => 0,
]);
$current_blog_id = get_current_blog_id();
foreach ($site_ids as $site_id) {
switch_to_blog((int) $site_id);
useo_uninstall_cleanup_site_data();
}
switch_to_blog($current_blog_id);
} else {
useo_uninstall_cleanup_site_data();
}