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 (‘&’, ‘"’, ‘<’, ‘>’), $string ); if ( strpos ( $string , ‘&#’) !== false) { $string = preg_replace(‘/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/’, ‘&\\1′, $string ); } } return $string ; }查看更多关于WORDPRESS远程图片本地化实现程序 - WordPress的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did8886