Aşağıdaki kod yüklenen ortam dosyasının ismini "Başlık" kısmına yazmaya ve dosya yolunda (FTP dosya adı) düzenleme yapmaya yarıyor ancak yüklenen dosyanın adının başında Türkçe karakter varsa başlık kısmına yazarken siliyor. Yani
function update_attachment_title kısmındaki işlemde bir sıkıntı var. "Çanakkale Savaşı" isminde bir dosya yüklediğimde Başlık kısmına (
buradaki) "
anakkale Savaşı" yazıyor. Bunu nasıl düzeltebilirim acaba?
/* Clean Image Filenames */
class CleanImageFilenames {
public function __construct() {
add_action( 'wp_handle_upload_prefilter', array( $this, 'upload_filter' ) );
add_action( 'add_attachment', array( $this, 'update_attachment_title' ) );
}
public function upload_filter( $file ) {
$original_filename = pathinfo( $file['name'] );
set_transient( '_clean_image_filenames_original_filename', $original_filename['filename'], 60 );
$file = $this->clean_filename( $file );
return $file;
}
public function clean_filename( $file ) {
$dosyaAdi = explode('.', $file['name']);
$cleaned_filename = $dosyaAdi[0];
$specific_replacements = array(
'Ğ' => 'g',
'ğ' => 'g',
'Ü' => 'u',
'ü' => 'u',
'Ş' => 's',
'ş' => 's',
'İ' => 'i',
'ı' => 'i',
'Ö' => 'o',
'ö' => 'o',
'Ç' => 'c',
'ç' => 'c',
' ' => '-',
'_' => '-',
',' => '-',
'%20' => '-',
);
$cleaned_filename = str_replace( array_keys( $specific_replacements ), array_values( $specific_replacements ), $cleaned_filename );
$cleaned_filename = remove_accents( $cleaned_filename );
$cleaned_filename = strtolower( $cleaned_filename );
$cleaned_filename = preg_replace( '/[^a-z0-9-]/', '', $cleaned_filename );
$cleaned_filename = preg_replace( '/-+/', '-', $cleaned_filename );
$cleaned_filename = trim( $cleaned_filename, '-' );
$file['name'] = $cleaned_filename . '.' . $dosyaAdi[1];
return $file;
}
public function update_attachment_title( $attachment_id ) {
$original_filename = get_transient( '_clean_image_filenames_original_filename' );
if ( $original_filename ) {
wp_update_post(
array(
'ID' => $attachment_id,
'post_title' => $original_filename,
)
);
delete_transient( '_clean_image_filenames_original_filename' );
}
}
}
new CleanImageFilenames();