Zacznij
Jak odświeżać kanały produktów za pomocą zadań cron - AdTribes
  1. Strona główna
  2. Baza wiedzy
  3. Ogólne wskazówki dotyczące kanałów
  4. Jak odświeżać kanały produktów za pomocą zadań cron

Jak odświeżać kanały produktów za pomocą zadań cron

Jeśli Twoje środowisko hostingowe ogranicza wbudowany harmonogram zadań WordPressa lub potrzebujesz odświeżania kanałów informacyjnych o precyzyjnej godzinie, której nie obejmują interwały wtyczki (godzinowy, dwa razy dziennie, dzienny), możesz zamiast tego uruchamiać odświeżanie kanałów informacyjnych za pomocą zadania cron na poziomie serwera. Daje to precyzyjną kontrolę nad czasem i pozwala uniknąć polegania na ruchu odwiedzających w celu uruchomienia harmonogramu WordPressa.

Częste objawy: kanały utknęły na starych danych, czasy odświeżania zmieniają się między wizytami lub środowiska hostingowe, które wyłączają wp-cron.

Product Feed Pro i Product Feed Elite obsługują oba podejścia: polecenie WP-CLI (zalecane) i samodzielny skrypt PHP dla serwerów bez WP-CLI.

Jeśli Twoje kanały nie aktualizowały się zgodnie z harmonogramem na serwerze rozróżniającym wielkość liter (Linux, Kinsta lub podobne), był to znany błąd naprawiony w wersji 13.5.4. Aktualizacja wtyczki rozwiązuje problem bez konieczności niestandardowej konfiguracji cron.

Zanim zaczniesz

  • Product Feed Pro lub Product Feed Elite zainstalowane i aktywne
  • Co najmniej jeden kanał produktu utworzony i skonfigurowany
  • Dostęp SSH lub cPanel do serwera w celu dodawania zadań cron
  • Identyfikator Twojego kanału (patrz Krok 1 w dowolnej z poniższych metod)
  • Wersja 13.5.4 lub nowsza dla obsługi WP-CLI

WP-CLI jest dostępny u większości zarządzanych hostingów WordPress. Jest to najprostszy i najbardziej niezawodny sposób na uruchomienie odświeżania kanału informacyjnego za pomocą zadania cron na serwerze. Brak pliku PHP do zarządzania, nie jest wymagane uruchamianie WordPressa.

Krok 1: Znajdź swój identyfikator kanału

  1. Przejdź do Kanał produktu → Zarządzaj kanałami w swoim panelu administracyjnym WordPress.
  2. Kliknij kanał, który chcesz odświeżyć.
  3. Spójrz na pasek adresu przeglądarki. Identyfikatorem kanału jest wartość parametru id — na przykład admin.php?page=adt-edit-feed&id=123 oznacza, że Twój identyfikator kanału to 123.
Pasek adresu przeglądarki pokazujący adres URL administracji WordPress z podświetloną stroną page=adt-edit-feed&id=13.

Krok 2: Wyłącz wbudowany interwał odświeżania

Aby zapobiec uruchomieniu przez harmonogram wtyczki zduplikowanego odświeżania obok zadania cron:

  1. Podczas edycji kanału przejdź do zakładki Ogólne.
  2. Ustaw Interwał odświeżania na Brak odświeżania.
  3. Kliknij Zapisz zmiany.
Plik z interwałem odświeżania „Brak odświeżania”

Krok 3: Dodaj zadanie cron serwera

Na swoim serwerze dodaj wpis cron, który uruchamia wp adt-feed refresh zgodnie z wybranym harmonogramem. Zastąp /path-to-wordpress rzeczywistym katalogiem głównym Twojej witryny, a 123 identyfikatorem Twojego feedu:

0 2 * * * cd /path-to-wordpress && wp adt-feed refresh 123 >> /tmp/feed-refresh-123.log 2>&1

Ten przykład uruchamia się codziennie o 2:00. Dostosuj wyrażenie harmonogramu do swoich potrzeb.

