function delete_products_without_featured_image() {
// Safety check: only run manually
if ( ! isset( $_GET['delete_no_image_products'] ) ) return;
$args = [
'post_type' => 'product',
'posts_per_page' => -1,
'meta_query' => [
[
'key' => '_thumbnail_id',
'compare' => 'NOT EXISTS',
],
],
'fields' => 'ids',
];
$product_ids = get_posts( $args );
if ( empty( $product_ids ) ) {
echo 'No products found without a featured image.';
return;
}
foreach ( $product_ids as $id ) {
wp_delete_post( $id, true ); // true = force delete, skip trash
}
echo 'Deleted ' . count( $product_ids ) . ' products.';
}
add_action( 'admin_notices', 'delete_products_without_featured_image' );
访问网址:https://yoursite.com/wp-admin/?delete_no_image_products=1
用mysql模式
-- Preview first
SELECT p.ID, p.post_title
FROM wp_posts p
LEFT JOIN wp_postmeta pm
ON p.ID = pm.post_id AND pm.meta_key = '_thumbnail_id'
WHERE p.post_type = 'product'
AND p.post_status = 'publish'
AND pm.meta_id IS NULL;
-- Delete (run after confirming the preview above)
DELETE p, pm
FROM wp_posts p
LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id
WHERE p.post_type = 'product'
AND p.post_status = 'publish'
AND NOT EXISTS (
SELECT 1 FROM wp_postmeta
WHERE post_id = p.ID AND meta_key = '_thumbnail_id'
);
WP开发教程 WordPress导师在线教程