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 (!emptyempty($_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);
- } //开源软件:Vevb.com
- }else{
- $string = str_replace(array(‘&’, ‘”‘, ‘<‘, ‘>’), array(‘&’, ‘"’, ‘<’, ‘>’), $string);
- if(strpos($string, ‘&#’) !== false) {
- $string = preg_replace(‘/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/’, ‘&\\1′, $string);
- }
- }
- return $string;
- }
新闻热点
疑难解答
图片精选