Jeśli wp nie znajduje się w domyślnym PATH serwera, użyj pełnej ścieżki do pliku wykonywalnego WP-CLI (np. /usr/local/bin/wp) zamiast samego wp.

Aby odświeżyć wiele feedów w jednym zadaniu cron, wymień ich identyfikatory oddzielone spacjami:

0 2 * * * cd /path-to-wordpress && wp adt-feed refresh 123 456 789

Metoda 2: Skrypt PHP

Użyj tej metody, jeśli Twój serwer nie obsługuje WP-CLI.

Skrypt PHP inicjuje generowanie feedu, umieszczając je w kolejce za pomocą Action Scheduler. Rzeczywiste przetwarzanie odbywa się w tle — feed nie zostanie zaktualizowany w momencie uruchomienia skryptu. Upewnij się, że cron WordPress (lub oddzielny cron serwera uruchamiający wp-cron.php) jest aktywny, aby Action Scheduler mógł ukończyć zadania.

Krok 1: Znajdź swój identyfikator kanału

Wykonaj te same kroki, co w Metodzie 1, Kroku 1 powyżej. Kliknij swój kanał informacyjny, aby go edytować i odczytaj wartość id= z adresu URL.

Krok 2: Utwórz skrypt PHP

Utwórz nowy plik o nazwie feed-refresh-123.php (zastąp 123 identyfikatorem swojego feedu) i zapisz go w katalogu swojego motywu potomnego — na przykład wp-content/themes/your-child-theme/feed-refresh-123.php.

Dodaj ten kod do pliku, zastępując 123 swoim rzeczywistym identyfikatorem feedu:

/**
 * Product Feed Generation Cron Script
 */

// Start timing
$start_time = microtime(true);

// Simple logging function
function log_message($message) {
    $timestamp = date('Y-m-d H:i:s');
    $log_entry = "[$timestamp] $message";
    
    error_log($log_entry);
    echo $log_entry . "\n";
}

log_message("Feed generation started");

try {
    // Load WordPress (3 levels up from wp-content/themes/your-child-theme/)
    require_once(__DIR__ . '/../../../wp-load.php');
    
    $feed_id = 123; // Change this to your actual feed ID
    
    $feed = \AdTribes\PFP\Helpers\Product_Feed_Helper::get_product_feed($feed_id);
    
    if ($feed) {
        $feed->generate();
        
        $execution_time = round(microtime(true) - $start_time, 2);
        log_message("Feed ID $feed_id generated successfully in {$execution_time}s");
        
    } else {
        log_message("ERROR: Failed to get feed ID $feed_id");
    }
    
} catch (Exception $e) {
    log_message("ERROR: " . $e->getMessage());
}

Krok 3: Wyłącz wbudowany interwał odświeżania

Wykonaj te same kroki, co w Metodzie 1, Kroku 2 powyżej — ustaw Interwał odświeżania na Brak odświeżania w zakładce Ogólne.

Krok 4: Dodaj zadanie cron na serwerze

Dodaj następujący wpis cron na swoim serwerze, zastępując ścieżki swoimi rzeczywistymi wartościami:

0 2 * * * php /path-to-wordpress/wp-content/themes/your-child-theme/feed-refresh-123.php >> /path-to-wordpress/wp-content/themes/your-child-theme/feed-refresh-123.log 2>&1

To uruchamia się codziennie o 2:00 w nocy. Wynik jest zapisywany do pliku dziennika w tym samym katalogu, dzięki czemu możesz sprawdzić, czy skrypt został uruchomiony i czy wygenerował jakieś błędy.

Aby uruchamiać wiele kanałów informacyjnych niezależnie, utwórz osobny plik PHP i wpis cron dla każdego kanału.

Rozwiązywanie problemów

