У меня была такая же проблема. Вместо добавления какой-либо проверки я добавил следующий фильтр, который заменяет изображение, если изображение с таким именем уже существует. Добавьте этот код в functions.php файл
add_filter( 'sanitize_file_name', 'replace_image_if_same_exists', 10, 1 );
function replace_image_if_same_exists( $name )
{
$args = array(
'numberposts' => -1,
'post_type' => 'attachment',
'meta_query' => array(
array(
'key' => '_wp_attached_file',
'value' => $name,
'compare' => 'LIKE'
)
)
);
$attachments_to_remove = get_posts( $args );
foreach( $attachments_to_remove as $attach )
wp_delete_attachment( $attach->ID, true );
return $name;
}
Надеюсь, это поможет вам.