Здравсвуйте.
Не могу понять почему при удаление плагина не срабатывают все запросы к базе.
Плагин создает произвольный тип записи "квартиры" и две таксономии: "количество комнат" и "этажность".
При удаление плагина, хочу удалять все записи и таксономии, что были созданы при его работе. С удалением произвольного типа записи -разобрался, делаю это таким образом:
function remove_type_flats()
{
$params = [
'posts_per_page' => -1,
'post_type' => 'flats',
'post_status' => [
'publish',
'future',
'draft',
'pending',
'private',
'trash',
'auto - draft',
'inherit',
]
];
$query = new WP_Query($params);
if ($query->have_posts()) :
while ($query->have_posts()) : $query->the_post();
wp_delete_post($query->post->ID, true);
endwhile;
endif;
}
remove_type_flats();
А вот с далением такономий возникли проблемы. Не знаю есть ли альтернатива или нет. Но смог реализовать частичное удаленеи таксономий запросами к базе:
function drop_custom_table()
{
global $wpdb;
$terms = $wpdb->prefix . 'terms';
$term_taxonomy = $wpdb->prefix . 'term_taxonomy';
$term_relationships = $wpdb->prefix . 'term_relationships';
$wpdb->query("DELETE FROM $term_taxonomy WHERE taxonomy='rooms'"); // этот запрос отрабатывает корректно, записи из таблицы "term_taxonomy" - удаляются
$wpdb->query("DELETE FROM $term_taxonomy WHERE taxonomy='floors'"); // этот запрос отрабатывает корректно, записи из таблицы "term_taxonomy" - удаляются
// Этот пример я взял с wp-kama: "<a href="https://wp-kama.ru/id_978/20-poleznyih-sql-zaprosov-dlya-wordpress.html#ochistka-kesha-fida">Удаление неиспользуемых элементов таксономии из БД одним SQL запросом</a>"
$wpdb->query("DELETE FROM $terms WHERE term_id IN (SELECT term_id FROM $term_taxonomy WHERE count = 0 )"); // этот запрос не работает, после удаления планинаев, term'ы от удаленных таксономий так и остаются :(
$wpdb->query("DELETE FROM $term_taxonomy WHERE term_id NOT IN (SELECT term_id FROM $terms"); //не уверен на счет этого запроса, так как первые два удаляют термы по taxonomy=''
$wpdb->query("DELETE FROM $term_relationships WHERE term_taxonomy_id NOT IN (SELECT term_taxonomy_id FROM $term_taxonomy)"); // этот запрос отрабатывает корректно, записи из "term_relationships" удаляются.
}
drop_custom_table();
ПОдскажите, как скорректировать