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

时间:2013-11-23 05:41:16

标签: php mysql wordpress

我需要从wordpress数据库中的自定义帖子类型中删除_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 metakey的更好方法让我知道,因为我有400多个svg帖子,不能通过每个帖子。

2 个答案:

答案 0 :(得分:0)

你在找这样的东西吗?

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'

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

答案 1 :(得分:0)

首先,您的代码将首先删除所有附件,然后清理(不仅清除_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 ...
    • 最后一行仅用于演示,在您的情况下我假设您不需要它 - 因此请相应删除..