分享各种网络资源
是我乃至整个互联网的精髓所在
最新消息:开启被动注册模式,详情点击这里,同时接小单,QQ:330733312
 您目前所在位置: 站点首页 » WordPress » WordPress 代码 » WordPress远程图片自动下载到服务器
  • +
  • 5
  • 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 分类描述添加可视化编辑模式

      WordPress 分类描述添加可视化编辑模式

      可视化编辑模式一直是很多人喜欢使用的,但是我个人方面还是喜欢传统的 html 模式,不是别的,主要是自己写的东西通过代码出现的就是自己的,而...

      点击查看
    • 6 款 WordPress 缓存插件对比测试

      6 款 WordPress 缓存插件对比测试

      缓存插件我相信每个站点几乎都是在使用的,插件的原理并不是能提高带宽也不是说能提高页面加载速度等等,仅仅是为了降低服务器的压力,当人群数量大量...

      点击查看
    • WordPress 获取分类第一篇文章第一张图片地址

      WordPress 获取分类第一篇文章第一张图片地址

      这个功能我不知道网络上面有没有相关教程,至少我是没有看到的,所以这里还是简单的说一下,可能其中有不少问题,也可能是我的方法太过复杂,但是还是...

      点击查看
    WordPress远程图片自动下载到服务器
    9 + 5 =