WP Desk Care - zadbaj o swój biznes online!

Sprawdzona opieka techniczna dla Twojego sklepu.

Jak sformatować timestamp w WooCommerce i wysłać go w e-mailu ShopMagic – Studium przypadku

Jak sformatować timestamp w WooCommerce i wysłać go w e-mailu ShopMagic

Automatyzacja w WooCommerce to ogromne ułatwienie dla właścicieli sklepów internetowych. Dzięki wtyczce ShopMagic można ustawiać spersonalizowane e-maile wysyłane do klientów lub zespołu obsługi w zależności od zdarzeń w sklepie.
Jednak czasami pojawiają się wyzwania, które wymagają od nas kreatywnego podejścia — szczególnie gdy dane w zamówieniu zapisane są w formacie mało czytelnym dla człowieka, np. w timestamp UNIX.

W tym studium przypadku pokażemy, jak rozwiązaliśmy dla klienta problem wyświetlania czytelnej daty dostawy w e-mailach ShopMagic. Dowiesz się, dlaczego standardowe metody nie zadziałały i jak krok po kroku wdrożyć skuteczny workaround, aby Twój sklep działał tak, jak oczekujesz.

Opis sytuacji i wyzwania

Jeden z naszych klientów, zgłosił następujący problem:

„Mam w zamówieniu pole meta, które przechowuje datę w formacie timestamp. Cachcę, aby w e-mailach wysyłanych przez automatyzację ShopMagic ta data była w czytelnym formacie (np. 08.12.2025 14:00). Niestety, użycie {{ order.meta | key: ‘delivery_timestamp’ }} w treści e-maila zwraca tylko surowy timestamp.”

Dlaczego to problem?

  • Timestamp to zapis czasu w sekundach od 1 stycznia 1970 roku — np. 1754661600.
  • Jest idealny do obliczeń i przechowywania danych, ale kompletnie nieczytelny dla klienta końcowego.
  • Wysyłanie go w tej formie w wiadomości e-mail wygląda nieprofesjonalnie i może wprowadzać w błąd.

Klient chciał, aby w automatyzacji timestamp był automatycznie zamieniany na ładną, czytelną datę.

Analiza przypadku w ShopMagic i próby rozwiązania

Na początku podeszliśmy do tematu standardowo — przez filtr w PHP, który przechwytuje wartość i konwertuje timestamp na format daty.

Pierwsze podejście – filtr shopmagic/core/placeholder/meta_value

add_filter( 'shopmagic/core/placeholder/meta_value', function ( $value, $meta_key ) {
if ( $meta_key === 'delivery_timestamp' && is_numeric( $value ) ) {
return date( 'd.m.Y H:i', intval( $value ) );
}
return $value;
}, 10, 2 );

Efekt: brak zmian. ShopMagic wciąż wyświetlał surowy timestamp.

Drugie podejście – filtr shopmagic/magic_tags/order.meta

add_filter( 'shopmagic/magic_tags/order.meta', function ( $value, $args ) {
if ( isset( $args['key'] ) && $args['key'] === 'delivery_timestamp' ) {
if ( is_numeric( $value ) ) {
return date( 'd.m.Y H:i', intval( $value ) );
}
}
return $value;
}, 10, 2 );

Efekt: ponownie brak rezultatu. Wartość wciąż trafiała do e-maila w oryginalnej formie.

Wnioski po testach

Po serii prób i testów okazało się, że wtyczka traktuje {{ order.meta | key: '...' }} jako bezpośredni, nierozszerzalny odczyt z bazy danych.
Wartość ładowana jest wcześniej, zanim jakikolwiek hook PHP ma szansę ją zmodyfikować. Próby modyfikacji w hookach before_run czy magic_tags_resolved również nie działały.

W praktyce oznaczało to, że modyfikacja istniejącego pola meta w locie jest w ShopMagic niemożliwa.

Ostateczne rozwiązanie – obejście ograniczeń ShopMagic

Skoro nie mogliśmy zmienić wartości istniejącego pola przed wysyłką, zdecydowaliśmy się na prosty, ale skuteczny workaround:

  1. Pozostawiamy surowy timestamp w osobnym polu meta (np. delivery_timestamp_raw).
  2. Dodajemy drugie pole meta (np. delivery_date_pretty) z już sformatowaną datą.
  3. W treści e-maila ShopMagic odwołujemy się do tego drugiego pola.

