| 1 |
<?php |
| 2 |
|
| 3 |
global $wpdb; |
| 4 |
$wpdb->termmeta = $wpdb->prefix . 'termmeta'; // registers the termmeta table in wpdb |
| 5 |
register_taxonomy('language', 'post', array('label' => false, 'query_var'=>'lang')); // temporarily register the language taxonomy |
| 6 |
|
| 7 |
$languages = get_terms('language', array('hide_empty'=>false)); |
| 8 |
|
| 9 |
foreach ($languages as $lang) { |
| 10 |
// delete references to this language in all posts |
| 11 |
$args = array('numberposts'=> -1, 'post_type'=>'any', 'post_status'=>'any'); |
| 12 |
$posts = get_posts($args); |
| 13 |
foreach ($posts as $post) { |
| 14 |
delete_post_meta($post->ID, '_lang-'.$lang->slug); |
| 15 |
} |
| 16 |
// delete references to this language in categories & post tags |
| 17 |
$terms = get_terms(array('category', 'post_tag'), 'get=all'); |
| 18 |
foreach ($terms as $term) { |
| 19 |
delete_metadata('term', $term->term_id, '_language'); |
| 20 |
delete_metadata('term', $term->term_id, '_lang-'.$lang->slug); |
| 21 |
} |
| 22 |
// finally delete the language itself |
| 23 |
wp_delete_term($lang->term_id, 'language'); |
| 24 |
} |
| 25 |
|
| 26 |
// delete the termmeta table only if it is empty as other plugins may use it |
| 27 |
$table = $wpdb->termmeta; |
| 28 |
$count = $wpdb->get_var("SELECT COUNT(*) FROM $table;"); |
| 29 |
if (!$count) { |
| 30 |
$wpdb->query("DROP TABLE $table;"); |
| 31 |
unset($wpdb->termmeta); |
| 32 |
} |
| 33 |
|
| 34 |
// delete options |
| 35 |
delete_option('polylang'); |
| 36 |
delete_option('polylang_nav_menus'); |
| 37 |
delete_option('polylang_widgets'); |
| 38 |
delete_option('widget_polylang_widget'); // automatically created by WP |
| 39 |
?> |
| 40 |
|