WordPress

rozwój motywu – Po pewnym czasie brakuje danych metadanych załącznika „rozmiary”

  • 30 listopada, 2022
  • 3 min read
rozwój motywu – Po pewnym czasie brakuje danych metadanych załącznika „rozmiary”


Lubimy używać niestandardowych rozmiarów obrazów dla niestandardowych motywów WP. W ten sposób możemy zapewnić odpowiednie obrazy dla niestandardowych elementów i możemy upewnić się, że obrazy nie będą ładowane zbyt duże lub zbyt ciężkie. Teraz napotkaliśmy problem; większość obrazów jest ładowana w „pełnym” rozmiarze obrazu, nawet jeśli poprawny rozmiar obrazu jest obecny w folderze uploads.

Odkryliśmy, że w przypadku tych obrazów w pliku postmeta _wp_attachment_metadata brakuje informacji o wygenerowanych rozmiarach obrazów.

Po ponownym wygenerowaniu rozmiarów obrazów, _wp_attachment_metadata dla wszystkich obrazów zawiera tablicę „sizes” poprawnie. Pozwala nam to wyświetlić prawidłowe rozmiary obrazów.

Jednak dane „rozmiarów” znikają po pewnym czasie, więc „pełny” rozmiar obrazu jest wyświetlany ponownie. Okres, w którym to się dzieje, wydaje się być losowy.

Znalazłem podobne pytania, ale żadne nie wydaje się dotyczyć sedna problemu. Czy ktoś może wyjaśnić, dlaczego brakuje tych danych? Czy istnieje podstawowa funkcjonalność WordPressa, która sprawdza _wp_attachment_metadata dla każdego obrazu w powtarzającej się akcji? Czy coś tam jest nie tak?

Powiązane pytanie: Regeneruj brakujące _wp_attachment_metadata

Warto przeczytać!  Jak zbudować witrynę aukcyjną taką jak eBay za pomocą WordPress

Podobne pytanie teraz daje 404:

Dzięki @TomJNowell dowiedziałem się, że aby odpowiedzieć na moje pytanie, potrzebne są dodatkowe informacje.

Jak wygląda środowisko?

  • Strona internetowa została stworzona na podstawie szablonu WordPress od roots.io: Bedrock

  • Zawiera konfigurację multisite z obecnie jedną witryną. Używamy środowiska multisite, aby móc prezentować witrynę w wielu językach. Do tłumaczenia ciągów używamy wtyczki Loco Translate. Na razie potrzebny jest tylko jeden język.

  • To sklep internetowy, dlatego używamy WooCommerce

  • Jak już wspomniano, stworzyliśmy niestandardowy motyw WordPress zawierający szablony WooCommerce, które mają zastąpić domyślne motywy WooCommerce.

  • Użyte wtyczki: ACF Pro, Bugsnag, Gravity Forms, Loco Translate, Mollie dla WooCommerce, Premmerce Permalink Manager dla WooCommerce, WooCommerce, numer VAT UE dla WooCommerce, faktury PDF dla WooCommerce, rozszerzenie xCore Rest API, Yoast SEO.

  • Oprócz tego zainstalowaliśmy „Regenerate miniatures”, aby móc generować niestandardowe rozmiary obrazów. Ta wtyczka jest nadal aktywna, ponieważ naprawiła również objawy naszego problemu. Po kliknięciu „regenerate miniatures” rozmiary obrazów zostały ponownie dodane do _wp_attachment_metadata.

  • Nie ma aktywnej wtyczki czyszczącej i nigdy żadna nie była aktywna.

  • W naszym motywie nie stosujemy niestandardowego kodu, który miałby wpływ na funkcjonalność _wp_attachment_metadata, poza funkcją add_image_size.

Warto przeczytać!  include - get_option() nie zwraca oczekiwanej wartości z wtyczki

Więcej informacji o problemie

  • Dotyczy wszystkich obrazów.
  • Nie mogliśmy wykryć żadnego „harmonogramu”, w którym występuje problem. Po naprawieniu objawów za pomocą wtyczki „Regenerate Thumbnails” otrzymaliśmy powiadomienie od naszego klienta, że ​​problem wystąpił ponownie.
  • Nie natrafiliśmy na żadne błędy, powiadomienia ani żadne rejestrowanie dotyczące problemu. Bugsnag również nie wykrywa żadnych problemów.
  • Rozmiary obrazów są dostępne w folderze przesłanych plików, brakuje tylko metadanych.

Naprawiliśmy objawy

Na razie naprawiliśmy objawy, uruchamiając cronjob w skrypcie WP CLI. Cronjob uruchamia się co 3 godziny. Używamy: wp media regenerate Zainstalowaliśmy skrypt i cronjob Po problem został wykryty.

Skrypt:

#!/bin/bash

WPPATH="/home/example/domains/example.nl/public_html/web/wp"

for URL in = $(/usr/local/bin/wp site list --fields=url --format=csv --path="$WPPATH")
do
    /usr/local/bin/wp media regenerate --only-missing --url="$URL" --path="$WPPATH" --yes --quiet
done


Źródło