
WordPress’te Öne Çıkan Görseli Olmayan Yazılara Otomatik Görsel Atama
WordPress’te Öne Çıkan Görseli Olmayan Yazılara Otomatik Görsel Atama
WordPress sitenizde yüzlerce içerik olabilir ve hepsi için manuel olarak öne çıkan görsel eklemek oldukça zaman alıcı bir iştir. Bu yazıda, öne çıkan görseli olmayan içeriklere otomatik olarak varsayılan bir görsel atanmasını sağlayacak bir fonksiyon paylaşacağım.
1. Yeni Yazılar İçin Otomatik Öne Çıkan Görsel
Aşağıdaki kod, sitenizde yeni oluşturulan içeriklere öne çıkan görsel atanmadıysa, otomatik olarak belirlediğiniz varsayılan bir görseli indirip ortam kütüphanesine yükler ve öne çıkan görsel olarak atar.
<?php
function auto_set_featured_image_for_new($post_id) {
if (wp_is_post_revision($post_id) || has_post_thumbnail($post_id)) {
return;
}
$default_image_url = 'https://example.com/default.jpg'; // ← URL'yi buraya yaz
$upload_dir = wp_upload_dir();
$image_data = file_get_contents($default_image_url);
if ($image_data === false) return;
$filename = basename($default_image_url);
$file = $upload_dir['path'] . '/' . $filename;
file_put_contents($file, $image_data);
$wp_filetype = wp_check_filetype($filename, null);
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment($attachment, $file, $post_id);
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata($attach_id, $file);
wp_update_attachment_metadata($attach_id, $attach_data);
set_post_thumbnail($post_id, $attach_id);
}
add_action('save_post', 'auto_set_featured_image_for_new');
?>
2. Eski Yazılara Toplu Uygulama
Yüzlerce eski yazınızda öne çıkan görsel yoksa, aşağıdaki fonksiyonu kullanarak tek seferde hepsine varsayılan görsel atayabilirsiniz.
<?php
function auto_set_featured_image_for_existing_posts() {
$default_image_url = 'https://example.com/default.jpg'; // ← URL'yi buraya yaz
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => '_thumbnail_id',
'compare' => 'NOT EXISTS'
)
)
);
$posts = get_posts($args);
foreach ($posts as $post) {
$upload_dir = wp_upload_dir();
$image_data = file_get_contents($default_image_url);
if ($image_data === false) continue;
$filename = basename($default_image_url);
$file = $upload_dir['path'] . '/' . $filename;
file_put_contents($file, $image_data);
$wp_filetype = wp_check_filetype($filename, null);
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment($attachment, $file, $post->ID);
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata($attach_id, $file);
wp_update_attachment_metadata($attach_id, $attach_data);
set_post_thumbnail($post->ID, $attach_id);
}
echo count($posts) . " yazıya öne çıkan görsel eklendi.";
}
// Bu fonksiyonu sadece bir kere çalıştırmak için aşağıdaki satırı geçici olarak aktif et:
// auto_set_featured_image_for_existing_posts();
?>
Nasıl Kullanılır?
- Yukarıdaki tüm kodları temanızın
functions.php
dosyasına ekleyin. https://example.com/default.jpg
kısmını kendi varsayılan görsel adresiniz ile değiştirin.- Eski yazılar için olan fonksiyonu sadece bir kere çalıştırmak istiyorsanız, son satırdaki yorumu geçici olarak kaldırın ve sitenizi bir kez ziyaret edin. Sonrasında o satırı tekrar yoruma alın.
Bu yöntemle WordPress sitenizde hem yeni hem de eski yazılarınızda görsel bütünlüğünü sağlayabilir, ziyaretçilere daha profesyonel bir görünüm sunabilirsiniz.
Etiketler: