Cron er et Unix/Linux-værktøj, der typisk bruges til at planlægge kommandoer eller et script på en webserver, der kører i baggrunden. Et cron-job er selve opgaven, som bruges til at planlægge opgaver på periodiske faste tidspunkter, datoer eller intervaller. Typisk drejer det sig om gentagne opgaver, som automatiseres for at spare tid. I WordPress håndteres dette af WP-Cron, som bruges til at simulere en systemcron.

Nogle eksempler på et WordPress-cronjob kan omfatte planlægning af et indlæg til offentliggørelse eller et backup-plugin, der kører efter en foruddefineret tidsplan. I dag vil vi dykke ned i, hvordan man nemt opretter, ændrer og kører et WordPress cron job.

Sådan opretter du et Cron Job i WordPress

Det er vigtigt at bemærke, at WP-Cron er lidt anderledes end en systemcron, og de har hver især deres egne fordele og ulemper. For eksempel er WP-Cron helt afhængig af intervaller, mens en systemcron er afhængig af specifikke tidspunkter. En WP-Cron fungerer også kun, når siden er indlæst (back-end eller front-end), hvilket kan være mindre pålideligt. De standardintervaller, der leveres af WordPress, er hver time, to gange dagligt.

For at planlægge WP-Cron-hændelser skal du oprette brugerdefinerede hooks. Vi anbefaler at tjekke den officielle WordPress plugin-håndbog, som har en fantastisk vejledning om planlægning af WP Cron-hændelser. Hvis du leder efter en alternativ måde at opsætte en systemcron med WordPress på, anbefaler vi at tjekke Tom Mcfarlins artikel om definition af et WordPress-cronjob. Og for dem, der måske ikke er så avancerede, vil vi undersøge, hvordan man nemt kan bruge WP-Cron sammen med det populære gratis WP Crontrol-plugin. Dette giver dig mulighed for at se og kontrollere, hvad der sker i WP-Cron-systemet.

WP Crontrol
WP Crontrol

WP Crontrol har over 200.000 aktive installationer med en imponerende 4,5 ud af 5 bedømmelse. Mange mennesker i WordPress-fællesskabet elsker virkelig dette plugin.

Dette plugin er super nyttigt. Viser, hvilke CRON-jobs der skal køres, fremragende første skridt til at forstå, hvad der foregår, og om det virker eller ej. 5 stjerner lige der. Du kan også oprette nye cron-jobs og udløse eksisterende job til at køre, 5 bonusstjerner på toppen. – Josh, skaberen af Caldera Forms

Du kan downloade det fra WordPress-repositoriet eller ved at søge efter det i dit WordPress-dashboard under “Tilføj Nyt” plugins. Funktioner af WP Control omfatter:

  • Mulighed for at se alle cron-hændelser sammen med deres argumenter, gentagelse og næste kørselstidspunkt.
  • Rediger, slet og kør straks alle cron-hændelser.
  • Tilføj nye cron-hændelser.
  • Tilføj, rediger og fjern brugerdefinerede cron-skemaer.

Server Cron

Hvis du er en Kinsta-klient, har vi også et cronjob på serveren, der kører på alle websteder hvert 15. minut. Se vores artikel om, hvordan du administrerer server-crons hos Kinsta.

WP-Cron-skemaer

Når du er aktiveret, kan du ændre WordPress Cron job tidsplaner under “Cron Schedules” fra indstillingerne i dit WordPress-dashboard. Bemærk, at plugin’et tilføjer en ekstra standardplan for ugentligt. Du kan også tilføje yderligere skemaer i sekunder, såsom 21600 sekunder for hver 6 timer.

Skærmbillede af WP-Cron tidsplaner
WP-Cron-skemaer

Disse intervaller kan også tilføjes med kode ved hjælp af et filter, som f.eks:

add_filter( 'cron_schedules', 'example_add_cron_interval' );

function example_add_cron_interval( $schedules ) {
 $schedules['five_seconds'] = array(
 'interval' => 5,
 'display' => esc_html__( 'Every Five Seconds' ),
 );

return $schedules;
 }

WP-Cron Events

