Tự động upload hình ảnh khi sao chép hình ảnh vào bài viết trong WordPress

0
3289

Sao chép nội dung là một điều không ai khuyến khích, điều này có thể là vi phạm bản quyền. Website của mình cũng từng bị sao chép nội dung y nguyên. Nhưng trong một số trường hợp sao chép nội dung và spin ra để nuôi các website vệ tinh lại là một điều tuyệt vời. Với WordPress bạn có thể tạo ra nhiều nội dung khác nhau sử dụng spin, tuy nhiên hình ảnh của bạn thì vẫn lấy từ một website, điều này cũng gây ra một số hạn chế, để khắc phục điều đó trong bài viết này mình sẽ chia sẻ với bạn phương pháp tự động upload hình ảnh khi bạn sao chép hình ảnh và nhấn publish.

Nội dung trong bài viết này!

  • 1. Chèn mã vào file functions.php

Chèn mã vào file functions.php

Đoạn class dưới đây mình thu thập được ở trên mạng chứ không phải do mình viết, tuy nhiên mình đã kiểm tra toàn bộ đoạn mã và không có vấn đề gì, hoạt động chính xác và nhanh chóng không làm chập thời gian upload. Các bạn chỉ việc copy và chèn vào cuối file functions.php của theme là được.

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

Đoạn mã này hỗ trợ tải hình ảnh được copy vào bài viết lên chính website đó khi nhấn publish. Mọi định dạng sẽ được giữ nguyên chỉ có link hình ảnh được thay đổi từ website khác thành website của bạn.

Một lần nữa mình muốn nói là việc này không khuyến khích bạn đi copy nội dung của người khác khi chưa có sự đồng ý của họ, nhất là bản quyền về hình ảnh.