Aan de slag
Productfeeds vernieuwen met cronjobs - AdTribes
  1. Home
  2. Kennisbank
  3. Algemene Feed Tips
  4. Productfeeds vernieuwen met cronjobs

Productfeeds vernieuwen met cronjobs

Als uw hostingomgeving de ingebouwde taakplanner van WordPress beperkt, of als u feeds op een precies tijdstip wilt vernieuwen dat niet overeenkomt met de uurlijkse, tweemaal daagse of dagelijkse intervallen van de plugin, kunt u feedvernieuwingen in plaats daarvan aansturen vanuit een cronjob op serverniveau. Dit geeft u precieze controle over de timing en voorkomt dat u afhankelijk bent van bezoekersverkeer om de scheduler van WordPress te activeren.

Veelvoorkomende symptomen: feeds die vastzitten op oude gegevens, vernieuwingstijden die tussen bezoeken verschuiven, of hostingomgevingen die wp-cron uitschakelen.

Product Feed Pro en Product Feed Elite ondersteunen beide twee benaderingen: een WP-CLI-commando (aanbevolen) en een zelfstandig PHP-script voor servers zonder WP-CLI.

Als uw feeds niet werden bijgewerkt tijdens geplande runs op een hoofdlettergevoelige server (Linux, Kinsta of vergelijkbaar), was dit een bekende bug die is opgelost in versie 13.5.4. Het bijwerken van de plug-in lost het probleem op zonder dat een aangepaste cron-instelling nodig is.

Voordat je begint

  • Product Feed Pro of Product Feed Elite geïnstalleerd en actief
  • Minstens één productfeed aangemaakt en geconfigureerd
  • SSH- of cPanel-toegang tot uw server om cronjobs toe te voegen
  • Uw feed-ID (zie Stap 1 in een van de onderstaande methoden)
  • Versie 13.5.4 of hoger voor WP-CLI-ondersteuning

WP-CLI is beschikbaar op de meeste beheerde WordPress-hosts. Het is de eenvoudigste en meest betrouwbare manier om een feedvernieuwing te activeren vanuit een server cronjob. Geen PHP-bestand om te beheren, geen WordPress bootstrapping vereist.

Stap 1: Vind uw feed-ID

  1. Ga naar Product Feed → Beheer Feeds in uw WordPress-admin.
  2. Klik op de feed die u wilt vernieuwen.
  3. Kijk in de adresbalk van uw browser. De feed-ID is de waarde van de id-parameter — bijvoorbeeld, admin.php?page=adt-edit-feed&id=123 betekent dat uw feed-ID 123 is.
Browseradresbalk toont een WordPress-admin-URL met page=adt-edit-feed&id=13 gemarkeerd.

Stap 2: Schakel het ingebouwde vernieuwingsinterval uit

Om te voorkomen dat de planner van de plug-in een dubbele vernieuwing uitvoert naast uw cronjob:

  1. Ga tijdens het bewerken van de feed naar het tabblad Algemeen.
  2. Stel Vernieuwingsinterval in op Geen vernieuwing.
  3. Klik op Wijzigingen opslaan.
Feed met "Geen Verversing" Verversingsinterval

Stap 3: Voeg de server-cronjob toe

Voeg op uw server een cron-invoer toe die wp adt-feed refresh uitvoert volgens uw gekozen schema. Vervang /pad-naar-wordpress door de daadwerkelijke rootmap van uw site en 123 door uw feed-ID:

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

Dit voorbeeld wordt elke dag om 02:00 uur uitgevoerd. Pas de schema-expressie aan uw behoeften aan.

Als wp niet in het standaard PATH van uw server staat, gebruik dan het volledige pad naar de WP-CLI-binaire bestanden (bijv. /usr/local/bin/wp) in plaats van alleen wp.

Om meerdere feeds in één cronjob te vernieuwen, lijst u hun ID's op, gescheiden door spaties:

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

Methode 2: PHP-script

Gebruik deze methode als uw server WP-CLI niet ondersteunt.

Het PHP-script initieert feedgeneratie door deze via Action Scheduler in de wachtrij te plaatsen. De daadwerkelijke verwerking gebeurt op de achtergrond — de feed wordt niet direct bijgewerkt wanneer het script wordt uitgevoerd. Zorg ervoor dat WordPress cron (of een aparte server cron die wp-cron.php aanroept) actief is, zodat Action Scheduler de batches kan voltooien.

Stap 1: Vind uw feed-ID

Volg dezelfde stappen als in Methode 1, Stap 1 hierboven. Klik op uw feed om deze te bewerken en lees de id= waarde uit de URL.

Stap 2: Maak het PHP-script

