前言
WordPress上传图片如何禁止自动生成缩略图呢?我们在使用WordPress程序的时候上传的图片会自动生成缩略图,还会占用我们的空间内容。那么我们如何来禁止呢?今天安全小天地给大家总结了禁止生成缩略图的方法,希望能够帮助到大家。
一、Wordpress仪表盘设置
进入wordpress后台,
WordPress后台的仪表盘,
通过 设置 → 媒体,
将图像大小数值都设置为0然后保存即可
(注:此方法对之前已经上传到媒体中的图片无效仅限于设置以后上传的图片有限。)如下图所示:
![图片[1]-wordpress彻底关闭自动生成缩略图,节约服务器资源空间(附清理缩略图脚本)-安全小天地](https://img.godyu.com/2023/12/20231226131352713.png?imageView2/0/format/webp/q/75)
二、主题 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 sizeunset($sizes[\'medium\']); // disable medium sizeunset($sizes[\'large\']); // disable large sizeunset($sizes[\'medium_large\']); // disable medium-large sizeunset($sizes[\'1536x1536\']); // disable 2x medium-large sizeunset($sizes[\'2048x2048\']); // disable 2x large sizereturn $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彻底关闭自动生成缩略图,节约服务器资源空间(附清理缩略图脚本)-安全小天地](https://img.godyu.com/2023/12/20231226211353482.png?imageView2/0/format/webp/q/75)
当全部配置好之后,即可关闭自动缩略图生成
清理缩略图
进入wordpress服务器地址,进入目录域名/wp-content/uploads
,下图为清理后效果,
只会删除 xxxxx-2560x1280.png
一类格式的图片,不会删除其余文件
![图片[3]-wordpress彻底关闭自动生成缩略图,节约服务器资源空间(附清理缩略图脚本)-安全小天地](https://img.godyu.com/2023/12/20231226211354775.png?imageView2/0/format/webp/q/75)
脚本
#coding=utf-8import reimport osdef 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)passreturn file_listdef 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:passif __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/uploadspython 1.pycd /www/wwwroot/域名/wp-content/uploads python 1.pycd /www/wwwroot/域名/wp-content/uploads python 1.py
稍等片刻,然后刷新文件查看即可发现,多余缩略图已经全部删除,网站图片加载依旧正常(图片文件都存在,不会误删,但是不保证文章里面使用的是裁剪过后的图片,这样会导致404,想好就可以进行操作)
但是,这些操作做好还是在建站初期就做好,要不然都是血泪史啊
暂无评论内容