Loslegen
Produktdaten-Feeds mit Cron-Jobs aktualisieren – AdTribes
  1. Startseite
  2. Wissensdatenbank
  3. Allgemeine Feed-Tipps
  4. Produktdaten-Feeds mit Cron-Jobs aktualisieren

Produktdaten-Feeds mit Cron-Jobs aktualisieren

Wenn Ihre Hosting-Umgebung den integrierten Aufgabenplaner von WordPress drosselt oder wenn Sie möchten, dass Feeds zu einer bestimmten Zeit aktualisiert werden, die nicht mit den stündlichen, zweimal täglichen oder täglichen Intervallen des Plugins übereinstimmen, können Sie die Feed-Aktualisierungen stattdessen über einen Cron-Job auf Serverebene steuern. Dies gibt Ihnen die genaue Kontrolle über die Zeitplanung und vermeidet die Abhängigkeit vom Besucheraufkommen, um den Scheduler von WordPress auszulösen.

Häufige Symptome: Feeds hängen bei alten Daten, Aktualisierungszeiten, die zwischen Besuchen schwanken, oder Hosting-Umgebungen, die wp-cron deaktivieren.

Product Feed Pro und Product Feed Elite unterstützen beide zwei Ansätze: einen WP-CLI-Befehl (empfohlen) und ein eigenständiges PHP-Skript für Server ohne WP-CLI.

Wenn Ihre Feeds bei geplanten Läufen auf einem Case-Sensitive-Server (Linux, Kinsta oder ähnlich) nicht aktualisiert wurden, war dies ein bekannter Fehler, der in Version 13.5.4 behoben wurde. Das Aktualisieren des Plugins behebt das Problem, ohne dass eine benutzerdefinierte Cron-Einrichtung erforderlich ist.

Bevor Sie beginnen

  • Product Feed Pro oder Product Feed Elite installiert und aktiv
  • Mindestens ein Produktdaten-Feed erstellt und konfiguriert
  • SSH- oder cPanel-Zugriff auf Ihren Server, um Cron-Jobs hinzuzufügen
  • Ihre Feed-ID (siehe Schritt 1 in einer der folgenden Methoden)
  • Version 13.5.4 oder neuer für WP-CLI-Unterstützung

WP-CLI ist auf den meisten verwalteten WordPress-Hosts verfügbar. Es ist der einfachste und zuverlässigste Weg, eine Feed-Aktualisierung über einen Server-Cron-Job auszulösen. Kein PHP-File zu verwalten, kein WordPress-Bootstrapping erforderlich.

Schritt 1: Finden Sie Ihre Feed-ID

  1. Gehen Sie in Ihrem WordPress-Admin zu Produktdaten-Feed → Feeds verwalten.
  2. Klicken Sie auf den Feed, den Sie aktualisieren möchten.
  3. Schauen Sie in die Adressleiste Ihres Browsers. Die Feed-ID ist der Wert des Parameters id – zum Beispiel bedeutet admin.php?page=adt-edit-feed&id=123, dass Ihre Feed-ID 123 ist.
Adressleiste des Browsers zeigt eine WordPress-Admin-URL mit hervorgehobenem page=adt-edit-feed&id=13.

Schritt 2: Deaktivieren Sie das integrierte Aktualisierungsintervall

Um zu verhindern, dass der Scheduler des Plugins eine doppelte Aktualisierung neben Ihrem Cron-Job ausführt:

  1. Gehen Sie beim Bearbeiten des Feeds zum Tab Allgemein.
  2. Stellen Sie Aktualisierungsintervall auf Keine Aktualisierung.
  3. Klicken Sie auf Änderungen speichern.
Feed mit "Keine Aktualisierung" als Aktualisierungsintervall

Schritt 3: Fügen Sie den Server-Cron-Job hinzu

Fügen Sie auf Ihrem Server einen Cron-Eintrag hinzu, der wp adt-feed refresh zu Ihrer gewählten Zeit ausführt. Ersetzen Sie /path-to-wordpress durch das tatsächliche Stammverzeichnis Ihrer Website und 123 durch Ihre Feed-ID:

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

Dieses Beispiel wird täglich um 2:00 Uhr ausgeführt. Passen Sie den Zeitplan an Ihre Bedürfnisse an.

Wenn wp nicht im Standard-PATH Ihres Servers enthalten ist, verwenden Sie stattdessen den vollständigen Pfad zur WP-CLI-Binärdatei (z. B. /usr/local/bin/wp) anstelle von nur wp.

Um mehrere Feeds in einem einzigen Cron-Job zu aktualisieren, listen Sie deren IDs durch Leerzeichen getrennt auf:

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

Methode 2: PHP-Skript

Verwenden Sie diese Methode, wenn Ihr Server WP-CLI nicht unterstützt.

Das PHP-Skript initiiert die Feed-Generierung, indem es sie über Action Scheduler in die Warteschlange stellt. Die eigentliche Verarbeitung erfolgt im Hintergrund – der Feed wird nicht im selben Moment aktualisiert, in dem das Skript ausgeführt wird. Stellen Sie sicher, dass der WordPress-Cron (oder ein separater Server-Cron, der wp-cron.php aufruft) aktiv ist, damit Action Scheduler die Batches abschließen kann.

Schritt 1: Finden Sie Ihre Feed-ID

Befolgen Sie die gleichen Schritte wie in Methode 1, Schritt 1 oben. Klicken Sie auf Ihren Feed, um ihn zu bearbeiten, und lesen Sie den Wert id= aus der URL.

Schritt 2: Erstellen Sie das PHP-Skript

