好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

WORDPRESS远程图片本地化实现程序 - WordPress

WORDPRESS远程图片本地化实现程序

wordpress博客发文章时如果带有图片不会自动下载而是使用原网站图片了,下面我们一起看看WORDPRESS远程图片本地化例子.

将远程图片本地化代码写入/wp-content/themes/twentyfourteen/主题的functions.php文件中即可,以后每次在wordpress发布文章时如果文章中含有外链图片就会自动本地化了,无需任何设置操作非常方便,代码如下:

// 远程图片本地化   add_filter(‘content_save_pre’, ‘auto_save_image’);  function  auto_save_image( $content ){  $upload_dir  = wp_upload_dir( date (‘Y/m’));  $upload_path  =  $upload_dir [ 'path' ];  $upload_url_path  =  $upload_dir [ 'url' ];  require_once  ([wp-includes/ class -snoopy.php]);  $snoopy_Auto_Save_Image  =  new  Snoopy;  $img  =  array ();  if  (! empty empty ( $_REQUEST [ 'post_title' ]))  $post_title  = wp_specialchars( stripslashes ( $_REQUEST [ 'post_title' ]));  $text  =  stripslashes ( $content );  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 ;  //图片保存的路径目录   $filename  =  substr ( $value ,  strrpos ( $value , ‘/’),  strrpos ( $value , ‘.’) –  strrpos ( $value , ‘/’));  $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  dhtmlspecialchars( $string ){  if ( is_array ( $string )){  foreach ( $string   as   $key  =>  $val ){  $string [ $key ] = dhtmlspecialchars( $val );  }  //开源软件:phpfensi测试数据   } else {  $string  =  str_replace ( array (‘&’, ‘]‘, ‘<‘, ‘>’),  array (‘&amp;’, ‘&quot;’, ‘&lt;’, ‘&gt;’),  $string );  if ( strpos ( $string , ‘&amp;#’) !== false) {  $string  = preg_replace(‘/&amp;((#(\d{3,5}|x[a-fA-F0-9]{4}));)/’, ‘&\\1′,  $string );  }  }  return   $string ;  }

查看更多关于WORDPRESS远程图片本地化实现程序 - WordPress的详细内容...

  阅读:60次