Cronjob ausführen';
//Entwürfe und gelöschte Artikel 1x auslesen und inklusive Bilder löschen
global $post;
$myposts = get_posts( array(
'posts_per_page' => 300,
'orderby' => 'modified',
'order' => 'ASC',
'offset' => 0,
'post_status' => 'trash'
));
//Unvollständige Produkte löschen
if ( $myposts ) {
foreach ( $myposts as $post ) :
setup_postdata( $post );
$post_id = get_the_ID(); //WP Artikel ID
$args = array('post_parent' => $post_id);
$post_attachments = get_children($args);
if($post_attachments){
foreach ($post_attachments as $attachment){
//Alle Medien löschen
wp_delete_attachment($attachment->ID, true);
}
}
wp_delete_post($post_id, true); //Post löschen
endforeach;
wp_reset_postdata();
}
?>
Das gegebene PHP-Skript führt einen Cronjob aus, der Entwürfe und gelöschte Artikel einschließlich ihrer Bilder aus der WordPress-Datenbank löscht. Es wird auch unvollständige Produkte gelöscht, die möglicherweise noch Medienanhang haben.
Hier ist eine Schritt-für-Schritt-Erklärung des Skripts:
1. Es wird eine Überschrift “Cronjob ausführen” in der Mitte der Seite ausgegeben.
2. Das Skript ruft eine Liste von Artikeln ab, die sich im Papierkorb (Status “trash”) befinden. Es werden maximal 300 Artikel abgerufen, die nach dem Änderungsdatum aufsteigend sortiert sind.
3. Der nächste Teil des Skripts prüft, ob es unvollständige Produkte gibt und löscht diese. Es durchläuft jeden Artikel im Papierkorb und verwendet die Funktion `get_children()`, um die Anhänge (Medien) dieses Artikels zu erhalten.
4. Wenn es Anhänge für den Artikel gibt, wird eine Schleife gestartet, um jeden Anhang zu durchlaufen. Für jeden Anhang wird die Funktion `wp_delete_attachment()` verwendet, um das Anhang-Medium zu löschen.
5. Nachdem alle Anhänge eines Artikels gelöscht wurden, wird die Funktion `wp_delete_post()` verwendet, um den gesamten Artikel endgültig zu löschen.
6. Das Löschen der Artikel und ihrer Anhänge erfolgt innerhalb einer foreach-Schleife, die alle Artikel im Papierkorb durchläuft und entsprechende Operationen ausführt.
7. Schließlich wird die Funktion `wp_reset_postdata()` verwendet, um die Daten zurückzusetzen und die WordPress-Abfrage auf ihren ursprünglichen Zustand zu bringen.
Es ist wichtig zu beachten, dass dieses Skript wahrscheinlich für eine spezifische Anwendung entwickelt wurde und nicht als allgemeine Funktion für jede WordPress-Installation geeignet ist. Vor der Verwendung sollte es gründlich überprüft und an die spezifischen Anforderungen und Sicherheitsaspekte der Website angepasst werden.