DeveloperBreeze

Wp_Delete_Post Development Tutorials, Guides & Insights

Unlock 1+ expert-curated wp_delete_post tutorials, real-world code snippets, and modern dev strategies. From fundamentals to advanced topics, boost your wp_delete_post skills on DeveloperBreeze.

How to Delete All WordPress Posts and Their Uploads Using a Custom PHP Script

Code October 25, 2024
php

You can loop through all posts, delete each post, and then remove any associated media files (attachments). Here's a complete script to achieve this:

<?php
// Load WordPress environment
require_once('/path/to/your/wp-load.php');

// Get all posts (any post type)
$args = array(
    'post_type'      => 'any', // 'any' retrieves all post types (posts, pages, custom post types)
    'post_status'    => 'any', // 'any' retrieves all post statuses
    'posts_per_page' => -1,    // Retrieve all posts
);

$all_posts = get_posts($args);

foreach ($all_posts as $post) {
    // Get the post ID
    $post_id = $post->ID;

    // Check if the post has attachments (media files)
    $attachments = get_attached_media('', $post_id);

    // Delete each attachment associated with the post
    foreach ($attachments as $attachment) {
        $attachment_id = $attachment->ID;
        // This deletes the file from the uploads directory and the database record
        wp_delete_attachment($attachment_id, true);
    }

    // Delete the post itself
    wp_delete_post($post_id, true); // true = force delete, bypass trash
}

echo 'All posts and their uploads have been deleted.';