我需要从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帖子,不能通过每个帖子。
答案 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
...