分享各种网络资源
是我乃至整个互联网的精髓所在
最新公告:
  • 开启被动注册模式,详情点击这里,同时接小单,QQ:330733312
  • 目前站点正在不断折腾和调试中,如有问题请见谅
     您目前所在位置: 站点首页 » WordPress » WordPress 代码 » WordPress远程图片自动下载到服务器
  • WordPress远程图片自动下载到服务器

  • 代码来源
  • 插件功能
  • 相关代码
  • 注意事项
  • 功能评论
  • WordPress远程图片自动下载到服务器-BanYuner

    代码来源

    代码来自:http://www.dedewp.com/3363.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."<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 ='http://127.0.0.1/wp-content/uploads'.$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;
    }

    注意事项

    代码中的127.0.0.1记得替换为自己的域名

    功能评论

    如我所说的,一般是用不到这个功能的,除了采集站以外,但是如果你添加上,也是可以的

    关注我们 打赏 分享此文

    微信扫码,关注我们

    扫码,支持我

    WordPress远程图片自动下载到服务器

    支付宝(点击图片切换)

    扫码,支持我

    WordPress远程图片自动下载到服务器

    微信(点击图片切换)

    扫码,手机看

    WordPress远程图片自动下载到服务器
    匿名

    个人评价:┃草根博主┃站点无技术含量┃文章内容不够吸引人┃转载内容随处可见┃资源均来自网络┃分享是我的宗旨,也是这个站点存在意义,分享的东西你现在可能不需要,但是我相信只要在某个时间你需要的时候能在这里找到,那么我就是成功的

    WordPress远程图片自动下载到服务器
    5 + 3 =