Problemy z niedziałającym zdjęciem (og:image) w Open Graph

Jeżeli natknęliście się u siebie w ostatnim czasie na problem z niedziałającymi znacznikami Open Graph to sprawdźcie czy przypadkiem nie pomoże Wam wyłączenie kompresji HTML 🙂

Dzisiaj rano znajomy napisał do mnie w sprawie problemu ze znacznikami Open Graph – w nowo dodanym poście na Facebooku nie pojawiała się miniaturka wpisu, a narzędzia debugujące informowały o braku metatagu definiującego og:image. Pytania by pewnie nie było gdyby fakt, że ów metatag w kodzie źródłowym był zdefiniowany.

Początkowo dziwne wydawało się to, że problem pojawił się niedawno – zatem podejrzenia padły na wtyczkę od SEO, która odpowiadała za dodawanie metatagów dla Open Graph w kodzie strony. Jednak moje testy z przywróceniem na testowej stronie tej wtyczki do starszej wersji (polecam do tego wtyczkę WP-Rollback) nie dawały widocznych zmian w kodzie wynikowym. Dlatego wróciłem do pierwszego skojarzenia – w kodzie metatagi były dziwnie sformatowane:

<meta
content="..." /><meta
content="..." /><meta

Krótka weryfikacja listy zainstalowanych pluginów i padła prośba o wyłączenie kompresji HTML we wtyczce W3 Total Cache.

Po wyłączeniu kompresji HTML problem zniknął 🙂

Wnioski?

Dziwnie sformatowany kod HTML może powodować nieprzewidziane problemy – jeżeli masz podobny problem – zajrzyj do kodu źródłowego swojej strony. Uwaga! Zrób to poprzez „Zobacz źródło strony” a nie poprzez narzędzia developerskie, gdyż np. Chrome Dev Tools pokazują nam strukturę DOM taką jaką ją zrozumiała przeglądarka, a nie taką jaka odpowiada źródłowemu kodowi HTML.

Na tę chwilę wygląda to tak, że pojawił się w którymś momencie konflikt pomiędzy W3 Total Cache i Yoast SEO. Warto sprawdzić to u siebie, gdyż mając automatyczne publikowanie linków do wpisu w serwisach społecznościowych może minąć trochę czasu zanim zorientujemy się, że obrazki nie działają.

Dlaczego tak się stało?

Najprawdopodobniej bot skanujący strony nie dopuszcza znaków nowej linii w znacznikach meta – być może specjalnie, być może to błąd programisty, który zapomniał dodać flagi włączającej odpowiedni tryb w wykorzystywanym wyrażeniu regularnym.