wordpress远程图片文件自动本地化的代码

2018-02-0205:40:08网站建设与开发Comments3,072 views字数 3308阅读模式

用过百度ueditor编辑器插件的小伙伴一定会发现,ueditor编辑器会自动把外链的原创图片抓取到本地,并且使用本地的图片链接来显示在网站上,这个对于很多怕外链图片不稳定又不愿意自己下载上传图片的小伙伴来说简直就是神器~,可是呢不使用ueditor小伙伴就享受不到这个神器般的功能,正好在某老外博客看到一篇远程图片自动本地化的代码魔客吧这就立即分享给大家,代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/327.html

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."
"; 
 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,$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; 
}

将次代码写入主题的functions.php文件或者是functions.php的引入文件中即可,以后每当在wordpress发布文章时如果文章中含有外链图片就会自动本地化了,无需任何设置操作非常方便。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/327.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/cms/327.html

Comment

匿名网友 填写信息

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

确定