【wordpress】发布文章时把远程图片保存到本地-凯发网娱乐官网

微信扫一扫,分享到朋友圈

1

文章目录[隐藏]

使用场景

  1. 害怕外链失效把图片保存到本地
  2. 想要把图片保存到本地又不想自己动手

方法一

使用插件:【点击进入下载页面】

这个插件是我们国人开发的有免费版和付费版,对于一般需求免费版的功能就足够我们使用了。有几个特色在这里说一下

  1. 可以选择发文章的时候自动保存和手动保存
  2. 定时发布和远程发布
  3. 更改文件名、自定义文件结构、保留保存外链
  4. 扫描以前发布文里的外链一键保存到本地
  5. 自动设置特色图片等等

方法二

方法二就是通过代码的的方式的实现的。

把下面的代码放到你wordpress主题的模版函数(functions.php)文件中保存即可。

//自动本地化外链图片
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 ( !emptyempty( $_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."
"; 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; }

 

展开阅读全文
这个博主很懒,懒死了。

育碧商城每天免费领 今日《刺客信条:英灵殿》奖励组合包

gog限时免费领《prison architect 监狱建筑师》

你也可能喜欢

1 条评论

  1. 哼哼哼啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

发表评论

this site uses akismet to reduce spam. .

插入图片