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. đôi khi bạn coppy 1 bài mà quên lấy hình , đoạn code function này sẽ giúp bạn nhé !
với đoạn code trên 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ưng nhược điểm của code là 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();
OK lưu lại và test xem nào
Code tự động lưu ảnh vào host
Ngoài việc dùng bằng code ta có thể chủ động tải hình về bằng plugin QQWorld Auto Save Images
với Plugin này bài viết được auto lấy hình về bài đăng sau khi bạn bấm Save nhé
Plugin QQWorld Auto Save Images
Chúc các bạn thành công !
Điểm 5/5 - ( Có 5 bình chọn)
Code tự động lưu ảnh vào host
với đoạn code trên 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ưng nhược điểm của code là 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 đó.
Ví dụ : sau khi bạn lấy bài từ trang của người khác vè bằng Plugin Content Crawler – lấy tin sản phẩm tự động mà không lấy được hình về thì code sau là 1 giải pháp 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();
OK lưu lại và test xem nào
Code tự động lưu ảnh vào host
Tải động tải hình ảnh về host bằng Plugin QQWorld Auto Save Images
Ngoài việc dùng bằng code ta có thể chủ động tải hình về bằng plugin QQWorld Auto Save Images
với Plugin này bài viết được auto lấy hình về bài đăng sau khi bạn bấm Save nhé
Plugin QQWorld Auto Save Images
Chúc các bạn thành công !
Điểm 5/5 - ( Có 5 bình chọn)