Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
WordPress $wpdb: Delete all posts of a custom post type with its associated meta data (taxonomies, post meta) using SQL query & $wpdb
<?php
function delete_custom_posts($post_type = 'post'){
global $wpdb;
$result = $wpdb->query(
$wpdb->prepare("
DELETE posts,pt,pm
FROM wp_posts posts
LEFT JOIN wp_term_relationships pt ON pt.object_id = posts.ID
LEFT JOIN wp_postmeta pm ON pm.post_id = posts.ID
WHERE posts.post_type = %s
",
$post_type
)
);
return $result!==false;
}
?>
@LorincJuraj

This comment has been minimized.

Copy link

@LorincJuraj LorincJuraj commented Jul 21, 2020

Don't forget to use $wpdb->prefix instead of wp_ for case when WP uses non-default database prefix.

@thebigtine

This comment has been minimized.

Copy link

@thebigtine thebigtine commented Jul 29, 2020

life saver

@angryalbatross

This comment has been minimized.

Copy link

@angryalbatross angryalbatross commented Nov 12, 2020

Hero. Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment