无插件实现wordpress远程图片自动本地化
发布时间:2025-10-19 15:30:02 本站作者 【 字体:大 中 小 】 浏览:87 次
找资料时在其他人的博客看到一篇远程图片自动本地化的代码,分享给大家,将代码写入主题的functions.php文件或者是functions.php的引入文件中即可,以后每当在wordpress发布文章时如果文章中含有外链图片就会自动本地化了,无需任何设置操作非常方便。
代码如下:
add_filter('content_save_pre', 'auto_save_image');
function auto_save_image($content) {
$upload_path = '';
$upload_url_path = get_bloginfo('url');
//上传目录
if (($var = get_option('upload_path')) !=''){
$upload_path = $var;
} else {
$upload_path = 'wp-content/uploads';
}
if(get_option('uploads_use_yeArmonth_folders')) {
$upload_path .= '/'.date("Y",time()).'/'.date("m",time());
}
//文件地址
if(($var = get_option('upload_url_path')) != '') {
$upload_url_path = $var;
} else {
$upload_url_path = bloginfo('url');
}
if(get_option('uploads_use_yearmonth_folders')) {
$upload_url_path .= '/'.date("Y",time()).'/'.date("m",time());
}
require_once ("../wp-includes/class-snoopy.php");
$snoopy_Auto_Save_Image = new Snoopy;
$img = array();
//以文章的标题作为图片的标题
if ( !empty( $_REQUEST['post_title'] ) )
$post_title = wp_specialchars( stripslashes( $_REQUEST['post_title'] ));
$text = stripslashes($content);
if (get_magic_quotes_gpc()) $text = stripslashes($text);
preg_match_all("/ src=("|'){0,}(http://(.+?))("|'|s)/is",$text,$img);
$img = array_unique(dhtmlspecialchars($img[2]));
foreach ($img as $key => $value){
set_time_limit(180); //每个图片最长允许下载时间,秒
if(str_replace(get_bloginfo('url'),"",$value)==$value&&str_replace(get_bloginfo('home'),"",$value)==$value){
//判断是否是本地图片,如果不是,则保存到服务器
$fileext = substr(strrchr($value,'.'),1);
$fileext = strtolower($fileext);
if($fileext==""||strlen($fileext)>4)
$fileext = "jpg";
$savefiletype = array('jpg','gif','png','bmp');
if (in_array($fileext, $savefiletype)){
if($snoopy_Auto_Save_Image->fetch($value)){
$get_file = $snoopy_Auto_Save_Image->results;
}else{
echo "error fetching file: ".$snoopy_Auto_Save_Image->error."<br>";
echo "error url: ".$value;
die();
}
$filetime = time();
$filepath = "/".$upload_path;//图片保存的路径目录
!is_dir("..".$filepath) ? mkdirs("..".$filepath) : null;
//$filename = date("His",$filetime).random(3);
$filename = substr($value,strrpos($value,'/'),strrpos($value,'.')-strrpos($value,'/'));
//$e = '../'.$filepath.$filename.'.'.$fileext;
//if(!is_file($e)) {
// copy(htmlspecialchars_decode($value),$e);
//}
$fp = @fopen("..".$filepath.$filename.".".$fileext,"w");
@fwrite($fp,$get_file);
fclose($fp);
$wp_filetype = wp_check_filetype( $filename.".".$fileext, false );
$type = $wp_filetype['type'];
$post_id = (int)$_POST@['temp_ID2'];
$title = $post_title;
$url = $upload_url_path.$filename.".".$fileext;
$file = $_SERVER['DOCUMENT_ROOT'].$filepath.$filename.".".$fileext;
//添加数据库记录
$attachment = array(
'post_type' => 'attachment',
'post_mime_type' => $type,
'guid' => $url,
'post_parent' => $post_id,
'post_title' => $title,
'post_content' => '',
);
$id = wp_insert_attachment($attachment, $file, $post_parent);
$text = str_replace($value,'/wp-content/uploads/'.$url,$text); //替换文章里面的图片地址
}
}
}
$content = AddSlashes($text);
remove_filter('content_save_pre', 'auto_save_image');
return $content;
}
function mkdirs($dir)
{
if(!is_dir($dir))
{
mkdirs(dirname($dir));
mkdir($dir);
}
return ;
}
function dhtmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = dhtmlspecialchars($val);
}
}else{
$string = str_replace('&', '&', $string);
$string = str_replace('"', '"', $string);
$string = str_replace('<', '<', $string);
$string = str_replace('>', '>', $string);
$string = preg_replace('/&(#d;)/', '&1', $string);
}
return $string;
} 热门推荐
最新发布
Office2024激活密钥分享,2026年Office 2024专业增强版密钥分享
Office2024激活密钥分享:2026年Office 2024专业增强版密钥分享产品密钥:604C7-MN692-PBMVK-7GYQ8-Q7DTD类型描述:Office_ProPlus2024VL_MAK_AE2错误代码:在线密钥剩余次数:138288产品密钥:XYNT8-B0HK4-3VHM-T8PHJ-4VY20类型描述:Office_ProPlus2024VL_MAK_AE2错误代码:在线密钥剩余次数:138288产品密钥:74]MX-0NM6T_YDVF2-P...
visio 2016 永久激活密钥 visio 2016专业版激活码 正版 visio 2016 零售版产品密钥
有用户找小编要最新 visio 2016 激活密钥,visio 2016 是一个独立组件,如果安装了正版 visio 2016 专业版,需要 visio 专业版 2016 密钥激活。激活 visio 2016 有两种秘钥,一种是 visio 2016 永久激活码,一种是 visio2016 kms 安装密钥,kms 激活密钥是半年期限,但是永久免费使用。这边小编为...
office2016专业增强版密钥,office2016专业版激活秘钥分享(亲测可用)
office2016专业增强版是一款办公必备软件,而在安装完成之后,都是需要通过官方提供的激活密钥来进行激活认证,但是如果没有激活的话只有30天试用期,期限一过就不能用了,为此,小编这就给大家分享一下office2016专业增强版激活密钥及最新激活码供大家参考,同时支持32位和64位。说明:因为密钥的特性不能保证100%激活,此...
Office2016激活密钥,Office2016专业版/家庭和学生版密钥
Office2016是现在大家主要使用的Office版本,当然了在安装完成之后最重要的是激活,网上有非常多的Office2016激活具,但是如果你不喜欢KMS激活,那么可以看看这里有没有你需要的Office2016永久激活MAK KEY密钥。本站时刻保持更新。<img alt="【最新】Office2016激活密钥" office2016专业版="" 家庭和...
大家都在看
Office2024激活密钥分享,2026年Office 2024专业增强版密钥分享

visio 2016 永久激活密钥 visio 2016专业版激活码 正版 visio 2016 零售版产品密钥

office2016专业增强版密钥,office2016专业版激活秘钥分享(亲测可用)

Office2016激活密钥,Office2016专业版/家庭和学生版密钥

2026最新office2016专业版永久激活密钥/序列号,office2016专业版激活秘钥分享推荐

office2016专业增强版永久激活密钥,office2016专业版激活秘钥怎么用

office2016怎么激活密钥?office2016激活秘钥怎么使用

个人支付宝实名账号出售|v2/v3支付宝账号出售|实名支付宝购买

Office2024激活密钥分享_2025年永久激活密钥分享及激活工具分享

office2022激活密钥免费激活2026新版

