---
title: "Allegro odrzuca zdjęcia AVIF z BaseLinkera i WooCommerce | ASAPDevs"
description: "Dlaczego Allegro odrzuca zdjęcia AVIF z WooCommerce przez BaseLinkera, skąd „czasem” (sufiks Imagify) i jak podmienić format na JPEG tylko w API sklepu."
url: https://asapdevs.it/blog/allegro-odrzuca-zdjecia-avif-baselinker-woocommerce
last_updated: 2026-10-12
---

# Allegro odrzuca zdjęcia z BaseLinkera: format AVIF w REST API WooCommerce

26 280 plików AVIF, 527 trafiało do API, a Allegro odrzucało zdjęcia tylko czasem. Przyczyna siedziała w nazwie pliku i w jednym warunku funkcji, a sama konwersja plików nie wystarczyła.

Allegro odrzuca zdjęcia z BaseLinkera, gdy sklep WooCommerce oddaje przez REST API pliki AVIF, których nie ma na liście obsługiwanych formatów. Problem pojawia się „czasem”, bo wtyczka do kompresji obrazów nazywa pliki niekonsekwentnie, a kod podmieniający format szuka zamiennika po złej nazwie. Poniżej opisujemy, jak znaleźliśmy przyczynę przy katalogu z ponad 26 tysiącami plików AVIF, jak wygląda naprawa i dlaczego sama konwersja plików nie wystarczyła.

## Dlaczego Allegro odrzuca zdjęcia z WooCommerce przez BaseLinkera?

Allegro w dokumentacji zdjęć wymienia formaty jpg, jpeg i png, a webp dopuszcza tylko przy wystawianiu przez API lub z pliku. AVIF na tej liście nie ma. BaseLinker pobiera adresy zdjęć z REST API sklepu, więc jeśli WooCommerce zwróci `.avif`, oferta trafia do Allegro z plikiem, którego platforma nie zaakceptowała, a zdjęcie jest odrzucane.

Zgłoszenie brzmiało: „BaseLinker dostaje AVIF”. Kluczowe było jedno słowo, które padło przy opisie: czasem. Część zdjęć tych samych produktów przechodziła bez problemu, a część nie. To zwykle oznacza, że błąd nie leży w konfiguracji, tylko w warunku, który spełnia tylko część plików.

## Dlaczego problem pojawia się tylko czasem?

Wtyczka Imagify zapisuje skonwertowany plik pod nazwą z sufiksem, a oryginał zostaje bez niego. Funkcja w motywie podmieniała adres AVIF na JPEG, ale zmieniała wyłącznie rozszerzenie i zostawiała nazwę bazową. W praktyce wyglądało to tak:

```
na dysku:         X-1-compressed.avif  +  X-1.webp
funkcja szukała:  X-1-compressed.webp  ->  nie istnieje  ->  fallback zwracał AVIF
```

Pliki bez sufiksu (`X-8.avif` obok `X-8.jpg`) działały poprawnie. Stąd „czasem”. Skala: w katalogu leżało 26 280 oryginałów w AVIF, a do API w tej postaci trafiały 527 zdjęć. Dla pozostałych funkcja trafiała w JPEG obok pliku.

## Jak dobrać zamiennik dla AVIF w odpowiedzi API?

Zamiast jednej podmiany rozszerzenia funkcja próbuje kolejno kilku źródeł i zatrzymuje się na pierwszym, które istnieje:

1.  JPEG lub PNG obok pliku,
2.  JPEG lub PNG w kopii zapasowej Imagify,
3.  to samo po obcięciu sufiksów `-compressed` i `-scaled`,
4.  największa miniatura w bezpiecznym formacie z metadanych (zwykle 768×768),
5.  WebP, jako ostatnia deska (Allegro dopuszcza go tylko przy wystawianiu przez API),
6.  adres wejściowy bez zmian.

WebP stoi po miniaturach celowo. JPEG 768×768 to format z podstawowej listy Allegro, więc jest bezpieczniejszy niż WebP w pełnym rozmiarze. Funkcja dostaje też opcjonalnie identyfikator załącznika, który REST API i tak ma w odpowiedzi, więc nie trzeba przy każdym zdjęciu wywoływać `attachment_url_to_postid()`.

**Front sklepu zostaje bez zmian.** Podmiana działa tylko w filtrach `woocommerce_rest_prepare_product_object` i wariantu, z priorytetem 30. Odwiedzający sklep dalej dostają AVIF i WebP, a integracje bezpieczny JPEG.

