Automatic localization of remote image files in wordpress

Automatic localization of remote image files in wordpress

add_filter('content_save_pre', 'auto_save_image');
function auto_save_image($content) {
$upload_path = ";
$upload_url_path = get_bloginfo('url');

//Upload directory
if (($var = get_option('upload_path')) != "){
$upload_path = $var;
} else {
$upload_path = 'wp-content/uploads';
}
if(get_option('uploads_use_yearmonth_folders')) {
$upload_path .= '/'.date("Y",time()).'/'.date("m",time());
}

//File address
if(($var = get_option('upload_url_path')) != '') {
$upload_url_path = $var;
} else {
$upload_url_path = bloginfo('url');
}
if(get_option('uploads_use_yearmonth_folders')) {
$upload_url_path .= '/'.date("Y",time()).'/'.date("m",time());
}

require_once("../wp-includes/class-snoopy.php");
$snoopy_Auto_Save_Image = new Snoopy;

$img = array();

//Use the title of the article as the title of the picture
if ( !empty( $_REQUEST['post_title'] ) )
$post_title = wp_specialchars( stripslashes( $_REQUEST['post_title'] ));
$text = stripslashes($content);
if (get_magic_quotes_gpc()) $text = stripslashes($text);
preg_match_all(“/ src=("|'){0,}(http://(.+?))("|'|s)/is”,$text,$img);
$img = array_unique(dhtmlspecialchars($img[2]));
foreach ($img as $key => $value){
set_time_limit(180); //The maximum download time allowed for each image, seconds
if(str_replace(get_bloginfo('url'),"",$value)==$value&&str_replace(get_bloginfo('home'),"",$value)==$value){
//Judge whether it is a local image, if not, save it to the server
$fileext = substr(strrchr($value,'.'),1);
$fileext = strtolower($fileext);
if($fileext==""||strlen($fileext)>4)
$fileext = "jpg";
$savefiletype = array('jpg','gif','png','bmp');
if (in_array($fileext, $savefiletype)){
if($snoopy_Auto_Save_Image->fetch($value)){
$get_file = $snoopy_Auto_Save_Image->results;
}else{
echo "error fetching file: ".$snoopy_Auto_Save_Image->error."";
echo “error url: “.$value;
die();
}
$filetime = time();
$filepath = "/".$upload_path; //Path directory where the image is saved
!is_dir("..".$filepath) ? mkdirs("..".$filepath) : null;
//$filename = date("His",$filetime).random(3);
$filename = substr($value,strrpos($value,'/'),strrpos($value,'.')-strrpos($value,'/'));

//$e = '../'.$filepath.$filename.'.'.$fileext;
//if(!is_file($e)) {
// copy(htmlspecialchars_decode($value),$e);
//}
$fp = @fopen("..".$filepath.$filename.".".$fileext,"w");
@fwrite($fp,$get_file);
fclose($fp);

$wp_filetype = wp_check_filetype( $filename.".".$fileext, false );
$type = $wp_filetype['type'];
$post_id = (int)$_POST['temp_ID2'];
$title = $post_title;
$url = $upload_url_path.$filename.".".$fileext;
$file = $_SERVER['DOCUMENT_ROOT'].$filepath.$filename.".".$fileext;

//Add database record
$attachment = array(
'post_type' => 'attachment',
'post_mime_type' => $type,
'guid' => $url,
'post_parent' => $post_id,
'post_title' => $title,
'post_content' => ',
);
$id = wp_insert_attachment($attachment, $file, $post_parent);
$text = str_replace($value,$url,$text); //Replace the image address in the article
}
}
}
$content = AddSlashes($text);
remove_filter('content_save_pre', 'auto_save_image');
return $content;
}

function mkdirs($dir)
{
if(!is_dir($dir))
{
mkdirs(dirname($dir));
mkdir($dir);
}
return ;
}
function dhtmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = dhtmlspecialchars($val);
}
}else{
$string = str_replace('&', '&', $string);
$string = str_replace('"', '"', $string);
$string = str_replace(”, $string);
$string = preg_replace('/&(#\d;)/', '&\1', $string);
}
return $string;
}

Just add it to the theme's functions.php file or the import file of functions.php. Whenever you publish an article in WordPress, if the article contains external link images, it will be automatically localized. It is very convenient without any settings.

via: http://y-cy.cn/86.html

<<:  qsh.eu offers 1 Euro/1.5 Euro domain name discounts

>>:  OpenVZ.io: £4/month/3GB RAM/50GB storage/1000G bandwidth/OpenVZ

Recommend

PlanetaHost: $4.4/month/1GB RAM/30GB storage/unlimited traffic/KVM/Russia

PlanetaHost, a Russian hosting provider, is a for...

Domestically developed ROM collection

Company level: MIUI: from Xiaomi, supported phone...

Useful hosts project

1. racaljk hosts Download the hosts file from the...

FirstHeberg i3-3220 16GB memory French dedicated server review

FirstHeberg official website: https://www.firsthe...

Viking Layer: €2.5/month/1GB RAM/20GB SSD space/1TB bandwidth/Xen/Dallas

Viking Layer merged with drServer in 2015. drServ...

Introduction to InterServer, a US hosting provider

InterServer has been providing hosting services s...