wordpress彻底关闭自动生成缩略图,节约服务器资源空间(附清理缩略图脚本)

前言

WordPress上传图片如何禁止自动生成缩略图呢?我们在使用WordPress程序的时候上传的图片会自动生成缩略图,还会占用我们的空间内容。那么我们如何来禁止呢?今天安全小天地给大家总结了禁止生成缩略图的方法,希望能够帮助到大家。

一、Wordpress仪表盘设置

进入wordpress后台,

WordPress后台的仪表盘,

通过 设置 → 媒体,

将图像大小数值都设置为0然后保存即可

(注:此方法对之前已经上传到媒体中的图片无效仅限于设置以后上传的图片有限。)如下图所示:

图片[1]-wordpress彻底关闭自动生成缩略图,节约服务器资源空间(附清理缩略图脚本)-安全小天地

二、主题 functions.php 文件添加代码

需要添加以下代码

//禁止缩略图
add_filter( \'add_image_size\', create_function( \'\', \'return 1;\' ) );
//禁止缩略图
add_filter( \'add_image_size\', create_function( \'\', \'return 1;\' ) );
//禁止缩略图 add_filter( \'add_image_size\', create_function( \'\', \'return 1;\' ) );
// 禁用自动生成的图片尺寸
function shapeSpace_disable_image_sizes($sizes) {
unset($sizes[\'thumbnail\']); // disable thumbnail size
unset($sizes[\'medium\']); // disable medium size
unset($sizes[\'large\']); // disable large size
unset($sizes[\'medium_large\']); // disable medium-large size
unset($sizes[\'1536x1536\']); // disable 2x medium-large size
unset($sizes[\'2048x2048\']); // disable 2x large size
return $sizes;
}
add_action(\'intermediate_image_sizes_advanced\', \'shapeSpace_disable_image_sizes\');
// 禁用缩放尺寸
add_filter(\'big_image_size_threshold\', \'__return_false\');
// 禁用其他图片尺寸
function shapeSpace_disable_other_image_sizes() {
remove_image_size(\'post-thumbnail\'); // disable images added via set_post_thumbnail_size()
remove_image_size(\'another-size\'); // disable any other added image sizes
}
add_action(\'init\', \'shapeSpace_disable_other_image_sizes\');
// 禁用自动生成的图片尺寸
function shapeSpace_disable_image_sizes($sizes) {
    unset($sizes[\'thumbnail\']);    // disable thumbnail size
    unset($sizes[\'medium\']);       // disable medium size
    unset($sizes[\'large\']);        // disable large size
    unset($sizes[\'medium_large\']); // disable medium-large size
    unset($sizes[\'1536x1536\']);    // disable 2x medium-large size
    unset($sizes[\'2048x2048\']);    // disable 2x large size
    return $sizes;
}
add_action(\'intermediate_image_sizes_advanced\', \'shapeSpace_disable_image_sizes\');
// 禁用缩放尺寸
add_filter(\'big_image_size_threshold\', \'__return_false\');
// 禁用其他图片尺寸
function shapeSpace_disable_other_image_sizes() {
    remove_image_size(\'post-thumbnail\'); // disable images added via set_post_thumbnail_size() 
    remove_image_size(\'another-size\');   // disable any other added image sizes
}
add_action(\'init\', \'shapeSpace_disable_other_image_sizes\');
// 禁用自动生成的图片尺寸 function shapeSpace_disable_image_sizes($sizes) { unset($sizes[\'thumbnail\']); // disable thumbnail size unset($sizes[\'medium\']); // disable medium size unset($sizes[\'large\']); // disable large size unset($sizes[\'medium_large\']); // disable medium-large size unset($sizes[\'1536x1536\']); // disable 2x medium-large size unset($sizes[\'2048x2048\']); // disable 2x large size return $sizes; } add_action(\'intermediate_image_sizes_advanced\', \'shapeSpace_disable_image_sizes\'); // 禁用缩放尺寸 add_filter(\'big_image_size_threshold\', \'__return_false\'); // 禁用其他图片尺寸 function shapeSpace_disable_other_image_sizes() { remove_image_size(\'post-thumbnail\'); // disable images added via set_post_thumbnail_size() remove_image_size(\'another-size\'); // disable any other added image sizes } add_action(\'init\', \'shapeSpace_disable_other_image_sizes\');

三、Wordpress全局选项设置

由于WordPress预置这些参数并直接在安装时就写入数据库,

单纯通过在后台设置-媒体-图像大小 下将所有数值改为0,WordPress仍会创建一个固定宽度为768的文件。

有没有彻底禁用缩略图的办法了,答案是:有。那就开启WordPress上帝模式(全局选项设置),

通过http://你的域名/wp-admin/options.php访问即可进入了WordPress的全部设置

(也就是我们常说的WordPress上帝模式)页面。

在此页面找到medium_large_size_w选项,将其设置为 0 然后保存。

图片[2]-wordpress彻底关闭自动生成缩略图,节约服务器资源空间(附清理缩略图脚本)-安全小天地

当全部配置好之后,即可关闭自动缩略图生成

清理缩略图

进入wordpress服务器地址,进入目录域名/wp-content/uploads,下图为清理后效果,

只会删除 xxxxx-2560x1280.png一类格式的图片,不会删除其余文件

图片[3]-wordpress彻底关闭自动生成缩略图,节约服务器资源空间(附清理缩略图脚本)-安全小天地

脚本

#coding=utf-8
import re
import os
def get_file_path(root_path, file_list, dir_list):
# 获取该目录下所有的文件名称和目录名称
dir_or_files = os.listdir(root_path)
for dir_file in dir_or_files:
# 获取目录或者文件的路径
dir_file_path = os.path.join(root_path, dir_file)
# 判断该路径为文件还是路径
if os.path.isdir(dir_file_path):
dir_list.append(dir_file_path)
# 递归获取所有文件和目录的路径
get_file_path(dir_file_path, file_list, dir_list)
else:
file_list.append(dir_file_path)
pass
return file_list
def delete_file(deletes_files,find_delete,find_mulu):
for delete_file in deletes_files:
delete_file = str(delete_file)
delete_file = str(re.findall(find_delete,delete_file)).replace(\"[\'\",\"\").replace(\"\']\",\"\")
try:
os.remove(delete_file)
with open(\"已删除文件.txt\",\"a+\",encoding=\"utf-8\") as f:
f.write(str(delete_file) + \"\\n\")
except Exception as e:
pass
if __name__ == \"__main__\":
# 根目录路径
root_path = \"./\"
# 用来存放所有的文件路径
file_list = []
# 用来存放所有的目录路径
dir_list = []
# 用来存放所有的删除文件
deletes_files = []
# 匹配规则
find_delete = re.compile(r\'.+?-\\d[0-9]{0,5}\\w[x]\\d[0-9]+.\\w[jpg,png,jpeg]+\')
find_mulu = re.compile(r\'.{2}\\d{2}\\\\\')
deletes_files = get_file_path(root_path, file_list, dir_list)
delete_file(deletes_files,find_delete,find_mulu)
#coding=utf-8
import re
import os



def get_file_path(root_path, file_list, dir_list):
    # 获取该目录下所有的文件名称和目录名称
    dir_or_files = os.listdir(root_path)
    for dir_file in dir_or_files:
        # 获取目录或者文件的路径
        dir_file_path = os.path.join(root_path, dir_file)
        # 判断该路径为文件还是路径
        if os.path.isdir(dir_file_path):
            dir_list.append(dir_file_path)
            # 递归获取所有文件和目录的路径
            get_file_path(dir_file_path, file_list, dir_list)
        else:
            file_list.append(dir_file_path)
            pass
    return file_list
            

def delete_file(deletes_files,find_delete,find_mulu):
    for delete_file in deletes_files:
        delete_file = str(delete_file)

        delete_file = str(re.findall(find_delete,delete_file)).replace(\"[\'\",\"\").replace(\"\']\",\"\")
        try:
            os.remove(delete_file)
            with open(\"已删除文件.txt\",\"a+\",encoding=\"utf-8\") as f:
                f.write(str(delete_file) + \"\\n\")       
        except Exception as e:
            pass


if __name__ == \"__main__\":
    # 根目录路径
    root_path = \"./\"
    # 用来存放所有的文件路径
    file_list = []
    # 用来存放所有的目录路径
    dir_list = []
    # 用来存放所有的删除文件
    deletes_files = []
    # 匹配规则
    find_delete = re.compile(r\'.+?-\\d[0-9]{0,5}\\w[x]\\d[0-9]+.\\w[jpg,png,jpeg]+\')
    find_mulu = re.compile(r\'.{2}\\d{2}\\\\\')


    deletes_files = get_file_path(root_path, file_list, dir_list)
    delete_file(deletes_files,find_delete,find_mulu)
#coding=utf-8 import re import os def get_file_path(root_path, file_list, dir_list): # 获取该目录下所有的文件名称和目录名称 dir_or_files = os.listdir(root_path) for dir_file in dir_or_files: # 获取目录或者文件的路径 dir_file_path = os.path.join(root_path, dir_file) # 判断该路径为文件还是路径 if os.path.isdir(dir_file_path): dir_list.append(dir_file_path) # 递归获取所有文件和目录的路径 get_file_path(dir_file_path, file_list, dir_list) else: file_list.append(dir_file_path) pass return file_list def delete_file(deletes_files,find_delete,find_mulu): for delete_file in deletes_files: delete_file = str(delete_file) delete_file = str(re.findall(find_delete,delete_file)).replace(\"[\'\",\"\").replace(\"\']\",\"\") try: os.remove(delete_file) with open(\"已删除文件.txt\",\"a+\",encoding=\"utf-8\") as f: f.write(str(delete_file) + \"\\n\") except Exception as e: pass if __name__ == \"__main__\": # 根目录路径 root_path = \"./\" # 用来存放所有的文件路径 file_list = [] # 用来存放所有的目录路径 dir_list = [] # 用来存放所有的删除文件 deletes_files = [] # 匹配规则 find_delete = re.compile(r\'.+?-\\d[0-9]{0,5}\\w[x]\\d[0-9]+.\\w[jpg,png,jpeg]+\') find_mulu = re.compile(r\'.{2}\\d{2}\\\\\') deletes_files = get_file_path(root_path, file_list, dir_list) delete_file(deletes_files,find_delete,find_mulu)

新建文件1.py,然后终端切换到图片上传路径

cd /www/wwwroot/域名/wp-content/uploads
python 1.py
cd /www/wwwroot/域名/wp-content/uploads
python 1.py
cd /www/wwwroot/域名/wp-content/uploads python 1.py

稍等片刻,然后刷新文件查看即可发现,多余缩略图已经全部删除,网站图片加载依旧正常(图片文件都存在,不会误删,但是不保证文章里面使用的是裁剪过后的图片,这样会导致404,想好就可以进行操作)

但是,这些操作做好还是在建站初期就做好,要不然都是血泪史啊

------本文已结束,感谢您的阅读------
THE END
喜欢就支持一下吧
点赞9 分享
Work hard in silence, let success make the noise.
在沉默中努力,让成功自己发声
评论 抢沙发

请登录后发表评论

    暂无评论内容