Code auto save hình ảnh khi copy nội dung từ website khác

07/10/2018 Việt Hải Thủ Thuật Wordpress 1256 view

Chào mọi người bài viết này  mình chia sẻ đến cho các bạn chuyên đi copy content từ website khác về website của mình.
Bình thường ki bạn copy bài viết từ các nguồn khác nhau về website của mình thì phần link ảnh vẫn ở website gốc. Điều này có ưu điểm là bạn sẽ tiết kiệm dung lượng và băng thông cho Hosting của mình. Nhưng nhược điểm của nó là không tốt cho điểm SEO của mình và bạn phải phụ thuộc vào website gốc (tức website mình copy content ). Nếu nó bị die thì web của bạn bị ảnh hưởng load chậm hoặc bị lỗi ảnh. Từ đó mình chia sẻ đoạn code copy lấy luôn hình ảnh từ website gốc về website của mình.
Copy đoạn code tự động lưu images bên dưới vào file funtions.php

class Auto_Save_Images{ function __construct(){ add_filter( 'content_save_pre',array($this,'post_save_images') ); } function post_save_images( $content ){ if( ($_POST['save'] || $_POST['publish'] )){ set_time_limit(240); global $post; $post_id=$post->ID; $preg=preg_match_all('/<img.*?src="(.*?)"/',stripslashes($content),$matches); if($preg){ foreach($matches[1] as $image_url){ if(empty($image_url)) continue; $pos=strpos($image_url,$_SERVER['HTTP_HOST']); if($pos===false){ $res=$this->save_images($image_url,$post_id); $replace=$res['url']; $content=str_replace($image_url,$replace,$content); } } }
}
remove_filter( 'content_save_pre', array( $this, 'post_save_images' ) );
return $content;
}
function save_images($image_url,$post_id){ $file=file_get_contents($image_url); $post = get_post($post_id); $posttitle = $post->post_title; $postname = sanitize_title($posttitle); $im_name = "$postname-$post_id.jpg"; $res=wp_upload_bits($im_name,'',$file); $this->insert_attachment($res['file'],$post_id); return $res;
}
function insert_attachment($file,$id){ $dirs=wp_upload_dir(); $filetype=wp_check_filetype($file); $attachment=array('guid'=>$dirs['baseurl'].'/'._wp_relative_upload_path($file),'post_mime_type'=>$filetype['type'],'post_title'=>preg_replace('/\.[^.]+$/','',basename($file)),'post_content'=>'','post_status'=>'inherit'
); $attach_id=wp_insert_attachment($attachment,$file,$id); $attach_data=wp_generate_attachment_metadata($attach_id,$file); wp_update_attachment_metadata($attach_id,$attach_data); return $attach_id;
}
}
new Auto_Save_Images();

Chúc các bạn thành công!