Tự động Lưu ảnh Về Media Khi Copy Từ Nguồn Khác | Dipigo

Tự động Lưu ảnh Về Media
Facebook
Pinterest
Twitter
LinkedIn
Tumblr

Hiện nay copy từ nguồn khác nội dung thì dễ rồi! Còn ảnh thì ta phải lưu về media rồi upload lên lại khá mất thời gian vì nếu copy ảnh khác sang nó sẽ có chứa url của web đó. Thay vì làm như vậy, mình chia sẻ code dưới đây sẽ thay ta lưu ảnh vào database, bạn chỉ cần copy thôi là đủ rồi nhé!

Để sử dụng bạn copy đoạn code sau vào file functions.php trong thư mục theme bạn đang sử dụng nhé!

				
					//Auto Save Image In Database
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();
				
			

Nếu bạn không thích để code vào – plugin QQWorld Auto Save Images có chức năng tương tự

Link tải Plugin: https://wordpress.org/plugins/qqworld-auto-save-images/

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

Bình luận

Trả lời

Email của bạn sẽ không được hiển thị công khai.