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

$3/month/128M/5G space/50G traffic VPS —— ApertureHost

ApertureHost is an American hosting company that ...

clouvider: £40/month/E3-1270v6/16GB RAM/240GB SSD/20TB traffic/2 IP/UK

louvider, a British hosting provider, operates as...

xvmlabs 512MB 5GB SSD hard drive Los Angeles simple evaluation

When it first came out, I bought it for $2.99/yea...

Fir3Cloud: $32/month/1GB memory/50GB space/10TB traffic/1Gbps/KVM/Hong Kong HGC

Fir3Cloud, focusing on Hong Kong high-bandwidth K...

Host Honey: $12/year/1GB RAM/60GB SSD space/1TB bandwidth/OpenVZ/Dallas

Host Honey, which provides web hosting, vps, dedi...