Wp_Delete_Attachment Development Tutorials, Guides & Insights

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

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

Code October 25, 2024
php
<?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.';
  • Backup: Make sure you have a backup of your database and uploads folder before running this script.
  • Use on a staging site: Test it on a staging environment before running on a live site, as it will permanently delete all posts and their uploads.