Hallo liebe WPler!
Ich habe mir eine Funktion, bzw. einen Cron Job gebastelt, der automatisch Beiträge eines bestimmten Post Types löschen soll, sobald diese älter als 60 Tage sind.
Dazu habe ich folgenden Code in meiner functions.php platziert:
Code
// Cron Job to Delete VFB Entries older than 60 daysif(!wp_next_scheduled( 'remove_old_vfb_entries')){
wp_schedule_event(time(), 'daily', 'remove_old_vfb_entries');
}
add_action('remove_old_vfb_entries', 'myd_remove_old_vfb_entries');
// Build the function
function myd_remove_old_vfb_entries(){
global $wpdb;
// Set max post date and post_type name
$date = date("Y-m-d H:i:s", strtotime('-60 days'));
$post_type = 'vfb_entry';
// Build the query
// Only select VFB Entries from LFG or LFM Form
$query = "
SELECT $wpdb->posts.ID FROM $wpdb->posts
WHERE post_type = '$post_type'
AND post_status = 'publish'
AND post_date < '$date'
AND ($wpdb->posts.ID IN (SELECT entry_id FROM $wpdb->postmeta_lfg4 WHERE post_id IS NOT NULL) OR $wpdb->posts.ID IN (SELECT entry_id FROM $wpdb->postmeta_lfm3 WHERE post_id IS NOT NULL))
ORDER BY post_modified DESC
";
$results = $wpdb->get_results($query);
foreach($results as $post){
// Let the WordPress API clean up the entire post trails
wp_delete_post( $post->ID, true);
}
}
Alles anzeigen
Teste ich den Query in phpMyAdmin, wird ein korrektes Ergebnis ausgeworfen. Wenn ich jedoch den Cron Job manuell in WP ausführe, wird kein Post gelöscht, obwohl er zwei löschen müsste.
Hab ich da irgendeinen Fehler drin?
Danke schon mal!