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

InterServer: $6/month/1CPU/512M/25G SSD/1T/1 IP/OpenVZ

InterServer is an American hosting company founde...

MineServer 6GB RAM 200Mbps Bandwidth Los Angeles CN2 GIA KVM VPS Review

Details : MineServer: 58 yuan/quarter/512MB memor...

ViralVPS: $4.59/month/1 core/256M/15G SSD/750G/Xen PV/HVM

ViralVPS是荷蘭一家主機商,僅提供了1年主機服務,現在推出一款優惠主機,帶寬為10Gbps,...

Cheap Domain Registration and Registrar

.ru $3.25/year (registration, renewal, and transf...

ChicagoVPS: Los Angeles VPS discount, Windows VPS, 1GB RAM, $11.99 per year

Both ChicagoVPS and HudsonValleyHost were acquire...

Namecheap free DNS resolution, the latest registration and usage tutorials

1. Introduction namecheap.com is a domain name re...

Versaweb: $69/month/E3-1230/32G memory/240GB SSD/25TB traffic/Las Vegas

Versaweb, an American hosting provider, has its o...

DeployNode: $11/year/1GB memory/35GB space/1TB traffic/OpenVZ/France

DeployNode, an Indian hosting provider, was estab...