**Masz ten sam problem?** Allegro odrzuca zdjęcia, a sklep ma tysiące plików? Znajdziemy, gdzie trafia zły format, i naprawimy to bez ruszania frontu. [Opisz sytuację →](https://asapdevs.it/offers/integracja-baselinker)

## Co zrobić z plikami, które nie mają żadnego zamiennika?

Dwanaście plików AVIF nie miało żadnego JPEG ani PNG: wszystkie pochodziły z kreatora produktów, który zapisywał obrazy od razu w nowoczesnym formacie. Zamienniki wygenerowaliśmy jednorazowym skryptem na serwerze (`avifdec`, potem `convert -quality 88`) i zapisaliśmy obok pliku AVIF pod tą samą nazwą bazową, żeby trafiały w pierwszy krok łańcucha. Całą partię konwersji AVIF do JPEG (1 515 plików) skończyliśmy bez pominięć i bez błędów, a skan API pokazał zero AVIF.

## Dlaczego zamieniliśmy też WebP i co poszło nie tak z bramką?

Po AVIF zostało 1 511 zdjęć w WebP, wgranych przez kreator produktów bez oryginału i bez kopii w Imagify. Allegro dopuszcza WebP przy wystawianiu przez API, a zgłoszenie dotyczyło AVIF, ale za zgodą klienta ujednoliciliśmy format, żeby żadna ścieżka wystawiania nie zależała od tego wyjątku. Skrypt wsadowy przeszedł po 1 508 plikach z listy (`-quality 88 -strip`), zostawiając pliki WebP na miejscu. Zakończenie wyglądało dobrze: 692 pliki przekonwertowane, 816 pominiętych, bo JPEG już leżał obok, zero błędów.

API mimo to dalej zwracało WebP, czyli nie to, czego chcieliśmy. Funkcja nazywała się „podmień AVIF” i na samym początku miała warunek:

```
$ext = strtolower( pathinfo( $url, PATHINFO_EXTENSION ) );
if ( $ext !== 'avif' ) {
    return $url;   // WebP wychodził tutaj i nigdy nie szukał JPEG-a
}
```

Cały sześciostopniowy łańcuch był dla WebP nieosiągalny. Poprawka polegała na przepuszczeniu przez bramkę obu rozszerzeń, a resztę zostawiliśmy bez zmian. Test logiki objął siedem przypadków: WebP z JPEG obok, WebP bez JPEG, regresja AVIF, AVIF z sufiksem, JPEG nietknięty, WebP z backupu Imagify i WebP z miniatury.

## Jak potwierdzić, że wszystkie zdjęcia są bezpieczne dla Allegro?

Wynik sprawdzamy pełnym skanem. Skrypt przeszedł po 18 233 załącznikach produktowych (miniatury i galerie), wywołał tę samą funkcję co REST API i policzył rozszerzenia:

| Etap | JPEG / PNG | AVIF | WebP |
| --- | --- | --- | --- |
| Po naprawie AVIF | 16 722 | 0 | 1 511 |
| Po konwersji i poprawce bramki | 18 233 | 0 | 0 |

Sprawdziliśmy też front: plik `-550x550.avif` dalej odpowiadał 200 z nagłówkiem `image/avif`, a plik `.webp` z `image/webp`.

## Dlaczego deploy na produkcję cicho się nie powiódł?

Przy wdrożeniu poprawki `git pull` na serwerze zatrzymał się z komunikatem, że lokalne zmiany w pliku z funkcją zostałyby nadpisane. Plik został wcześniej wgrany ręcznie przy pierwszym hotfiksie i nigdy nie trafił do repozytorium. Zanim go odrzuciliśmy, porównaliśmy `git diff` z gałęzią docelową: wersja na dysku okazała się starsza od docelowej i zawierała tylko nasze własne zmiany. Dopiero wtedy zrobiliśmy kopię i nadpisaliśmy ją.

Reguła jest prosta. Ręcznie wgrany plik blokuje każdy kolejny deploy, a przy złym odruchu można nadpisać cudzy hotfix. Przed odrzuceniem zmiany obejrzyj diff.

## Kiedy zlecić to specjalistom?

Gdy oferty na Allegro wychodzą bez zdjęć, a w sklepie jest tysiące plików w różnych formatach i nie wiadomo, które z nich dotyczy problem. W ASAPDevs naprawiamy łańcuch od strony sklepu w ramach [integracji z BaseLinkerem](https://asapdevs.it/offers/integracja-baselinker), a jeśli chcesz zrezygnować z pośrednika, zobacz [alternatywę dla BaseLinkera](https://asapdevs.it/offers/alternatywa-baselinker). Jak opisywać oferty w API, piszemy w artykule o [Allegro API w praktyce](https://asapdevs.it/blog/allegro-api-opis-oferty-sekcje-najnizsza-cena).

Źródła: pomoc Allegro, [zasady dla zdjęć](https://help.allegro.com/pl/sell/c/zasady-dla-zdjec) (formaty jpg, jpeg, png; webp przy wystawianiu przez API); dokumentacja [WooCommerce REST API](https://woocommerce.github.io/woocommerce-rest-api-docs/) (odpowiedź produktu z polem images); dokumentacja [Imagify](https://imagify.io/documentation/) (konwersja do WebP i AVIF).

![Kamil Perzowski](https://asapdevs.it/assets/img/kamil-asapdevs-112.webp)

Kamil Perzowski

CEO i co-founder ASAPDevs. Programuje i utrzymuje sklepy, aplikacje webowe i serwery klientów. [LinkedIn](https://www.linkedin.com/in/kamil-perzowski/) · [Integracja z BaseLinkerem](https://asapdevs.it/offers/integracja-baselinker)

Masz ten sam problem?

## Allegro odrzuca zdjęcia z Twojego sklepu?

![Kamil Perzowski, ASAPDevs](https://asapdevs.it/assets/img/kamil-asapdevs-112.webp)

Kamil Perzowski

CEO & Co-founder, ASAPDevs

Ustalamy, w którym miejscu łańcucha trafia nieobsługiwany format, naprawiamy to po stronie API sklepu i sprawdzamy cały katalog.

![Google](https://asapdevs.it/assets/img/logos/google.svg)Opinie klientów w Google

> Gorąco polecam! Profesjonalne podejście do klienta, pełne zaanagażowanie i pomysłowość! Pan Kamil sprawnie odpowiadał na wszelkie prośby i sugestie. Zlecenie wykonane zgodnie z moimi oczekiwaniami

Marlena U. · opinia w Google

> Współpracujemy już z 5 lat w różnych aspektach. Sam fakt, że nigdy nie przeszło mi przez myśl współpracować z inna firmą mówi o wszystkim Pełen profesjonalizm, terminowość, kreatywność, inicjatywy...długo by wymieniać. Wszystko się zgadza. Naprawdę polecam.

Michał B. · opinia w Google

FAQ

## Pytania i odpowiedzi

### Czy Allegro przyjmuje zdjęcia w formacie AVIF lub WebP?

Dokumentacja Allegro wymienia formaty jpg, jpeg i png, a webp dopuszcza przy wystawianiu przez API lub z pliku. AVIF na liście nie ma. U nas odrzucane były zdjęcia AVIF, a WebP zamieniliśmy na JPEG, żeby żadna ścieżka wystawiania nie zależała od tego wyjątku.

### Dlaczego zdjęcia z tego samego produktu raz przechodzą, a raz nie?

Zależy to od nazwy pliku. Wtyczka do optymalizacji obrazów zapisuje skonwertowany plik pod nazwą z sufiksem (na przykład -compressed), a kod szukający zamiennika zakładał tę samą nazwę bazową. Pliki bez sufiksu miały zamiennik, pliki z sufiksem nie.

### Czy trzeba wyłączyć AVIF na stronie sklepu?

Nie. Podmianę formatu robimy tylko w odpowiedziach REST API dla integracji, a front sklepu dalej serwuje AVIF i WebP. Klienci sklepu dostają lekkie pliki, a Allegro i BaseLinker bezpieczny JPEG.

### Jak sprawdzić, ile zdjęć w sklepie wciąż zwraca AVIF lub WebP do API?

Przejdź skryptem po wszystkich załącznikach produktów (miniatura i galeria), wywołaj tę samą funkcję, która podmienia adresy w REST API, i policz rozszerzenia wyników. Wynik sprawdzasz po wdrożeniu, nie po samej konwersji plików.

## Przeczytaj też

### [Integracja z BaseLinkerem](https://asapdevs.it/offers/integracja-baselinker)

Sklep, BaseLinker i marketplace, które działają razem.

### [Alternatywa dla BaseLinkera](https://asapdevs.it/offers/alternatywa-baselinker)

Własna integracja z Allegro bez abonamentu pośrednika.

### [Allegro API w praktyce](https://asapdevs.it/blog/allegro-api-opis-oferty-sekcje-najnizsza-cena)

Czytaj

### [Wolny WooCommerce mimo cache](https://asapdevs.it/blog/wolny-woocommerce-przyczyny)

Czytaj
