也想出现在这里? 联系我们

如何实现WordPress远程图片自动本地化?

作者 : 小编 本文共3235个字,预计阅读时间需要9分钟 发布时间: 2020-08-18 共1.09K人阅读
也想出现在这里? 联系我们

WordPress主题中加入远程图片文件自动本地化代码,经常转载文章的朋友应该会用到这个功能。把外链图片自动保存到网站本地,防止外链图片失效造成图片不显示。那么如何实现WordPress远程图片自动本地化?把下面的代码添加到主题的 functions.php 文件或者是 functions.php 的引入文件中即可,以后每当在 wordpress 发布文章时如果文章中含有外链图片就会自动本地化了,无需任何设置操作非常方便。

add_filter(‘content_save_pre’, ‘auto_save_image’);

function auto_save_image($content) {

$upload_path = ”;

$upload_url_path = get_bloginfo(‘url’);

//上传目录

if (($var = get_option(‘upload_path’)) !=”){

$upload_path = $var;

} else {

$upload_path = ‘wp-content/uploads’;

}

if(get_option(‘uploads_use_yearmonth_folders’)) {

$upload_path .= ‘/’.date(“Y”,time()).’/’.date(“m”,time());

}

//文件地址

if(($var = get_option(‘upload_url_path’)) != ”) {

$upload_url_path = $var;

} else {

$upload_url_path = bloginfo(‘url’);

}

if(get_option(‘uploads_use_yearmonth_folders’)) {

$upload_url_path .= ‘/’.date(“Y”,time()).’/’.date(“m”,time());

}

require_once (“../wp-includes/class-snoopy.php”);

$snoopy_Auto_Save_Image = new Snoopy;

$img = array();

//以文章的标题作为图片的标题

if ( !empty( $_REQUEST[‘post_title’] ) )

$post_title = wp_specialchars( stripslashes( $_REQUEST[‘post_title’] ));

$text = stripslashes($content);

if (get_magic_quotes_gpc()) $text = stripslashes($text);

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;//图片保存的路径目录

!is_dir(“..”.$filepath) ? mkdirs(“..”.$filepath) : null;

//$filename = date(“His”,$filetime).random(3);

$filename = substr($value,strrpos($value,’/’),strrpos($value,’.’)-strrpos($value,’/’));

//$e = ‘../’.$filepath.$filename.’.’.$fileext;

//if(!is_file($e)) {

// copy(htmlspecialchars_decode($value),$e);

//}

$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 mkdirs($dir)

{

if(!is_dir($dir))

{

mkdirs(dirname($dir));

mkdir($dir);

}

return ;

}

function dhtmlspecialchars($string) {

if(is_array($string)) {

foreach($string as $key => $val) {

$string[$key] = dhtmlspecialchars($val);

}

}else{

$string = str_replace(‘&’, ‘&’, $string);

$string = str_replace(‘”‘, ‘”‘, $string);

$string = str_replace(‘<‘, ‘<‘, $string);

$string = str_replace(‘>’, ‘>’, $string);

$string = preg_replace(‘/&(#d;)/’, ‘&1’, $string);

}

return $string;

}

1. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: rayer@88.com),我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » 如何实现WordPress远程图片自动本地化?

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
织梦模板使用说明
你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html

发表评论

Copyright 2015-2020 版权所有 资源分享吧 Rights Reserved. 蜀ICP备14022927号-1
开通VIP 享更多特权,建议使用QQ登录