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

WootHosting: $1/year/5GB space/75GB data traffic/Los Angeles

WootHosting, an American hosting provider, was fo...

W3Space: $15/year/1GB RAM/25GB SSD space/1.5TB traffic/1Gbps port/KVM/France

W3Space is a foreign business founded in 2013. It...

OnePoundWebHosting: £12/year/128MB memory/15GB space/200GB traffic/Xen/UK

OnePoundWebHosting is a British hosting company e...

HiFormance 4GB RAM Los Angeles KVM VPS Review

Details: HiFormance: $8/year/512MB memory/60GB sp...

9xvps: $39/month/16GB RAM/2TB HDD/33TB traffic/US/Free Windows

9xvps, a foreign hosting provider, provides virtu...

VPS6: $4.79/month/2GB memory/40GB space/4TB traffic/Xen/New Jersey

VPS6, a US hosting provider under whitelabelitsol...