Erstellen Sie eine neue Datei namens feed-refresh-123.php (ersetzen Sie 123 durch Ihre Feed-ID) und speichern Sie sie im Verzeichnis Ihres Child-Themes – zum Beispiel wp-content/themes/your-child-theme/feed-refresh-123.php.

Fügen Sie diesen Code in die Datei ein und ersetzen Sie 123 durch Ihre tatsächliche Feed-ID:

/**
 * 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());
}

Schritt 3: Deaktivieren Sie das integrierte Aktualisierungsintervall

Befolgen Sie die gleichen Schritte wie in Methode 1, Schritt 2 oben – stellen Sie Aktualisierungsintervall auf Keine Aktualisierung im Tab Allgemein ein.

Schritt 4: Fügen Sie den Server-Cron-Job hinzu

Fügen Sie den folgenden Cron-Eintrag auf Ihrem Server hinzu und ersetzen Sie die Pfade durch Ihre tatsächlichen Werte:

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

Dies läuft jeden Tag um 2:00 Uhr morgens. Die Ausgabe wird in eine Log-Datei im selben Verzeichnis geschrieben, sodass Sie überprüfen können, ob das Skript ausgeführt wurde und ob es Fehler erzeugt hat.

Um mehrere Feeds unabhängig voneinander auszuführen, erstellen Sie für jeden Feed eine separate PHP-Datei und einen separaten Cron-Eintrag.

Fehlerbehebung

Der Feed wird nach Ausführung des Cron-Jobs nicht aktualisiert
Überprüfen Sie zuerst die Log-Datei, in die der Cron-Job schreibt. Wenn das Log leer ist, läuft der Cron-Eintrag nicht. Überprüfen Sie den Dateipfad und ob der Cron-Daemon auf Ihrem Server aktiv ist.

Wenn das Log eine Ausgabe anzeigt, der Feed sich aber immer noch nicht aktualisiert, überprüfen Sie, ob die Feed-ID korrekt ist: Öffnen Sie den Feed im WordPress-Adminbereich und bestätigen Sie, dass der id=-Wert in der URL mit der ID in Ihrem Skript oder WP-CLI-Befehl übereinstimmt.
Geplante Feeds werden auf einem Linux- oder Kinsta-Server nicht aktualisiert
Dies war ein bekannter Fehler (behoben in Version 13.5.4), bei dem das Plugin den aktualisierten Feed in einen Dateinamen in Kleinbuchstaben schrieb, während die Feed-URL den ursprünglichen gemischten Dateinamen verwendete. Auf Case-Sensitive-Dateisystemen sind dies zwei verschiedene Dateien. Aktualisieren Sie das Plugin auf Version 13.5.4 oder höher, um das Problem zu beheben.
WP-CLI-Befehl gibt „Befehl nicht gefunden“ zurück
Die wp-Binärdatei ist möglicherweise nicht in der PATH Ihres Servers. Kontaktieren Sie Ihren Hoster, um zu bestätigen, dass WP-CLI verfügbar ist, und bitten Sie um den vollständigen Pfad. Aktualisieren Sie dann Ihren Cron-Eintrag, um den vollständigen Pfad zu verwenden (z. B. /usr/local/bin/wp adt-feed refresh 123).
Das PHP-Skript gibt einen fatalen Fehler wegen einer fehlenden Klasse zurück
Die Klasse AdTribes\PFP\Helpers\Product_Feed_Helper ist erst verfügbar, nachdem das Plugin über wp-load.php geladen wurde. Stellen Sie sicher, dass die Zeile require_once auf den korrekten wp-load.php-Pfad verweist. Der Pfad muss mit dem Stammverzeichnis Ihrer WordPress-Installation übereinstimmen – nicht mit einem Unterverzeichnis.

FAQ

Benötige ich dafür Product Feed Elite?
Nein. Beide Methoden funktionieren mit Product Feed Pro (kostenlos) und Product Feed Elite.
Kann ich das integrierte Aktualisierungsintervall neben einem Server-Cron aktiviert lassen?
Das ist möglich, wird aber nicht empfohlen. Wenn beide gleichzeitig ausgeführt werden, kann der Feed zweimal kurz hintereinander generiert werden. Deaktivieren Sie das integrierte Intervall und lassen Sie den Server-Cron die Zeitplanung steuern.
Wie finde ich den richtigen Cron-Zeitplan-Ausdruck?
Verwenden Sie einen Cron-Ausdrucksgenerator (suchen Sie nach „cron expression generator“), um den gewünschten Zeitplan zu erstellen. Die fünf Felder sind: Minute, Stunde, Tag des Monats, Monat, Tag der Woche.
Funktioniert der PHP-Skript-Ansatz auf Shared Hosting?
Ja, solange Sie cPanel oder SSH-Zugang haben, um Cron-Jobs hinzuzufügen, und der Server PHP von der Befehlszeile aus ausführen kann. Wenn Ihr Hoster kein Command-Line-PHP oder keine Cron-Jobs unterstützt, verwenden Sie stattdessen die integrierte Einstellung Aktualisierungsintervall des Plugins.

Benötigen Sie weitere Hilfe?

Wenn Sie Product Feed Elite verwenden, eröffnen Sie ein Support-Ticket, und unser Team hilft Ihnen bei der Konfiguration des Cron-Setups für Ihre Umgebung.

Wenn Sie Product Feed Pro verwenden, stellen Sie Ihre Frage im WordPress.org Supportforum.

War dieser Artikel hilfreich?

Verwandte Artikel

Schließen Sie Ihren Kauf ab
AdTribes WooCommerce Produkt-Feed

Das beste WooCommerce-Produktfeed-Plugin

  • AdTribes Pty Ltd
    ABN: 40 675 636 816
Produkt
Ressourcen & Infos
Partner-Websites
Rymera