Rozwiązanie

add_action( 'woocommerce_checkout_update_order_meta', function( $order_id ) {
$order = wc_get_order( $order_id );
// Surowy timestamp (przykład: 2 dni później, godz. 14:00)
$timestamp = strtotime( '+2 days 14:00' );
$order->update_meta_data( 'delivery_timestamp_raw', $timestamp );
// Ładna, sformatowana data
$formatted = date( 'd.m.Y H:i', $timestamp );
$order->update_meta_data( 'delivery_date_pretty', $formatted );
$order->save();
});

W treści e-maila ShopMagic:
Delivery date: {{ order.meta | key: 'delivery_date_pretty' }}

Efekt w skrzynce odbiorczej klienta:
Delivery date: 08.12.2025 14:00

Dlaczego to działa?

  • ShopMagic odczytuje wartość pola meta bezpośrednio z bazy danych.
  • Jeśli podamy mu już gotową, sformatowaną wartość, wyświetli ją bez dodatkowych konwersji.
  • Zachowujemy również oryginalny timestamp, który wciąż może być używany do obliczeń w innych miejscach sklepu.

Praktyczne wskazówki (ShopMagic)

  • Używaj dwóch pól meta — jedno do obliczeń (_raw), drugie do prezentacji (_pretty).
  • Zawsze zapisuj daty w formacie zgodnym z WordPress timezone (wp_date()), aby uniknąć problemów ze strefami czasowymi.
  • Testuj w środowisku staging przed wdrożeniem na produkcji, szczególnie w przypadku automatyzacji wysyłających e-maile do klientów.
  • Dokumentacja ShopMagic: https://docs.shopmagic.app/

Podsumowanie i wnioski

Ten przypadek pokazał, że nawet jeśli wtyczka WooCommerce — w tym przypadku ShopMagic — nie daje natywnej możliwości modyfikacji danych przed wysyłką, można znaleźć proste obejście.
Kluczowe było zrozumienie, na jakim etapie ładowane są dane i przygotowanie ich w odpowiedniej formie jeszcze przed momentem wysyłki.

Korzyści z tego rozwiązania:

  • Czytelne, profesjonalne wiadomości e-mail.
  • Brak ingerencji w wewnętrzne mechanizmy ShopMagic.
  • Zachowanie elastyczności i możliwości obliczeń na oryginalnych danych.

Jeśli chcesz, aby Twój WooCommerce działał dokładnie tak, jak potrzebujesz, a automatyzacje były w pełni dopasowane do Twojego biznesu — wypróbuj ShopMagic i skorzystaj z naszej pomocy technicznej, która pomoże wdrożyć nawet niestandardowe scenariusze.

Zobacz inne artykuły

Dołącz do ponad 10 000 czytelników

Poradniki WooCommerce i nowości –
wprost na Twój e-mail.

Preferencje plików cookies

Inne

Inne niekategoryzowane pliki cookie to te, które są analizowane i nie zostały jeszcze przypisane do żadnej z kategorii.

Niezbędne

Niezbędne
Niezbędne pliki cookie są absolutnie niezbędne do prawidłowego funkcjonowania strony. Te pliki cookie zapewniają działanie podstawowych funkcji i zabezpieczeń witryny. Anonimowo.

Reklamowe

Reklamowe pliki cookie są stosowane, by wyświetlać użytkownikom odpowiednie reklamy i kampanie marketingowe. Te pliki śledzą użytkowników na stronach i zbierają informacje w celu dostarczania dostosowanych reklam.

Analityczne

Analityczne pliki cookie są stosowane, by zrozumieć, w jaki sposób odwiedzający wchodzą w interakcję ze stroną internetową. Te pliki pomagają zbierać informacje o wskaźnikach dot. liczby odwiedzających, współczynniku odrzuceń, źródle ruchu itp.

Funkcjonalne

Funkcjonalne pliki cookie wspierają niektóre funkcje tj. udostępnianie zawartości strony w mediach społecznościowych, zbieranie informacji zwrotnych i inne funkcjonalności podmiotów trzecich.

Wydajnościowe

Wydajnościowe pliki cookie pomagają zrozumieć i analizować kluczowe wskaźniki wydajności strony, co pomaga zapewnić lepsze wrażenia dla użytkowników.