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.
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
Metoda 1: WP-CLI (zalecane)
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
- Przejdź do Kanał produktu → Zarządzaj kanałami w swoim panelu administracyjnym WordPress.
- Kliknij kanał, który chcesz odświeżyć.
- Spójrz na pasek adresu przeglądarki. Identyfikatorem kanału jest wartość parametru
id— na przykładadmin.php?page=adt-edit-feed&id=123oznacza, że Twój identyfikator kanału to123.

Krok 2: Wyłącz wbudowany interwał odświeżania
Aby zapobiec uruchomieniu przez harmonogram wtyczki zduplikowanego odświeżania obok zadania cron:
- Podczas edycji kanału przejdź do zakładki Ogólne.
- Ustaw Interwał odświeżania na Brak odświeżania.
- Kliknij Zapisz zmiany.

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.
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.
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
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.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).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
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.

