从所有自定义帖子类型中删除_thumbnail_id


Remove _thumbnail_id from all custom post type

我需要从wordpress数据库中的自定义post类型中删除_thumbnail_id元密钥数据。我找到了这个代码,它可以让我从所有内容中删除它,但我不想让它从我的帖子中删除,只是我的自定义帖子类型"svg",有人能帮我调整代码吗?

global $wpdb;
 $attachments = $wpdb->get_results( "
 SELECT * 
 FROM $wpdb->postmeta 
 WHERE meta_key = '_thumbnail_id'
 " );
foreach ( $attachments as $attachment ) {
wp_delete_attachment( $attachment->meta_value, true );
}
$wpdb->query( "
DELETE FROM $wpdb->postmeta 
WHERE meta_key = '_thumbnail_id'
" );

或者,如果你们知道从SVG帖子中删除_thumbnail元密钥的更好方法,请告诉我,因为我有超过400篇SVG帖子,无法浏览每一篇。

你在找这样的东西吗?

DELETE m
  FROM wp_postmeta m JOIN wp_posts
    ON m.post_id = p.id
 WHERE p.post_type = 'svg'
   AND meta_key = '_thumbnail_id'

注意:在尝试删除任何内容之前,请确保数据库有可靠的备份,以防万一。

首先,您的代码将首先删除所有附件,然后清理(不仅仅是清理_thumbnail_id)-

无论如何,一般来说,这样的东西应该是有效的:

SELECT FROM 'wp_posts', WHERE 'post_type' = 'my_post_type'
  INNER JOIN 'wp_postmeta' ON 'wp_post.post_id' = 'wp_postmeta.post_id'
  AND 'meta_key'='my_meta_key' 
 //  AND 'meta_value'= my_value'// this line only if needed ...
    • 备份数据库。我对这种行为不承担任何责任
    • 验证后将SELECT更改为DELETE
    • 最后一行仅用于演示,在您的情况下,我认为您不需要它,因此相应地删除