Automatisches Löschen nach dem Löschen

Ich habe ein System entwickelt, in dem ich 2 Optionen habe – LifeSpawn des Entwurfs und LifeSpawn des veröffentlichten Posts (Ganzzahl, die Tage markiert).

Wenn Post veröffentlicht wird, wird das genaue Datum und die Uhrzeit der Veröffentlichung als postmeta gespeichert, außerdem wird zu dieser Zeit lebensrettung hinzugefügt und dieser Wert wird in der database als Ablaufdatum-Zeit gespeichert, dasselbe gilt für Entwurf ( aka wenn Post gespeichert wird).


Mein aktuelles System läuft so:

  • Ich habe einen Servercron eingerichtet, der nachts in jeder 24h läuft

  • Alle veröffentlichten Beiträge werden abgefragt
  • Veröffentlichungsdatum-Uhrzeit- metadata aus der database in der while Schleife abgerufen
  • Diese Zeit wird mit der aktuellen Zeit in der if statement verglichen
  • Wenn die Zeit abgelaufen ist, ändern Sie den Poststatus in Entwurf

  • Alle Entwurfspfosten werden abgefragt
  • Entwurf-Datum-Uhrzeit- metadata aus der database in der while Schleife abgerufen
  • Diese Zeit wird mit der aktuellen Zeit in der if statement verglichen
  • Wenn die Zeit verstrichen ist, löschen Sie den Beitrag
  • Alle angehängten Bilder zum Beitrag werden ebenfalls abgefragt und gelöscht

Ich bin super besorgt, dass dieses System / Server hart ausfällt, wenn Beiträge 10 000 – 15 000 oder sogar ein paar tausend sind. Es ist wichtig, dass Beiträge (besonders veröffentlicht), die die Zeit überschritten haben, entfernt werden.

Welche anderen Optionen habe ich?


Ideen:

  • Das Datum-Zeit- Check für eine bestimmte Anzahl von älteren Posts in zufälligen Abfragen auslösen, die Benutzer sowieso machen? – längere Ladezeiten für Benutzer
  • Trigger die Datum-Uhrzeit “Check” wenn Single-Post besucht wird und tun es eins nach dem anderen? – Abfragen rufen immer noch Posts ab und geben sie wieder, wenn die Leute sie genau zur gleichen Zeit abfragen, was zu 404s und Enttäuschung führt.
  • Irgendwie alle Beiträge teilen und es in Brocken machen? – Ich könnte 'offset' , um Beiträge in Gruppen zu teilen, und zwar in kleineren page_per_page aber es funktioniert nicht, wenn page_per_page auf -1 gesetzt ist

Aktualisieren:

Ich habe Ihre Ratschläge gehört und versucht, nach dem "expiry date" abzufragen:

  • Es scheint zu funktionieren. Ich habe das Cronjob-Intervall geändert und versuche es einige Runden lang
  • Gibt es eine Problemumgehung für Formatierungsdatum? if statement nicht zu funktionieren scheint
  • Fast derselbe Code für Entwürfe, nur dass ich den Entwurf lösche, wenn die Zeit abgelaufen ist
  • Ich denke auch, dass es besser wäre, alle 1 Stunde zu laufen, um große Mengen zu vermeiden, oder?

 //Current date-time $now = date( 'Ymd H:i:s' ); //Let's say it's 2015-12-24 21:00:00 (9PM) //Get all published posts that are over the deadline $published_posts = new WP_Query( array( 'posts_per_page' => -1, 'post_type' => 'my-post', 'post_status' => 'publish', 'meta_query' => array( array( 'key' => 'post_publish_deadline', //string eg 2015-12-24 15:00:00 (3PM) 'value' => $now, 'type' => 'DATETIME', 'compare' => 'have_posts() ) { $published_posts->the_post(); //Get postmeta deadline and format it for if statement $publish_deadline = get_post_meta( get_the_ID(), 'post_publish_deadline', true ); //If statement doesn't seem to work without this step $format_publish_deadline = date( 'Ymd H:i:s', strtotime( $publish_deadline ) ); //Check if it exists just in case if( !empty( $format_publish_deadline ) ) { //Additional check if time for that guy is over just in case if( $format_publish_deadline  get_the_ID(), 'post_status' => 'draft' ) ); //Get lifespawn option $draft_to_delete_lifespawn = $my_option[ 'draft-lifespawn' ]; //Build a new draft expiration date-time -> now + lifespawn in hours $draft_deadline = date( 'Ymd H:i:s', strtotime( $now . ' + ' . $draft_to_delete_lifespawn . ' hours' ) ); //Save new draft expiration date-time update_post_meta( $post->ID, 'post_draft_deadline', $draft_deadline ); } } } //END while wp_reset_postdata(); 

Solutions Collecting From Web of "Automatisches Löschen nach dem Löschen"

Sie können sich verbessern, indem Sie die “Ablauf” -Zeit des Posts als Meta statt der Veröffentlichungszeit speichern. Auf diese Weise können Sie nach Posts mit Meta suchen, die kleiner als die aktuelle Zeit sind, und sie entcasting, ohne dass Sie alle Posts durchlaufen müssen.

Nachteil ist, dass Sie entscheiden müssen, wie Sie Änderungen an der Lebensspinnzeit handhaben, ignorieren Sie einfach diesen Randfall oder passen Sie alle Beiträge an.