Поддержка Проблемы и решения Массовое восстановление товара из корзины

  • Добрый день. Столкнулся с проблемой, за неделю с помощью гугла решить не смог. Ситуация такая: есть сайт с плагином woo commerce. Есть 1с база с выгрузкой на сайт. Все работало хорошо, но с недавних пор, при обновлении товара на сайте весь товар , который не был затронут выгрузкой автоматически помещается в корзину. Сразу этого не заметили, теперь у меня в корзине больше 2 тысяч позиций, а восстановить я могу только по 20 за раз… Другой вопрос почему так происходит, но он не первостепенный. Нужно массово восстановить товар на сайте. Прошу помощи. Да, и воспроизводили такую проблему на тестовых рессурсах. Плагин выгрузки для 1с , woo commerce exchange. Он, вроде, единственный рабочий.

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Anonymous User 17160716

    (@anonymized-17160716)

    komputer39, привет.

    Способ мазохиста: увеличить кол-во отображаемых позиций с 20 до 999 и в три захода выполнить задачу (не факт, что всё пройдёт гладко).

    Способ джедая: восстановить через запрос в БД.

    Способ падавана: воспользоваться wp_untrash_post().

    Я очень плох во всех этих делах, можно по подробнее про второй и третий? Или где можно почитать?

    Anonymous User 17160716

    (@anonymized-17160716)

    komputer39, если вы не очень разбираетесь в вопросе, тогда второй способ лучше тоже обойти стороной, а третий способ базово выглядит так:

    $postsintrash = get_posts( 'post_status=trash&numberposts=-1&fields=ids' );
    
    foreach ( $postsintrash as $post ) {
    	wp_update_post( array(
    		'ID'           => $post,
    		'post_status'  => 'publish'
    	) );
    }

    Можете его поместить в functions.php вашей темы, либо сделать функциональный плагин. Главное после восстановления записей этот код удалить, чтобы потом удаление ненужного контента происходило в штатном режиме. И, да, может быть в вашем случае нужно будет добавить конкретный post_type, если не хотите восстанавливать из корзины вообще все записи.

    Уточню: post_status также поменяйте на нужный вам. Основные статусы:
    publish — опубликованная запись;
    future — запланированная к публикации запись;
    draft — черновик;
    pending — ожидающая проверки и утверждения запись;
    private — доступ к записи только для администратора.

    вставил в functions.но что то ничего не происходит.может к товару из woocommerce это не подходит?

    • Ответ изменён 2 года, 11 месяцев назад пользователем komputer39.
    Anonymous User 17160716

    (@anonymized-17160716)

    komputer39,

    может к товару из woocommerce это не подходит?

    Я же уточнил про post_type:

    И, да, может быть в вашем случае нужно будет добавить конкретный post_type

    🙂

    То есть к строчке post_status=trash&numberposts=-1&fields=ids допишите post_type=product&, чтобы в итоге получилось так:

    $postsintrash = get_posts('post_type=product&post_status=trash&numberposts=-1&fields=ids');
    
    if ( $postsintrash ) {
    	foreach ( $postsintrash as $post ) {
    		wp_update_post( array(
    			'ID'           => $post,
    			'post_status'  => 'publish'
    		) );
    	}
    }

    Очень помогли! Спасибо!!!

    Anonymous User 17160716

    (@anonymized-17160716)

    komputer39, на здоровье! Рад помочь 🙂

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «Массовое восстановление товара из корзины» закрыта для новых ответов.