通过在WordPress主题函数当中加入脚本来实现自动批量删除网站无关联图片的方法

IT资讯
IT资讯
IT资讯
1242
文章
241
评论
2024-06-2312:40:29
评论
164 2415字

近来发现有个项目当中有一些重复文章,可是,删除重复文章之后发现媒体库当中还有很多无关联文章的图片素材需要删除。

如果此时使用媒体库当中的筛选功能筛选出这些无关联文章的图片素材,才批量删除的话,太慢太慢了。

如果经过几次折腾弄了一个自动批量删除无关联图片的脚本加入到网站当前主题函数当中,只要运行网站的任何页面,脚本都会在后台自动运行。

 

 

 

方法一:

 

 

 

 

 

代码如下:

function delete_unattached_media() {
    // 获取所有未附加到任何内容的媒体文件
    $args = array(
        'post_type'      => 'attachment',
        'post_status'    => 'inherit',
        'posts_per_page' => -1,
        'post_parent'    => 0,
        'fields'         => 'ids',
    );

    $unattached_media = new WP_Query($args);

    if ($unattached_media->have_posts()) {
        foreach ($unattached_media->posts as $media_id) {
            // 检查媒体文件是否被引用
            $is_referenced = false;
            $attachment_url = wp_get_attachment_url($media_id);

            if ($attachment_url) {
                // 搜索内容中是否有引用该URL
                $args = array(
                    's'              => $attachment_url,
                    'post_type'      => 'any',
                    'post_status'    => 'any',
                    'posts_per_page' => 1,
                );

                $referenced_posts = new WP_Query($args);

                if ($referenced_posts->have_posts()) {
                    $is_referenced = true;
                }
            }

            // 如果没有被引用,删除该媒体文件
            if (!$is_referenced) {
                wp_delete_attachment($media_id, true);
                echo "Deleted media ID: $media_id\n";
            }
        }
    } else {
        echo "No unattached media found.\n";
    }
}

// 运行函数一次性删除未附加的媒体文件
delete_unattached_media();

 

 

使用方法:

1. **添加代码**:将上述代码添加到主题的 `functions.php` 文件或创建一个自定义插件。
2. **运行代码**:访问你的WordPress网站,代码会自动运行并删除未附加的媒体文件。

 

 

 

 

注意事项:

1. **备份网站**:在执行任何批量删除操作之前,务必备份你的WordPress网站,包括数据库和文件。
2. **测试环境**:建议在测试环境中先运行代码,确保其效果符合预期。

 

 

 

通过在WordPress主题函数当中加入脚本来实现自动批量删除网站无关联图片的方法
通过在WordPress主题函数当中加入脚本来实现自动批量删除网站无关联图片的方法
通过在WordPress主题函数当中加入脚本来实现自动批量删除网站无关联图片的方法
通过在WordPress主题函数当中加入脚本来实现自动批量删除网站无关联图片的方法

 

 

方法二:

 

 

创建自定义插件:

 

如果你希望通过插件形式运行该代码,可以按照以下步骤创建一个自定义插件:

1. 在 `wp-content/plugins/` 目录下创建一个新目录,例如 `delete-unattached-media`。
2. 在该目录下创建一个文件 `delete-unattached-media.php`,并将上述代码粘贴到该文件中。
3. 在文件顶部添加插件头信息:

<?php /* Plugin Name: Delete Unattached Media Description: 批量永久删除媒体库中无关联的图片 Version: 1.0 Author: Your Name */ function delete_unattached_media() { // 获取所有未附加到任何内容的媒体文件 $args = array( 'post_type' => 'attachment',
        'post_status'    => 'inherit',
        'posts_per_page' => -1,
        'post_parent'    => 0,
        'fields'         => 'ids',
    );

    $unattached_media = new WP_Query($args);

    if ($unattached_media->have_posts()) {
        foreach ($unattached_media->posts as $media_id) {
            // 检查媒体文件是否被引用
            $is_referenced = false;
            $attachment_url = wp_get_attachment_url($media_id);

            if ($attachment_url) {
                // 搜索内容中是否有引用该URL
                $args = array(
                    's'              => $attachment_url,
                    'post_type'      => 'any',
                    'post_status'    => 'any',
                    'posts_per_page' => 1,
                );

                $referenced_posts = new WP_Query($args);

                if ($referenced_posts->have_posts()) {
                    $is_referenced = true;
                }
            }

            // 如果没有被引用,删除该媒体文件
            if (!$is_referenced) {
                wp_delete_attachment($media_id, true);
                echo "Deleted media ID: $media_id\n";
            }
        }
    } else {
        echo "No unattached media found.\n";
    }
}

// 运行函数一次性删除未附加的媒体文件
delete_unattached_media();

4. **激活插件**:登录到WordPress后台,导航到“插件”页面,找到“Delete Unattached Media”插件并激活它。

 

 

 

 

 

注意:

 

**性能问题**:如果你的媒体库非常大,执行该操作可能会花费较长时间,建议在非高峰期运行。

**确认删除**:删除操作是不可逆的,确保你已经备份了所有数据。

 

 

 

 

 

  • Copyright ©  PC在线云端  版权所有.
  • 转载请务必保留本文链接:https://nrcs.xyz/web/wordpress_web/12118.html
WordPress 使用 Github & JsDelivr 加速静态文件 WEB技术

WordPress 使用 Github & JsDelivr 加速静态文件

一个网站的打开速度至关重要,会直接影响搜索引擎排名和用户体验。如果您的网站加载越慢,用户离去的就会越快,而用户又是我们生存的根本。 当然网站加载速度受很多因素影响,今天我们使用 Github &...
Orgorg速率最高可达1000Mbps,流畅观看Youtube 4K、TikTok,支持 Windows、Android、iOS、Mac,支持 微信、支付宝 付款!
全球数据中心,多点BGP保证速度,无视晚高峰,全天4K秒开,IPLC专线无惧封锁
全IEPL /青云跨境,高峰时期稳定8K播放,流媒体影视, ChatGPT 解锁保障,客户端无日志保护您的隐私安全,稳定运行5年+
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: