WordPress: Slet alle indlæg fra en given dato med PHP funktion
Her er en lille PHP-funktion som sletter alle indlæg fra en given dato. Funktionen indsættes i din functions.php hvor du indtaster den dato du vil slette indlæg fra i date_query. Funktionen kan du hurtigt kører via en GET url. Slet funkionen fra dit functions.php igen når du er færdig med at bruge den, eller lav en mere sikker måde at lave kør-funktionen på end GET.
*/ Get posts */
function GetPostsLENNARTC() {
$args = array( 'post_type' => 'post', 'posts_per_page' => -1,
'date_query' => array(array(
'year' => 2022,
'month' => 11,
'day' => 05,
),
));
$posts = get_posts( $args );
foreach ( $posts as $post ) {
$id = $post->ID;
change_post_status($id, "trash"); // Post statusses: publish|pending|draft|private|static|object|attachment|inherit|future|trash
var_dump('drafted: '. $id);
}
}
*/ Change post status function */
function change_post_status($post_id,$status){
$current_post = get_post( $post_id, 'ARRAY_A');
$current_post['post_status'] = $status;
wp_update_post($current_post);
}
*/ the running function via GET */
if(isset($_GET['delete'])){
GetPostsLENNARTC();
wp_die();
}
I tvivl om du sletter de rigtige WordPress indlæg?
Hvis du vil være sikker på ikke at slette nogle forkerte indlæg, og at funktionen kører rigtigt, så kan du med fordel ændre post status til “draft” og bagefter kører denne funktion i din database (PHPMyAdmin). Denne SQL funktion sletter alle indlæg som har status “draft”.
DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_status = \'draft \'