• Здравствуйте, Александр!

    Если удалить изображение товара, то оно не будет синхронизироваться повторно. Это связано с тем, что сопоставления MD5-хэша изображения и соотвествующего ему идентификатора вложения хранятся в опции edi_image_map_key, которая никак не обновляется при удалении вложения.

    Предлагаю добавить простую проверку на существование вложения. Если вложение с указанным идентификатором больше не существует, оно будет загружено заново и ProductImagesParser::upload_image() обновит опцию edi_image_map_key:

    // src/Parsers/ProductImagesParser.php
    if ( is_null( $image_id ) || is_null( get_post( $image_id ) ) ) {
        $image_id = $this->upload_image( $image, $guid );
    }

    Прилагаю патч: https://gist.github.com/voronkovich/9edb27954745832ccfe8c039c0ef84b2

    BTW, в опции со временем будет мусор накапливаться, возможно лучше использовать метаполя.

    The page I need help with: [log in to see the link]

Viewing 1 replies (of 1 total)
  • Thread Starter Oleg Voronkovich

    (@voronkovich)

    Чуть изменил патч. Всё-таки использовать get_post() для проверки существования записи не очень хорошая идея т.к. записи сохраняются в объектный кэш, что может привести к избыточному потреблению памяти. Лучше использовать простую функцию для проверки:

    function post_exists( int $post_id ): bool {
        global $wpdb;
    
        return (bool) $wpdb->get_var(
            "SELECT COUNT(*) FROM {$wpdb->posts} WHERE id={$post_id}"
        );
    }
Viewing 1 replies (of 1 total)
  • The topic ‘Проблема с загрузкой изображений товаров’ is closed to new replies.