kulturbanause Blog

Responsive Design, WordPress, Konzeption, HTML, CSS, JS & UX/UI …

WordPress: Cronjob (wp-cron.php) trotz HTTP-Authentifizierung ausführen

WordPress verwendet sog. Cronjobs um bestimmte Aufgaben automatisch durchzuführen. Hierzu zählen unter anderem das Aktualisieren von Themes und Plugins oder das Veröffentlichen von geplanten Beiträgen. Die Cronjobs werden in WordPress immer dann angestoßen, wenn ein Besucher die Website aufruft. Habt ihr eure Website jedoch mit einer HTTP-Authentifizierung abgesichert, werden sie nicht mehr ausgeführt. In diesem Beitrag erklären wir euch, wie ihr Cronjobs in WordPress trotz HTTP-Authentifizierung trotzdem aktivieren könnt.

Workshops und Seminare von kulturbanause

Visual Prototyping, Responsive Design, CSS Grid & Flexbox, Sketch, Adobe XD …

Jetzt Frühbucher-Rabatte sichern!

Was ist eine HTTP-Authentifizierung?

Unter einer HTTP-Authentifizierung versteht man die Absicherung einer Website oder von Teilen einer Website mit Hilfe eines Benutzernamens und eines Passworts. Dies kann zum Beispiel mit Hilfe einer .htaccess- und einer .htpasswd-Datei realisiert werden. Einen ausführlichen Beitrag dazu findet ihr hier.

Benutzername und Passwort an WordPress übermitteln

Damit WordPress die gewünschten Cronjobs mit Hilfe der wp-cron.php ausführen kann, müsst ihr die von euch gewählten Zugangsdaten an WordPress übergeben. Dazu müsst ihr folgendes Snippet in die wp-config.php schreiben und anstelle von DEIN BENUTZERNAME und DEIN PASSWORT eure Daten eintragen.

if(!defined('WP_CRON_CUSTOM_HTTP_BASIC_USERNAME')) {
 define('WP_CRON_CUSTOM_HTTP_BASIC_USERNAME', 'DEIN BENUTZERNAME');
}
if(!defined('WP_CRON_CUSTOM_HTTP_BASIC_PASSWORD')) {
 define('WP_CRON_CUSTOM_HTTP_BASIC_PASSWORD', 'DEIN PASSWORT');
}

Cronjobs authentifizieren

Um den Cronjobs nun die Berechtigung zu erteilen automatisierte Aufgaben durchzuführen, müsst ihr die soeben definierten Zugangsdaten auch noch an den Header der Cronjob-Abfrage übergeben. Fügt dazu folgendes Snippet in die functions.php eures Themes oder in ein seitenspezifisches Plugin ein.
Anschließend sollte eure Website trotz HTTP-Authentifizierung Cronjobs ausführen.

if(defined('WP_CRON_CUSTOM_HTTP_BASIC_USERNAME') && defined('WP_CRON_CUSTOM_HTTP_BASIC_PASSWORD')) {
 function kb_http_basic_cron_request($cron_request) {
  $headers = array('Authorization' => sprintf('Basic %s', base64_encode(WP_CRON_CUSTOM_HTTP_BASIC_USERNAME . ':' . WP_CRON_CUSTOM_HTTP_BASIC_PASSWORD)));
  $cron_request['args']['headers'] = isset($cron_request['args']['headers']) ? array_merge($cron_request['args']['headers'], $headers) : $headers;
  return $cron_request;
 }
 add_filter('cron_request', 'kb_http_basic_cron_request');
}

Links / Quellen

Jetzt bist du gefragt!

Hast du Anregungen, Ergänzungen, einen Fehler gefunden oder ist dieser Beitrag nicht mehr aktuell? Dann freuen wir uns auf deinen Kommentar.

Du kannst diesen Beitrag natürlich auch weiterempfehlen. Wir sind dir für jede Unterstützung dankbar!

Unterstützung bei WordPress-Projekten

Unsere WordPress Agentur ist auf die Entwicklung maßgeschneiderter WordPress-Themes und -Websites spezialisiert. Wenn du Unterstützung bei der Planung, Gestaltung und Entwicklung eines Projekts benötigst, helfen wir gerne weiter.
WordPress-Leistungsangebot →

Das könnte dich auch interessieren

1 Kommentar

  1. Bibo

    Verfasst am 4. August 2018 um 23:35 Uhr.

    Hi,

    vielen Dank für die Anleitung! Leider kriege ich das Ganze nicht zum Laufen …
    Meine Seite läuft auf WP 4.9.8 mit NGINX als Webserver. In der NGINX ist das auth_basic gesetzt. Habe wp-config.php und das functions.php meines Themes entsprechend ergänzt aber das Newsletter-Plugin, das ich nutzen möchte meckert immer noch, es können nicht auf WP-Cron zugreifen.
    Hast Du eine Idee?
    Grüße,

    Bibo

Kommentar verfassen

Dieser Blog lebt vom Feedback der Besucher! Also los, mach mit!
Bitte habe Verständnis dafür, dass Kommentare die mit dem Inhalt dieses Beitrags nichts zu tun haben, gelöscht werden.