Selamlar.
Yazılarda ve sayfalarda kullanılan görseller hariç hepsinin silinmesini istiyorum demişsiniz.
<?php
/*
Sinyor_Ridak
*/
// Medyadan tüm görselleri almak için fonksiyon
function get_all_images() {
$args = array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'post_status' => 'inherit',
'posts_per_page' => -1,
);
$query_images = new WP_Query( $args );
$images = array();
foreach ( $query_images->posts as $image ) {
$images[] = $image;
}
return $images;
}
// İçerikte kullanılan tüm görselleri almak için fonksiyon
function get_used_images() {
global $wpdb;
$query = "
SELECT DISTINCT meta_value
FROM {$wpdb->postmeta}
WHERE meta_key IN ('_thumbnail_id', '_wp_attached_file')
";
return $wpdb->get_col( $query );
}
// Kullanılmayan resimleri silme fonksiyonu.
function delete_unused_images() {
$all_images = get_all_images();
$used_images = get_used_images();
$unused_images = array();
foreach ( $all_images as $image ) {
if ( ! in_array( get_post_meta( $image->ID, '_wp_attached_file', true ), $used_images ) && ! in_array( $image->ID, get_posts( array( 'post_type' => 'any', 'post_status' => 'publish', 'fields' => 'ids', 'meta_query' => array( array( 'key' => '_thumbnail_id', 'value' => $image->ID, 'compare' => '=' ) ) ) ) ) ) {
$unused_images[] = $image;
}
}
foreach ( $unused_images as $image ) {
wp_delete_attachment( $image->ID, true );
}
}
// İnit işlemi çalıştırma.
add_action( 'init', 'delete_unused_images' );Bu sayfayı plugins üzerinde kaydedip çalıştırın sayfa dediğiniz şekilde yazılarda sayfalarda olmayan görselleri tespit edip silmeye yöneliktir.
Bunu yapmadan önce komple yedek alınız, herhangi bir olumsuz durumda sorumlu değilim.
Herhangi bir hata mesajı verirse yazabilirsiniz
Teşekkürler.