如何从媒体库中批量删除图像

时间:2014-06-27 作者:user51781

我需要你的帮助。我正在尝试使用sql查询从自定义帖子类型(“book”)中批量删除附件。我在wordpress表单上找到了以下代码片段:Wordpress.org

我在本地计算机上测试了它,它从媒体库中删除了所有附件。现在,我想请您帮助设置查询,以便它只针对我自定义帖子类型“book”中的附件(特色图像和缩略图)。

谢谢

2 个回复
SO网友:user57429

您可以这样使用本机WordPress codex调用(源代码http://badlywired.com/technical-stuff/2014/11/10/code-to-delete-all-images-from-wordpress-or-nearly-all/ )

<?php
/*  create this code in a file in the main wordpress directory e.g. delmedia.php
and access it via mydomain.com/delmedia.php
*/
// Include the wp-load\'er
include(\'wp-load.php\');
$args= array(
\'post_type\'      => \'book\', // obvious
\'posts_per_page\' => -1            // get them all 
);

// get all attachments post ids
$posts = get_posts( $args );
foreach ($posts as $post_id) {
   // get an array of image data
   $image_attributes = wp_get_attachment_image_src( $post_id->ID );
   if (strpos($image_attributes[0], \'mystring\') !== FALSE){
   echo \'Image Found : \'.$image_attributes[0];
   if (false === wp_delete_attachment( wp_delete_attachment( $post_id->ID, true     ) ) ) {
       echo \' and delete failed!<br>\';
     } else {
       echo \' and delete succeeded!<br>\';
     }
   }
}
?>

SO网友:eyoung100

在此结合两种方法:

$args = array(
\'post_type\' => \'attachment\',
\'numberposts\' => null,
\'post_status\' => null,
\'post_parent\' => $post_id
);

$attachments = get_posts($args);
if ($attachments) {
DELETE FROM wp_postmeta
WHERE post_id IN
(
SELECT id
FROM wp_posts
    WHERE (post_type = \'book\')
)
;
    }
};
然后:

DELETE FROM wp_posts WHERE (post_type = \'book\')
这应该给你的文章类型是附件和书籍的结合。。。

结束

相关推荐

如何正确地将表添加到WordPress MySQL数据库

我想向Wordpress数据库添加一个新表。我需要为我的Wordpress网站的一个特定部分提供这个,这需要一些不同于我通过自定义帖子所能实现的东西。正确的做法是什么?仅仅添加一个我自己的表就足够了吗?或者我需要在PHP代码中做些什么来让Wordpress知道它?这会以任何方式影响Wordpress升级过程吗?