Lesefortschritt:

    Backend-Special – Trick #1: Automatische Beitragsplanung für die Word­Press-Website

    29. Juli 2026 | functions.php, Word­Press

    Trick # 595 | Dieser Beitrag beinhaltet 916 Wörter. – Geschätzte Lesezeit: ca. 5 Minuten.

    Heute ein Hack, den sich Dr. Code aus purem Eigeninteresse gebaut hat: Eine automatische Planung für die nächsten Trick-Beiträge. Ist extrem einfach. Und extrem praktisch.

    Dr. Code veröffentlicht jeden Mittwoch und jeden Sonntag einen Beitrag auf seiner Word­Press-Website. Aber eben jeweils nur einen einzigen. Die Beiträge sind zudem bisweilen weit voraus geplant.

    Nun hat Dr. Code bei jedem Beitrag die Agenda gezückt und den nächsten «freien» Veröffentlichungstermin gesucht. Das fand er doof.

    Word­Press sollte darum beim Anlegen eines neuen Beitrags nicht das aktuelle Datum als Veröffentlichungszeitpunkt vorschlagen, sondern den jeweils nächsten Mittwoch oder Sonntag, an dem noch kein Beitrag geplant ist. Ausserdem sollte der genaue Zeitpunkt der Veröffentlichung zufällig zwischen 0 Uhr und 12 Uhr gewählt werden.

    Knifflig – aber machbar. Alles, was es braucht, ist ein Stück PHP-Code.

    Wir haben hier einen etwas anderen, allgemein besser brauchbaren Fahrplan gewählt. Die Vorgaben:

    • Es sollen maximal zwei Beiträge je Woche erscheinen.
    • Der Mindestabstand von einem zum nächsten Beitrag muss mindestens drei Tage betragen.
    • Die Beiträge sollen auf einen zufälligen Zeitpunkt zwischen 8 Uhr morgens und 18 Uhr geplant werden. Die Zeitplanung soll entweder zur Minute 0, zur 15., 30. oder 45. Minute angesetzt werden.

    Diese Vorgaben werden im folgenden Block erfüllt. Diesen legen Sie in der Datei functions.php Ihrer Word­Press-Installation ab. Unter Design/Theme-Datei-Editor:

    // Automatische Beitragsplanung: Maximal zwei Beiträge pro Woche, mindestens drei Tage Abstand
    function set_next_publish_date($post_data) {
    if ($post_data['post_status'] !== 'auto-draft') {
    return $post_data; // Nur auf neue Beiträge anwenden
    }// Hole geplante Beiträge
    $args = [
    'post_type'      => 'post',
    'post_status'    => ['future', 'publish'],
    'orderby'        => 'post_date',
    'order'          => 'ASC',
    'posts_per_page' => -1,
    ];$existing_posts = get_posts($args);
    $occupied_dates = [];foreach ($existing_posts as $post) {
    $occupied_dates[] = date('Y-m-d', strtotime($post->post_date));
    }// Berechne den nächsten freien Tag unter Berücksichtigung der Vorgaben
    $date = new DateTime();
    $date->setTime(0, 0);$week_post_count = 0;
    while (true) {
    $day_of_week = $date->format('w');
    $week_number = $date->format('W');// Zähle Beiträge in der aktuellen Woche
    $week_post_count = 0;
    foreach ($existing_posts as $post) {
    if ($week_number == date('W', strtotime($post->post_date))) {
    $week_post_count++;
    }
    }// Bedingung: Maximal 2 Beiträge pro Woche und mindestens 3 Tage Abstand
    $formatted_date = $date->format('Y-m-d');
    $is_minimum_distance_met = true;foreach ($occupied_dates as $occupied_date) {
    $occupied_date_obj = new DateTime($occupied_date);
    $diff_days = $date->diff($occupied_date_obj)->days;
    if ($diff_days < 3) {
    $is_minimum_distance_met = false;
    break;
    }
    }if ($week_post_count < 2 && $is_minimum_distance_met) {
    break; // Freier Tag gefunden
    }$date->modify('+1 day');
    }// Setze eine zufällige Zeit zwischen 8:00 und 18:00 Uhr, gerundet auf 15 Minuten
    $random_minutes = rand(0, 40) * 15; // 0 bis 40 * 15 Minuten
    $hours = 8 + floor($random_minutes / 60); // Ab 8 Uhr
    $minutes = $random_minutes % 60;// Maximal bis 18:00 Uhr
    if ($hours >= 18) {
    $hours = 17;
    $minutes = 45;
    }$date->setTime($hours, $minutes);// Setze das geplante Datum
    $post_data['post_date']     = $date->format('Y-m-d H:i:s');
    $post_data['post_date_gmt'] = get_gmt_from_date($post_data['post_date']);return $post_data;
    }
    add_filter('wp_insert_post_data', 'set_next_publish_date', 10, 1);

    Das tut der Code:

    • Zunächst werden die geplanten und die bereits veröffentlichten Beiträge durchsucht. Das geschieht ab Zeile 7.
    • Dann wird der nächste freie Termin berechnet. Ab Zeile 23 werden die bereits geplanten oder veröffentlichten Beiträge durchsucht und der nächstmögliche Termin ausgewählt.
      >>> Die Vorgabe, nicht mehr als zwei Beiträge je Woche und ein zeitlicher Mindesabstand von drei Tagen wird ab Zeile 40 berücksichtigt.
    • Dann wird ab Zeile 60 eine zufällige Uhrzeit angesetzt. In unserem Fall zwischen 8:00 und spätestens 18:00 Uhr – auf 15 Minuten gerundet.
      >>> Anpassungen sind auf Zeile 62 möglich, wenn auch früher des Tages Beiträge erscheinen sollen. Für Beiträge nach 18 Uhr sind Änderungen an den Zeilen 66 bis 68 nötig..
    • Am Schluss wird das Datum und der Zufallszeitpunkt angewendet. Das geschieht beim Erstellen eines neuen Beitrags (im Status «Auto-Draft») ab der Zeile 73.

    Dr. Code ist erleichtert. Und er zückt sehr viel weniger oft seine Agenda.

    Mit seinem einfachen Trick können auch Sie Ihre Beitragsplanung in Word­Press effizienter gestalten und sicherstellen, dass alles wie geplant läuft. Probieren Sie es aus und geniessen Sie die Vorteile.

      Werbung

      Zeichen im Textauszug Excerpt zählen

      Die Textauszüge - oder Excerpts - sind sehr vielseitig einsetzbar. Jedoch sind zu umfangreiche Excerpts auch nicht hilfreich. Insbesondere Google & Co. wird Textauszüge mit über 160 Zeichen kürzen. Während der Eingabe lassen sich die Zeichen ...
      Keine Inhalte gefunden.

      Werbung

       

      Pin It on Pinterest

      Share This
      Überblick über den Datenschutz

      Diese Website verwendet Cookies, damit wir Ihnen die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in Ihrem Browser gespeichert und dienen dazu, Sie wiederzuerkennen, wenn Sie auf unsere Website zurückkehren, und unserem Team zu helfen, zu verstehen, welche Bereiche der Website Sie am interessantesten und nützlichsten finden.