class-import-woothemes-seo.php
2.48 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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?php
/**
* File with the class to handle data from WooThemes SEO.
*
* @package WPSEO\Admin\Import\Plugins
*/
/**
* Class WPSEO_Import_WooThemes_SEO
*
* Class with functionality to import & clean WooThemes SEO post metadata.
*/
class WPSEO_Import_WooThemes_SEO extends WPSEO_Plugin_Importer {
/**
* The plugin name.
*
* @var string
*/
protected $plugin_name = 'WooThemes SEO';
/**
* Meta key, used in SQL LIKE clause for delete query.
*
* @var string
*/
protected $meta_key = 'seo_title';
/**
* Array of meta keys to detect and import.
*
* @var array
*/
protected $clone_keys = [
[
'old_key' => 'seo_description',
'new_key' => 'metadesc',
],
[
'old_key' => 'seo_title',
'new_key' => 'title',
],
[
'old_key' => 'seo_noindex',
'new_key' => 'meta-robots-noindex',
],
[
'old_key' => 'seo_follow',
'new_key' => 'meta-robots-nofollow',
],
];
/**
* Holds the meta fields we can delete after import.
*
* @var array
*/
protected $cleanup_metas = [
'seo_follow',
'seo_noindex',
'seo_title',
'seo_description',
'seo_keywords',
];
/**
* Holds the options we can delete after import.
*
* @var array
*/
protected $cleanup_options = [
'seo_woo_archive_layout',
'seo_woo_single_layout',
'seo_woo_page_layout',
'seo_woo_wp_title',
'seo_woo_meta_single_desc',
'seo_woo_meta_single_key',
'seo_woo_home_layout',
];
/**
* Cleans up the WooThemes SEO settings.
*
* @return bool Cleanup status.
*/
protected function cleanup() {
$result = $this->cleanup_meta();
if ( $result ) {
$this->cleanup_options();
}
return $result;
}
/**
* Removes the Woo Options from the database.
*
* @return void
*/
private function cleanup_options() {
foreach ( $this->cleanup_options as $option ) {
delete_option( $option );
}
}
/**
* Removes the post meta fields from the database.
*
* @return bool Cleanup status.
*/
private function cleanup_meta() {
foreach ( $this->cleanup_metas as $key ) {
$result = $this->cleanup_meta_key( $key );
if ( ! $result ) {
return false;
}
}
return true;
}
/**
* Removes a single meta field from the postmeta table in the database.
*
* @param string $key The meta_key to delete.
*
* @return bool Cleanup status.
*/
private function cleanup_meta_key( $key ) {
global $wpdb;
$wpdb->query(
$wpdb->prepare(
"DELETE FROM {$wpdb->postmeta} WHERE meta_key = %s",
$key
)
);
return $wpdb->__get( 'result' );
}
}