Du kan derefter også bruge plugin’et til at se dine nuværende WordPress Cron-jobs, der allerede er planlagt. Under Værktøjer klikker du ind på “Cron Events” Mange af handlingsnavnene er let genkendelige, da de skal matche en del af plugin-navnet, såsom “woocoomerce_cleanup_sessions” eller “gravityforms_cron”

wp-cron events
WP-Cron events

Du kører en Cron-event med det samme ved blot at klikke på “Run Now” ved siden af handlingsnavnet. Dette kan være nyttigt ved fejlfinding af ting, da du måske skal køre en Cron-hændelse flere gange.

Succesfuldt udførte cron event
Succesfuldt udførte cron event

Ændre Cron-event

Du kan også redigere eksisterende Cron-hændelser ved at klikke på “Rediger” ved siden af handlingsnavnet. Du kan derefter ændre handlingens navn, argumenter, den næste kørsel og planlagt gentagelse. Vær dog forsigtig med dette, da mange plugins er afhængige af deres Cron-jobs for at fungere korrekt.

modify cron event
Modify Cron event

Tilføj Cron-event

Du kan også tilføje Cron-event. I dette eksempel vil vi tilføje WordPress Cron-jobbet til Disqus-plugin. Mange vil måske gøre dette for at ændre synkroniseringsfrekvensen, eller hvis de har problemer med kommentarer, der synkroniseres frem og tilbage. Hver tredjeparts plugin-udviklerens dokumentation bør have navnet på deres cron-begivenhed, eller rettere event-navnet. I dette tilfælde er det “dsq_sync_forum“, som bruges af plugin’et.

Hvis du opretter en fra bunden, skal du bruge en tilsvarende action hook et sted i din kode, f.eks. i din functions.php-fil. Dette er det eksempel, som WP-Crontrol giver:

add_action( 'my_hookname', 'my_function' );

Det næste skridt er at skrive din funktion.

function my_function() {
    wp_mail( '[email protected]', 'WP Crontrol', 'WP Crontrol rocks!' );
}

For Disqus tilføjer vi først en ny cron-skema på 600 sekunder (10 minutter). Vi klikker derefter ind på “Add Cron Event” og indtaster “dsq_sync_forum” som vores handlingsnavn, vælger det næste køretidspunkt og vælger den 10-minutters gentagelse, vi lige har oprettet. Derefter klikker vi på “Add Cron Event” Dette vil nu køre automatisk hvert 10. minut, så vi manuelt kan synkronisere Disqus-kommentarer tilbage til vores WordPress-database.

Tilføj WordPress Cron-job
Tilføj WordPress Cron-job

Og det var det hele! Det er virkelig ret nemt at bruge.

WP-Cron WP-CLI

Du kan også administrere WP-Cron-hændelser og eller et WordPress Cron-job i WP-CLI. For eksempel vil følgende kommando give dig din aktuelle cron-event.

wp cron event list

wp-cron event liste

Se den officielle WP-CLI cron-dokumentation for yderligere kommandoer og parametre.

Sådan tilføjes et Cron Job ved hjælp af cPanel

Hvis du bruger en webhost, der giver dig adgang til en cPanel-konto, kan du bruge kontrolpanelet til at oprette cron-jobs. For at gøre dette skal du logge ind på din cPanel-konto og gå til Avanceret > Cron Jobs:

Cron Jobs i cPanel
Cron Jobs i cPanel

Indstillingssiden for Cron Jobs indeholder muligheder for at indstille cronjobmeddelelser og oprette nye cronjobmeddelelser. Hvis du vil tilføje et cronjob, skal du rulle ned til afsnittet Add new cronjob .

Her vil du kunne konfigurere frekvensen af kommandoen:

Konfigurer frekvensen af efterspørgslen
Tilføj nyt Cron Job

Menuen Fælles indstillinger indeholder flere forudkonfigurerede indstillinger, der spænder fra en gang i minuttet til en gang om året. Du kan bruge en af disse indstillinger eller ændre felterne nedenfor for at indtaste en brugerdefineret værdi:

Indtastning af brugerdefinerede værdier
Indtast brugerdefinerede værdier

