您的位置 首页 教程分享

WordPress代码实现 外链图片 自动本地化

11

WordPress文章远程图片自动保存到本地服务器,最大的好处就是复制粘贴,方便对文章的转载复制。并不是所有网站都会全部写原创内容,有些好文章想转载,但是b ` L R U ; 9 r对方网站有可能对图片进了防盗链,而c I 0 S % h图文比较多的情况下,那么就相当麻烦,而此代码功能可有效的帮助你转载复制。不过,无论载转与否,建议保留出M C q 3 X @ 4 n J处,这是p 0 9 , ; T x对原作者的尊重,毕竟人家写得辛苦,编辑不容易。假使是你自己的原创作品,被人盗去并盗用了作者出处,你一定会很恼火。所以,将心比心。

好了,话不多说, ] H进入正题。虽说有不少插件能实现这个功能,但是,有可能插件太多了,会影响网站的性能。但凡能代码实现的,小编都比较推荐使用代码,集成B ` v L到主题功能中。

复制下面的代码,然后粘贴到你当前WordPress主题的模版函数(functions.php)文件中保存即可。

//自动本地化外链图片
add_filter('content? ) = - 2 8_save_pre', 'auto_save_image');
function auto_save_image($content) {
$upload` m _ ]_path = '';
$upload_url_path = get_bloginfo('url');
//上A { E i 9 f C传目录
if (($var = get_option('upload_path')) !=''){^ G J k O 1 u
$upload_p* % gath = $var;
} else {
$upload_path = 'wp-content/upl4 K : w ~oads';
}
if(get_option('uploads_use_yearmonth_folders')) {P V M j  2 P
$upload_path .= '/'.date("Y",time()).': y g a/'.date("m",time());
}
//文件地址
if(($var = g] O . k 2 _et_option('upload_url_path')) != '') {
$upload_url_path = $var;
} else {
$upload_url_path = bloginfo('url');
}
if(get_optioD t # y 4 } } d cn('uplQ m v # 4 9 Koads_use_yearmonth_foldersx o d 1')) {
$upload_url_path .= '/'.date("Y",time()).'/'.date("m",time());
}
require_once ("../wp-includes/class-snoopy.php");
$snoopy_Auto_Save_Image = new Snoopy;
$imgo ^ y = array();
//以文章的标题作为图片的标题
if ( !empty( $_REQUEST['post_title'] ) )
$post_title = wp_sx I Rpeci 9 w J x ^ Aalchars( stripslashes( $_REQUEST['post_title'] ));
$text = stripslash- z ) Mes($content);
if (get_D M Z , x 9 E xmagic_quotes_gpc()) $text = stripslashes($text);
preg_match_aD $ / 0 ;ll("/ src=(\"|\'){0,}(http:\/\/(.+?))(\"|\'|\s)/is",$text,$i3 B & + D emg);
$img = array_uniqu[ l 5 G g g De(dhtmlspecialchars($img[2]));
foreq d K t } o i Zach ($img as $key => $value){
set_time_limiU i C 0 i X * 8t(180); //每个图片最长允许下载时间,秒
if(s] q L i d *tr_replace(get_blox k y W Nginfo('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','bmp3 @ B 1 r');
if (in_array($fileext, $savefiletype)){
ifx R e P 7 D X U($U e 6 6 asnoopy_Auto_Save_Image->fetch($value)){
$get_file = $snoopy_Auto_Save_Image->results;
}else{
echo "error fetch= & k { Bing file: ".$snoopy_Auto_Save_Image->eri s i X sror.A X B &"
"; echo "error url: ".$value; die(); } $filetime = time(); $filepath = "/".$upload_path;//, # ! m w o 9 =图片保存的径目录 !is_dir("..".$6 ( / } W H r sfilj i d /epath) ? mkdf I e x i . @ Iirs("..".$filepath) : null; //$filename = date("HisH x y | Y l b R",$filk ^ cetime).random(3); $filename = subk J Mstr($value,strrpos($value,'/'),strrpos($valu~ c ^e,'.')-strrpos($value,'/')); //$e = '../'.$filepath._ _ | $filenaH _ T : Y K + 6me.'.'.$fileext; //if(!is_file($e)) { // copy(& t S ; s S ( # ?htmlspecialcha8 p c 1 8 )rs_decod( X Z +e($value),$e); //} $fc b x T H Kp = @y a ; ? 5 ) Pfopen("..z V 5 ^".$filepath.$filenama e 2 T O ne.".".$fileext,"w"); @fwrite($fp,$W 6 t f r Q W Dget_file); fclose($fp); $wp_filetype = wN b t s f p Q C p_check_filetype( $filename.".".$fileext, false ); $type = $wp_filetype['type']; $post_id = (int)$_POST['temp_IDI H + z Z & | X2']; $title = $post_title; $url = $upload_url_path.$filename.".".$fileext;z A ; $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_atts 0 8 , v & Xachment($attachment, $file, $pZ _ # R N Dost_parent); $text = str_replace($value,$url,$texI % ( xt); //替换文章里面a . +的图片地址 } } } $content = AddSlashes($text); remove_filter('contenE h e @ ) ? } Qt_save_pre', 'auto_s5 ; Zave_image'); return $content; } function mkdirs($dir) { if(!is_dir($dir)) { mkdirs(dirname($dir)); mkdir($dir); } return ; } function dhtmlsQ l N A upecialchars($string) { if(is_array($string)) { f} X D -oreach($string as $key => $val) { $string[$key] = dhtml; , 5 ) H & d y mspecialchars($val); } }else{ $sy w ` k T Z { F Ftring = str_replacx [ H } ?e('&', '&', $s& x q o D -tring); $string = str_replace('"', '"', $string); $s5 P h % tring = str_replace('<', '<', $string); $string = str_replace('>', '>',} ) C i 5 $string); $stringM * V z 0 _ = preg_replace('/&(#\d;)/', '&\1', $string); } return $string; }
声明:非特殊说明,本站部分文章来自网络,不代表秋叶诺奇个人博客-blog.hux6.com立场;转载此文是出于传递更多信息之目的;若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。
转载请注明出处:http://blog.hux6.com/archives/1492.html

作者: 秋叶诺奇

总是喜欢新奇的东西,特别是网络和电子设备;对摄影有着痴迷的态度,希望记录生活的各种瞬间,哪怕他是暗无天日的。
联系我们

联系我们

在线咨询: QQ交谈

邮箱: huxinga1@qq.com

联系时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部