WordPress İlişkisiz Resimleri Otomatik Ekleme

WordPress sitelerinde içerik üretimi sırasında çok sayıda görsel yüklenir. Ancak bu görsellerin bir kısmı yazılara veya yorumlara doğrudan bağlanmadığı için “ilişkisiz” (eklenmemiş) olarak ortam kütüphanesinde kalır. Bu durum zamanla medya kütüphanesinde karmaşaya yol açar, site performansını düşürebilir ve SEO açısından eksiklikler yaratabilir.
İlişkisiz görselleri tespit etmek için WordPress yönetici panelinde Ortam → Kütüphane bölümüne gidip filtreleme seçeneklerinden “İlişkilendirilmemiş” seçeneğini seçebilirsiniz. Teknik olarak bu görseller WordPress veritabanında post_type = ‘attachment’ ve post_parent = 0 olan kayıtlardır. Yani hiçbir yazıya veya sayfaya bağlı değillerdir.
Bu sorunu çözmek için functions.php dosyasına özel bir kod ekleyerek ilişkisiz görselleri otomatik olarak içeriklerde arayıp bağlamak mümkündür. Kod, ortam klasöründeki tüm ilişkisiz görselleri tarar. Her bir görselin URL’sini hem yazı içeriklerinde hem de yorum metinlerinde arar. Eşleşme bulunursa, ilgili görsel o yazıya bağlanır. Bu sayede medya kütüphanesi düzenlenir, içerik bütünlüğü sağlanır ve SEO açısından fayda elde edilir.
// Yardımcı fonksiyon: Görseli içeren yazıyı veya yorumu bul
function find_post_containing_image($image_url) {
global $wpdb;
// Yazılarda ara
$post_id = false;
$args = array(
'post_type' => 'post',
's' => $image_url,
'posts_per_page' => 1
);
$posts = get_posts($args);
if (!empty($posts)) {
$post_id = $posts[0]->ID;
}
// Eğer yazıda bulunamadıysa yorumlarda ara
if (!$post_id) {
$query = $wpdb->prepare(
"SELECT comment_post_ID FROM {$wpdb->comments} WHERE comment_content LIKE %s LIMIT 1",
'%' . $wpdb->esc_like($image_url) . '%'
);
$post_id = $wpdb->get_var($query);
}
return $post_id ? intval($post_id) : false;
}
// Ana işlem fonksiyonu: İlişkilendirilmemiş görselleri tara ve bağla
function relate_unattached_images() {
$args = array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'posts_per_page' => -1,
'post_parent' => 0
);
$attachments = get_posts($args);
foreach ($attachments as $attachment) {
$image_url = wp_get_attachment_url($attachment->ID);
$related_post_id = find_post_containing_image($image_url);
if ($related_post_id) {
wp_update_post(array(
'ID' => $attachment->ID,
'post_parent' => $related_post_id
));
}
}
}
// Yönetici paneline menü ekle
function relate_images_admin_menu() {
add_menu_page(
'Görselleri İlişkilendir',
'Görselleri İlişkilendir',
'manage_options',
'relate-images',
'relate_images_admin_page'
);
}
add_action('admin_menu', 'relate_images_admin_menu');
// Sayfa içeriği ve buton
function relate_images_admin_page() {
echo '<div class="wrap">';
echo '<h1>İlişkilendirilmemiş Görselleri Tara</h1>';
echo '<form method="post">';
echo '<input type="submit" name="relate_images" class="button button-primary" value="İşlemi Başlat">';
echo '</form>';
if (isset($_POST['relate_images'])) {
relate_unattached_images();
echo '<p><strong>İşlem tamamlandı.</strong></p>';
}
echo '</div>';
}Yukarıdaki tüm kodu functions.php dosyasına, genelde en alt kısma eklemeniz yeterli. Yardımcı ve ana fonksiyonlar, yönetici panel arayüzü ve tetikleyici tüm parçalar bu kodun içinde yer alıyor.
Admin paneline giriş yaptıktan sonra sol menüde “Görselleri İlişkilendir” adlı yeni bir sayfa göreceksiniz. O sayfaya tıklayın. Açılan panelde “İşlemi Başlat” butonuna basın. Kod, ilişkilendirilmemiş görselleri yazı içeriklerinde arayarak otomatik şekilde bağlar.
Kodun çalışması manuel olarak tetiklenir. WordPress admin paneline özel bir sayfa eklenir ve bu sayfada “İşlemi Başlat” butonuna tıklanarak işlem başlatılır. Bu yöntem sayesinde sistem performansı korunur ve işlem yalnızca ihtiyaç duyulduğunda yapılır.
Yorumlarda görsel arama özelliği de bu kodla birlikte aktif hale gelir. Kod, wp_comments tablosundaki yorum metinlerini tarayarak görsel URL’si içerip içermediğini kontrol eder. Eğer bir görsel URL’si yorumda bulunursa ve ortam kütüphanesinde ilişkisiz durumdaysa, o görsel ilgili yazıya bağlanır. Böylece yorumlarda kullanılan ama ilişkilendirilmemiş görseller de düzene girer.
İlişkisiz görselleri yazılara ve yorumlara otomatik olarak bağlamak, WordPress sitenizi daha düzenli ve verimli hale getirir. Küçük bir kod dokunuşuyla medya kütüphanenizi temizleyebilir, içerik bütünlüğünü sağlayabilirsiniz. İlişkilendirilmeyen resimler varsa o resimleri kullanılmıyor olabilir ya da yorum ya da yazı içerisine önceden eklenmemiş başka bir yere eklenmiş resim olabilir. Kontrol ederek resimleri bu şekilde temizleyebilirsiniz.