Når du har konfigureret frekvensen for cronjobbet, kan du tilføje den kommando, som det skal udføre, under feltet Kommando . Gem cronjobbet ved at klikke på Add New Cron Job (Tilføj nyt cronjob). Nu vil det blive vist under listen over aktuelle cronjobs nederst på siden.

Sådan tilføjes et Cron Job i NGINX

Det er relativt nemt at tilføje et cronjob i NGINX, hvis du er fortrolig med at bruge terminalen og skrive scripts. For at komme i gang skal du åbne terminalen og indtaste følgende kommando:

Sudo crontab -e

Dette vil åbne cron-konfigurationsfilen. Hver linje i filen indeholder et unikt cronjob, der skal se således ud:

0 13 * * * /var/www/public_html/cron.php >/dev/null

For at tilføje et nyt cronjob i NGINX skal du forstå, hvad denne kommando gør. De første tal og stjerner angiver, hvornår cronjobbet skal køre.

Hvert tal eller symbol repræsenterer følgende værdier, i rækkefølge fra venstre mod højre:

  1. Minute
  2. Hours
  3. Day of the month
  4. Month
  5. Weekdays

Denne kommando fortæller NGINX, at cron.php-filen skal køres hver dag kl. 13.00 præcis. Vi bruger stjerner for resten af værdierne, fordi de ikke er nødvendige for dette specifikke cronjob, men det kan være forskelligt, hvad du bruger.

Ud over at angive, hvilken fil der skal køres, fortæller kommandoen også cronjobbet, at det skal kassere ethvert output, f.eks. fejl, med tilføjelsen >/dev/null . Alternativt kan du vælge at gemme sådanne output til en logfil.

Når du er færdig med at ændre cron-konfigurationsfilen, kan du gemme dine ændringer og lukke den. Nu vil din NGINX-server køre det pågældende cronjob med den konfiguration, du har indstillet til det.

Sådan tilføjer du et Cron Job i Kinsta

Der er to måder at tilføje et cronjob i Kinsta på. Den første metode indebærer adgang til dit websted via SSH og kørsel af kommandoen crontab -e .

Når du kører denne kommando, vil Kinsta spørge dig, hvilken editor du vil bruge. Derefter åbner den cron-konfigurationsfilen ved hjælp af denne editor.

Du kan tilføje cron-jobs til konfigurationsfilen ved at oprette nye kommandoer på separate linjer. En cronjob-kommando skal se således ud:

0 13 * * * /var/www/public_html/cron.php >/dev/null

Du kan læse mere om, hvordan du strukturerer cron-kommandoer, i det foregående afsnit, hvor vi så på, hvordan du bruger kommandoen crontab -e i NGINX. Hvis du hellere vil undgå at tilføje cronjobbet manuelt, kan du bede Kinsta-supportpersonalet om at gøre det for dig.

Husk på, at Kinsta ikke kan redigere cronjobs for dig, og vi vil blot uploade kommandoerne, som du giver dem. Hvis du har brug for hjælp til at konfigurere cron-kommandoen, anbefaler vi at tjekke denne crontab-dokumentation.

Sådan deaktiveres WP-Cron

I nogle tilfælde kan brugen af WP-Cron-funktionen forårsage problemer med dit websted. WP-Cron er ikke et “rigtigt” cronjob, men en funktion der efterligner hvordan de fungerer. I stedet for at køre kontinuerligt kører WordPress scriptet wp-cron.php , hver gang en side indlæses.

Denne fremgangsmåde kan give problemer med websteder med stor trafik, da du skal afsætte ressourcer til at køre wp-cron.php ved hver sideindlæsning. Hvis scriptet ikke køres på grund af sideindlæsninger, kan dine planlagte kommandoer muligvis ikke blive udført, da wp-cron.php ikke “tjekker” intervallerne.

Hvis du støder på problemer med WP-cron, kan du deaktivere funktionen ved at tilføje følgende kode til WordPress-filen wp-config.php:

define('DISABLE_WP_CRON', true);

Gem ændringerne i filen, og det er det hele. Hvis du vælger at deaktivere WP-Cron, skal du dog oprette et alternativ ved hjælp af en af de tidligere metoder i denne vejledning.