Kanał informacyjny nie aktualizuje się po uruchomieniu crona
Najpierw sprawdź plik dziennika, do którego zapisuje zadanie cron. Jeśli dziennik jest pusty, wpis cron nie jest uruchamiany. Sprawdź ponownie ścieżkę pliku i czy demon cron jest aktywny na Twoim serwerze.

Jeśli dziennik pokazuje dane wyjściowe, ale kanał informacyjny nadal się nie aktualizuje, zweryfikuj poprawność identyfikatora kanału: otwórz kanał informacyjny w panelu administracyjnym WordPressa i potwierdź, że wartość id= w adresie URL pasuje do identyfikatora w Twoim skrypcie lub poleceniu WP-CLI.
Zaplanowane kanały informacyjne nie aktualizują się na serwerze Linux lub Kinsta
Był to znany błąd (naprawiony w wersji 13.5.4), w którym wtyczka zapisywała odświeżony kanał informacyjny do nazwy pliku pisanego małymi literami, podczas gdy adres URL kanału informacyjnego używał oryginalnej nazwy pliku z wielkimi i małymi literami. W systemach plików rozróżniających wielkość liter są to dwa różne pliki. Zaktualizuj wtyczkę do wersji 13.5.4 lub nowszej, aby rozwiązać ten problem.
Polecenie WP-CLI zwraca „nie znaleziono polecenia”
Plik wykonywalny wp może nie znajdować się w zmiennej PATH Twojego serwera. Skontaktuj się ze swoim hostingodawcą, aby potwierdzić dostępność WP-CLI i poprosić o pełną ścieżkę. Następnie zaktualizuj swój wpis cron, aby użyć pełnej ścieżki (np. /usr/local/bin/wp adt-feed refresh 123).
Skrypt PHP zwraca krytyczny błąd dotyczący brakującej klasy
Klasa AdTribes\PFP\Helpers\Product_Feed_Helper jest dostępna dopiero po załadowaniu wtyczki przez wp-load.php. Upewnij się, że linia require_once wskazuje na poprawną ścieżkę wp-load.php. Ścieżka musi odpowiadać katalogowi głównemu Twojej instalacji WordPressa — nie podkatalogowi.

FAQ

Czy potrzebuję Product Feed Elite do tego?
Nie. Obie metody działają z Product Feed Pro (darmowy) i Product Feed Elite.
Czy mogę zachować włączony wbudowany interwał odświeżania obok zadania cron na serwerze?
Możesz, ale nie jest to zalecane. Uruchomienie obu jednocześnie może spowodować dwukrotne generowanie pliku w krótkich odstępach czasu. Wyłącz wbudowany interwał i pozwól cronowi serwera kontrolować harmonogram.
Jak znaleźć właściwy wyraz crona?
Użyj generatora wyrażeń crona (wyszukaj „generator wyrażeń crona”), aby zbudować potrzebny harmonogram. Pięć pól to: minuta, godzina, dzień miesiąca, miesiąc, dzień tygodnia.
Czy podejście ze skryptem PHP działa na hostingu współdzielonym?
Tak, o ile masz dostęp do cPanel lub SSH, aby dodawać zadania cron, a serwer może uruchamiać PHP z linii poleceń. Jeśli Twój hosting nie obsługuje PHP z linii poleceń ani zadań cron, zamiast tego użyj wbudowanego ustawienia Interwał odświeżania wtyczki.

Potrzebujesz więcej pomocy?

Jeśli korzystasz z Product Feed Elite, otwórz zgłoszenie pomocy technicznej, a nasz zespół pomoże Ci skonfigurować ustawienia crona dla Twojego środowiska.

Jeśli korzystasz z Product Feed Pro, zadaj pytanie na forum pomocy technicznej WordPress.org.

Czy ten artykuł był pomocny?

Powiązane artykuły

Dokończ zakup
AdTribes WooCommerce Product Feed

Najlepsza wtyczka WooCommerce do kanałów produktów

  • AdTribes Pty Ltd
    ABN: 40 675 636 816
Produkt
Zasoby i informacje
Witryny partnerskie
Rymera