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 WordPress-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.
WordPress 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 WordPress-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 WordPress effizienter gestalten und sicherstellen, dass alles wie geplant läuft. Probieren Sie es aus und geniessen Sie die Vorteile.
Werbung


