Khôi Phục Mật Khẩu

Vui lòng liên hệ với Quản trị viên để được hỗ trợ reset lại mật khẩu tài khoản của bạn.

Zalo Admin
0358949680
Nhắn Zalo
Hoặc
Quên mật khẩu ?
Tạo tài khoản để truy cập đầy đủ tính năng!
Hoặc
Trang chủ / Blog / Code tự động lưu ảnh vào host khi copy bài từ nguồn khác
Huy Kira
Huy Kira · Theo dõi

Code tự động lưu ảnh vào host khi copy bài từ nguồn khác

Như tiêu tiêu đề thôi hôm nay mình sẽ share đoạn code tự động lưu ảnh vào host khi copy bài từ nguồn khác.

Tự động lưu ảnh vào host

Ưu điểm của code này.

Tự động lưu tất cả hình ảnh khi copy từ nguồn khác chỉ thông qua 1 lần bấm save. Code ổn định không bị lỗi trên các  phiên bản wordpress

Nhược điểm:

Nó sẽ tự động lưu nên mình ko kiểm soát được số lượng, dung lương cũng như tên của các file ảnh đó.

Để sử đụ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é

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();

Ngoài các sự dụng đoạn code này các bạn có thể sử dụng plugins, chức năng cũng tương tự

QQWorld Auto Save Images

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

tulam 8 năm trước

không chạy :(

Mã Giảm Giá Lazada 8 năm trước

Cảm ơn nhé

Gia Khanh 7 năm trước

bác ơi sau mh test nó không chạy được thế bác. Bác có thể chi mh được không

nghĩa 7 năm trước

Cái này nó chỉ hỗ trợ save ở box content chính, còn box phụ tạo ra bởi custom fileld thì ko dc save, AD có cách này fix cái đó ko ạ

Hải 7 năm trước

Lưu nhưng bị lỗi anh

Cường Võ 6 năm trước

Dùng Plugin QQWorld Auto Save Images có ôn hơn không bạn?

ducjp 6 năm trước

sao không hoạt động nhỉ

ez chia sẻ 6 năm trước

dùng rồi nhưng ko thấy chạy