Удаление товаров с одинаковыми артикулами в Woocommerce

Комментариев: 2

Сделал простенький скрипт, который удаляет дубликаты товаров с одинаковыми артикулами.

Обязательно, перед использованием скрипты сделайте резервную копию базу данных.

  1. Создайте файл dublicate.php в корневой директории сайта и поместите туда следующий код:
<?php
//Подключаем ядро WordPress
require_once 'wp-load.php';
global $wpdb;

//Выполняем запрос к базе данных для поиска дубликатов по SKU
$result = $wpdb->get_results( "SELECT a.post_name,a.post_title,a.ID,b.meta_value as _sku FROM wp_posts a
INNER JOIN (SELECT meta_value,max(post_id) AS post_id FROM wp_postmeta WHERE meta_key='_sku' 
GROUP BY meta_value HAVING COUNT(meta_value) > 1 ) b ON a.ID=b.post_id WHERE post_type = 'product' AND   post_status = 'publish';");

//Удаляем циклом записи с найденными дубликатами
foreach ($result as $delete) {

$deleted = wp_delete_post($delete->ID, true);
}

?>
  1. Теперь просто обратитесь по адресу: http://ваш-сайт/dublicate.php.

Возможно скрипт не успеет отработать за 30 секунд. Поэтому вы можете запустить его повторно, чтобы удалить то, что он не успел удалить за первый проход.

Уведомлять о новых комментариях
Уведомлять
guest
2 комментариев
Inline Feedbacks
View all comments
Fjdj
Fjdj
2 лет назад

С любой версией работает? А если дубли загружаются при синхронизации со складом?