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.

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');
}

Geschrieben von Robert Menzel

Benutzerbild

Robert arbeitet als Frontend-Developer und Web-Designer bei kulturbanause. Zu seinen Aufgaben gehören die visuelle Gestaltung und die technische Umsetzung von Websites, eCommerce-Shops oder dessen Kombination. Besonders gerne übernimmt er die Entwicklung individueller und anspruchsvoller Websites mit umfangreichen ineinandergreifenden Funktionen, getreu dem Motto: »Der beste Lack bringt nichts, wenn die Maschine darunter nicht läuft.«

Feedback & Ergänzungen – 1 Kommentar

  1. Bibo
    schrieb am 04.08.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

    Antworten

Kommentar zu dieser Seite

Wir freuen uns über Anregungen, Ergänzungen oder Hinweise zu Fehlern. Wir lesen jeden Eintrag, veröffentlichen aber nur, was den Inhalt sinnvoll ergänzt.

WordPress-Projekte mit kulturbanause

Wir wissen wovon wir reden. Wir setzen WordPress seit über 10 Jahren erfolgreich ein und realisieren maßgeschneiderte Websites auf Basis dieses großartigen CMS.

WordPress-Leistungsangebot →

Schulungen von kulturbanause

Wir bieten Seminare und Workshops zu den Themen Konzept, Design und Development. Immer up-to-date, praxisnah, kurzweilig und mit dem notwendigen Blick über den Tellerrand.

Übersicht Schulungsthemen →