首页 > CMS > Wordpress > 正文

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

2024-09-07 00:51:28
字体:
来源:转载
供稿:网友

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

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

  1. // 远程图片本地化 
  2. add_filter(‘content_save_pre’, ‘auto_save_image’); 
  3. function auto_save_image($content){ 
  4. $upload_dir = wp_upload_dir(date(‘Y/m’)); 
  5. $upload_path = $upload_dir['path']; 
  6. $upload_url_path = $upload_dir['url']; 
  7. require_once (“../wp-includes/class-snoopy.php”); 
  8. $snoopy_Auto_Save_Image = new Snoopy; 
  9. $img = array(); 
  10. if (!emptyempty($_REQUEST['post_title'])) 
  11. $post_title = wp_specialchars(stripslashes($_REQUEST['post_title'])); 
  12. $text = stripslashes($content); 
  13. preg_match_all(“/ src=(\”|\’){0,}(http:\/\/(.+?))(\”|\’|\s)/is”, $text$img); 
  14. $img = array_unique(dhtmlspecialchars($img[2])); 
  15. foreach ($img as $key => $value){ 
  16. set_time_limit(180); //每个图片最长允许下载时间,秒 
  17. if(str_replace(get_bloginfo(‘url’), “”, $value) == $value && str_replace(get_bloginfo(‘home’), “”, $value) == $value){ 
  18. $fileext = substr(strrchr($value, ‘.’), 1); 
  19. $fileext = strtolower($fileext); 
  20. if($fileext == “” || strlen($fileext) > 4) 
  21. $fileext = “jpg”; 
  22. $savefiletype = array(‘jpg’, ‘gif’, ‘png’, ‘bmp’); 
  23. if (in_array($fileext$savefiletype)){ 
  24. if($snoopy_Auto_Save_Image->fetch($value)){ 
  25. $get_file = $snoopy_Auto_Save_Image->results; 
  26. }else
  27. echo “error fetching file: ” . $snoopy_Auto_Save_Image->error . “<br>”; 
  28. echo “error url: ” . $value
  29. die(); 
  30. $filetime = time(); 
  31. $filepath = “/” . $upload_path//图片保存的路径目录 
  32. $filename = substr($valuestrrpos($value, ‘/’), strrpos($value, ‘.’) – strrpos($value, ‘/’)); 
  33. $fp = @fopen(“..” . $filepath . $filename . “.” . $fileext, “w”); 
  34. @fwrite($fp$get_file); 
  35. fclose($fp); 
  36. $wp_filetype = wp_check_filetype($filename . “.” . $fileext, false); 
  37. $type = $wp_filetype['type']; 
  38. $post_id = (int)$_POST['temp_ID2']; 
  39. $title = $post_title
  40. $url = $upload_url_path . $filename . “.” . $fileext
  41. $file = $_SERVER['DOCUMENT_ROOT'] . $filepath . $filename . “.” . $fileext
  42. $attachment = array(‘post_type’ => ‘attachment’, 
  43. ‘post_mime_type’ => $type
  44. ‘guid’ => $url
  45. ‘post_parent’ => $post_id
  46. ‘post_title’ => $title
  47. ‘post_content’ => ”, 
  48. ); 
  49. $id = wp_insert_attachment($attachment$file$post_parent); 
  50. $text = str_replace($value$url$text); //替换文章里面的图片地址 
  51. $content = AddSlashes($text); 
  52. remove_filter(‘content_save_pre’, ‘auto_save_image’); 
  53. return $content
  54. function dhtmlspecialchars($string){ 
  55. if(is_array($string)){ 
  56. foreach($string as $key => $val){ 
  57. $string[$key] = dhtmlspecialchars($val); 
  58. //开源软件:Vevb.com 
  59. }else
  60. $string = str_replace(array(‘&’, ‘”‘, ‘<‘, ‘>’), array(‘&amp;’, ‘&quot;’, ‘&lt;’, ‘&gt;’), $string); 
  61. if(strpos($string, ‘&amp;#’) !== false) { 
  62. $string = preg_replace(‘/&amp;((#(\d{3,5}|x[a-fA-F0-9]{4}));)/’, ‘&\\1′, $string); 
  63. return $string
  64. }

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表