/**
* Harici resimleri özgünleştirme fonksiyonu (son stabil sürüm)
*/
function harici_resimleri_ozgunlestir($content) {
// Yönetici panelinde veya boş içerikte çalışma
if (empty($content) || is_admin() || !is_singular()) {
return $content;
}
// Daha güvenli regex patterni
$content = preg_replace_callback('/]*)src=["\']([^"\']+)["\']([^>]*)>/i', function($matches) {
$before_attrs = $matches[1];
$src = $matches[2];
$after_attrs = $matches[3];
// Yerel resimleri atla
if (strpos($src, site_url()) !== false || strpos($src, 'data:') === 0) {
return $matches[0];
}
// Geçerli bir URL mi kontrol et
if (filter_var($src, FILTER_VALIDATE_URL)) {
// Özgünleştirilmiş yeni URL oluştur
$new_src = ozgun_resim_url_olustur($src);
// Yeni img tag'ini oluştur
$new_tag = '
';
return $new_tag;
}
return $matches[0];
}, $content);
return $content;
}
/**
* Özgün resim URL'si oluşturma (optimize edilmiş)
*/
function ozgun_resim_url_olustur($original_url) {
$parsed = wp_parse_url($original_url);
$query = array();
if (!empty($parsed['query'])) {
parse_str($parsed['query'], $query);
}
// Benzersiz parametreler ekle
$query = array_merge($query, array(
'ref' => sanitize_key(get_bloginfo('name')),
'utm_source' => 'internal_mirror',
'v' => substr(abs(crc32(date('Y-m-d'))), 0, 5) // Sabit günlük cache buster
));
$parsed['query'] = http_build_query($query);
return http_build_url($parsed);
}
// HTTP URL oluşturma yardımcı fonksiyonu
function http_build_url($parsed) {
$scheme = !empty($parsed['scheme']) ? $parsed['scheme'].'://' : '//';
$host = !empty($parsed['host']) ? $parsed['host'] : '';
$port = !empty($parsed['port']) ? ':'.$parsed['port'] : '';
$path = !empty($parsed['path']) ? $parsed['path'] : '';
$query = !empty($parsed['query']) ? '?'.$parsed['query'] : '';
$fragment = !empty($parsed['fragment']) ? '#'.$parsed['fragment'] : '';
return $scheme.$host.$port.$path.$query.$fragment;
}
// Filtreleri ekle (düşük öncelikle)
add_filter('the_content', 'harici_resimleri_ozgunlestir', 20);