Он удаляет товары, если одновременно отображается статус «Нет в наличии» и сам товар редактировался более 60 дней назад.
- Как изменить этот код, чтобы он считал 60 дней с момента статус «нет в наличии» установлен для всех его товаров (включая все вариации?)
Теперь он отсчитывает от даты последней правки товара - и это не совсем корректно.< /p> - Также после того, как благодаря этому коду товар перемещается в корзину, а затем автоматически удаляется оттуда из настроек woocommerce, для некоторых по этой причине он все еще отображается в каталоге.
В частности: в подкатегории «Кактус» был 1 товар. Он не редактировался 60 дней и имел статус «нет в наличии» — был удален. Но если зайти в настройках администратора "Товары" - "Категории" - "Растения" - "Кактус" - в счетчике количества товаров в категории я вижу один, как будто этого товара и не было удалено.
add_action('init', 'automatically_trash_sold_items_in_woocommerce_callback');
function automatically_trash_sold_items_in_woocommerce_callback() {
if ( false === ( $automatically_trash_sold_items_in_woocommerce = get_transient( 'automatically_trash_sold_items_in_woocommerce' ) ) ) {
global $wpdb;
$wpdb->query( "UPDATE {$wpdb->posts} P JOIN {$wpdb->postmeta} PM ON P.ID = PM.post_id
SET P.post_status='trash'
WHERE P.post_type='product'
AND PM.meta_key='_stock_status'
AND PM.meta_value='outofstock'
AND P.post_modified < DATE_SUB( NOW(), INTERVAL 60 DAY )");
set_transient( 'automatically_trash_sold_items_in_woocommerce', true, 12 * HOUR_IN_SECONDS );
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... k-products