Внимание. Перед использованием крайне рекомендуется сделать полную резервную копию (файлы + база данных) для возможности восстановления, так как изменения носят массовый характер.
Приведенный ниже скрипт позволяет удалить товары (а также любые другие элементы инфоблока), созданные ранее указанного периода, вместе с изображениями:
<?php
$IBLOCK_ID = 1; // id инфоблока товаров для обработки
$FILTER_DATE_INTERVAL = '-3 months'; // период проверки создания (будут обработаны и удалены товары, созданные ранее)
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
\Bitrix\Main\Loader::includeModule('iblock');
\Bitrix\Main\Loader::IncludeModule('disk');
$filterDate = new \Bitrix\Main\Type\DateTime();
$filterDate->add($FILTER_DATE_INTERVAL);
$rsElements = CIblockElement::GetList(
array('ID' => 'ASC'),
array(
'IBLOCK_ID' => $IBLOCK_ID,
'<DATE_CREATE' => $filterDate,
),
false,
array(),
array(
'ID',
'DATE_CREATE',
'PREVIEW_PICTURE',
'DETAIL_PICTURE',
// 'PROPERTY_MORE_PHOTO'
)
);
$deleteCheck = false;
while ($arElement = $rsElements->GetNext()) {
$deleteCheck = true;
// удаляем товар
CIBlockElement::Delete($arElement['ID']);
// удаляем картинки
if ($arElement['PREVIEW_PICTURE']) {
$rsFile = CFile::GetByID($arElement['PREVIEW_PICTURE']);
$arFile = $rsFile->Fetch();
// (CFile::Delete($arElement['PREVIEW_PICTURE']);
if (file_exists($_SERVER['DOCUMENT_ROOT'] . $arFile['SRC'])) unlink($_SERVER['DOCUMENT_ROOT'] . $arFile['SRC']);
}
if ($arElement['DETAIL_PICTURE']) {
$rsFile = CFile::GetByID($arElement['DETAIL_PICTURE']);
$arFile = $rsFile->Fetch();
// CFile::Delete($arElement['DETAIL_PICTURE']);
if (file_exists($_SERVER['DOCUMENT_ROOT'] . $arFile['SRC'])) unlink($_SERVER['DOCUMENT_ROOT'] . $arFile['SRC']);
}
$morePhotos = CIBlockElement::GetProperty($IBLOCK_ID, $arElement['ID'], "sort", "asc", array('CODE' => 'MORE_PHOTO'));
while ($mp = $morePhotos->GetNext()) {
$rsFile = CFile::GetByID($mp['VALUE']);
$arFile = $rsFile->Fetch();
// CFile::Delete($mp['VALUE']);
if (file_exists($_SERVER['DOCUMENT_ROOT'] . $arFile['SRC'])) unlink($_SERVER['DOCUMENT_ROOT'] . $arFile['SRC']);
}
print($arElement['ID'] . ' deleted' . '<br>');
}
if (!$deleteCheck) print('Products to delete not found!');
Проверялось на 1с-Битрикс: Управление сайтом 20.0.1650. (версия модуля интернет-магазин 20.0.687).