Сделал простенький скрипт, который удаляет дубликаты товаров с одинаковыми артикулами.
Обязательно, перед использованием скрипты сделайте резервную копию базу данных.
- Создайте файл 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);
}
?>
- Теперь просто обратитесь по адресу: http://ваш-сайт/dublicate.php.
Возможно скрипт не успеет отработать за 30 секунд. Поэтому вы можете запустить его повторно, чтобы удалить то, что он не успел удалить за первый проход.
С любой версией работает? А если дубли загружаются при синхронизации со складом?