Đăng ký ngay!

Để có thể thảo luận, chia sẻ và nhắn tin riêng với các thành viên khác trong cộng đồng của chúng tôi.

Share code Tự Lưu ảnh web khác về khi copy ảnh vào bài viết trong Wordpress

  • Thread starter Thread starter VNIT
  • Ngày gửi Ngày gửi

VNIT

Administrative
Thành viên BQT
Hội Đồng Quản Trị
Người Điều Hành
Thành Viên VIP
Tham gia
21/6/19
Bài viết
101
VNDC
71,201,118
Khi bạn Copy bài viết từ các nguồn khác nhau về Web của mình thì phần Link ảnh vẫn ở Web 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. Nhược điểm của nó là không tốt cho SEO và bạn sẽ phải phụ thuộc vào web gốc. Nếu nó bị die thì web của bạn bị ảnh hưởng load chậm hoặc không load được ảnh.
Thường thì các bạn tự tải ảnh về, đổi tên cho hợp lý rồi Up lên Hosting. Plugin QQWorld Auto Save Images sẽ giúp bạn giải quyết được vấn đề này.

Ngoài ra bạn có thể dùng đoạn code bên dưới vào file Functions.php

Mã:
Expand Collapse Copy
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();
 
Back
Top