Maak een nieuw bestand aan met de naam feed-refresh-123.php (vervang 123 door uw feed-ID) en sla het op in uw child theme-directory — bijvoorbeeld wp-content/themes/your-child-theme/feed-refresh-123.php.

Voeg deze code toe aan het bestand, waarbij u 123 vervangt door uw daadwerkelijke 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());
}

Stap 3: Schakel het ingebouwde vernieuwingsinterval uit

Volg dezelfde stappen als in Methode 1, Stap 2 hierboven — stel Vernieuwingsinterval in op Geen Vernieuwing in het tabblad Algemeen.

Stap 4: Voeg de server cronjob toe

Voeg de volgende cron-vermelding toe op uw server en vervang de paden door uw werkelijke waarden:

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

Dit wordt elke dag om 02:00 uur uitgevoerd. De uitvoer wordt naar een logbestand in dezelfde map geschreven, zodat u kunt controleren of het script is uitgevoerd en of het fouten heeft geproduceerd.

Om meerdere feeds onafhankelijk van elkaar uit te voeren, maakt u een apart PHP-bestand en cron-vermelding voor elke feed.

Probleemoplossing

De feed wordt niet bijgewerkt nadat de cron is uitgevoerd
Controleer eerst het logbestand waarnaar de cronjob schrijft. Als het logboek leeg is, wordt de cron-vermelding niet uitgevoerd. Controleer het bestandspad en of de cron-daemon actief is op uw server.

Als het logboek uitvoer toont, maar de feed nog steeds niet wordt bijgewerkt, verifieer dan of de feed-ID correct is: open de feed in de WordPress-admin en bevestig dat de id= waarde in de URL overeenkomt met de ID in uw script of WP-CLI-opdracht.
Geplande feeds worden niet bijgewerkt op een Linux- of Kinsta-server
Dit was een bekende bug (opgelost in versie 13.5.4) waarbij de plugin de vernieuwde feed naar een bestandsnaam met kleine letters schreef, terwijl de feed-URL de oorspronkelijke bestandsnaam met hoofdletters en kleine letters gebruikte. Op hoofdlettergevoelige bestandssystemen zijn dit twee verschillende bestanden. Werk de plugin bij naar versie 13.5.4 of hoger om dit op te lossen.
WP-CLI-opdracht retourneert "command not found"
De wp binaire bestand is mogelijk niet aanwezig in het PATH van uw server. Neem contact op met uw host om te bevestigen dat WP-CLI beschikbaar is en vraag naar het volledige pad. Werk vervolgens uw cron-vermelding bij om het volledige pad te gebruiken (bijv. /usr/local/bin/wp adt-feed refresh 123).
Het PHP-script retourneert een fatale fout over een ontbrekende klasse
De klasse AdTribes\PFP\Helpers\Product_Feed_Helper is alleen beschikbaar nadat de plugin is geladen via wp-load.php. Zorg ervoor dat de require_once regel verwijst naar het juiste wp-load.php pad. Het pad moet overeenkomen met de root van uw WordPress-installatie — niet een submap.

Veelgestelde vragen

Heb ik Product Feed Elite hiervoor nodig?
Nee. Beide methoden werken met Product Feed Pro (gratis) en Product Feed Elite.
Kan ik het ingebouwde vernieuwingsinterval ingeschakeld houden naast een server cron?
Het kan, maar het wordt niet aanbevolen. Als u beide tegelijkertijd uitvoert, kan de feed kort na elkaar twee keer worden gegenereerd. Schakel het ingebouwde interval uit en laat de server cron de planning beheren.
Hoe vind ik de juiste cron-schema-uitdrukking?
Gebruik een cron-schema-generator (zoek naar "cron expression generator") om het schema te maken dat u nodig hebt. De vijf velden zijn: minuut, uur, dag van de maand, maand, dag van de week.
Werkt de PHP-scriptaanpak op gedeelde hosting?
Ja, zolang u cPanel of SSH-toegang hebt om cron-taken toe te voegen en de server PHP vanaf de opdrachtregel kan uitvoeren. Als uw host geen command-line PHP of cron-taken ondersteunt, gebruik dan in plaats daarvan de ingebouwde Verversingsinterval-instelling van de plugin.

Meer hulp nodig?

Als u Product Feed Elite gebruikt, open dan een supportticket, en ons team zal u helpen de cron-configuratie voor uw omgeving in te stellen.

Als je Product Feed Pro gebruikt, plaats je vraag dan in het WordPress.org supportforum.

Was dit artikel nuttig?

Gerelateerde artikelen

Voltooi uw aankoop
AdTribes WooCommerce Productfeed

De beste WooCommerce productfeedplugin

  • AdTribes Pty Ltd
    ABN: 40 675 636 816
Product
Bronnen & Info
Partnerwebsites
Rymera