• 19-04-2021, 20:14:25
    #1
    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();
  • 19-04-2021, 20:21:32
    #2
    set_transient( '_clean_image_filenames_original_filename', $original_filename['filename'], 60 );
    $original_filename= get_transient( '_clean_image_filenames_original_filename');

    burda bişey olabilirmi
  • 19-04-2021, 20:51:48
    #3
    erolkarakoy adlı üyeden alıntı: mesajı görüntüle
    set_transient( '_clean_image_filenames_original_filename', $original_filename['filename'], 60 );
    $original_filename= get_transient( '_clean_image_filenames_original_filename');

    burda bişey olabilirmi
    PHP bilgim çok az hocam, altına 2. satırı eklemem gerektiğimi mi ima ettiniz acaba şu şekilde: https://prnt.sc/11pl9fe Ekledim sonuç değişmedi.
  • 19-04-2021, 20:54:33
    #4
    bundan bahsetmiştim
    public function update_attachment_title( $attachment_id ) {

    $original_filename = set_transient( '_clean_image_filenames_original_filename', $original_filename['filename'], 60 );
    if ( $original_filename ) {
    wp_update_post(
  • 19-04-2021, 20:58:28
    #5
    erolkarakoy adlı üyeden alıntı: mesajı görüntüle
    bundan bahsetmiştim
    public function update_attachment_title( $attachment_id ) {

    $original_filename = set_transient( '_clean_image_filenames_original_filename', $original_filename['filename'], 60 );
    if ( $original_filename ) {
    wp_update_post(
    Bu şekilde başlık kısmına sadece "1" yazıyor hocam.

    Şu şekilde yaptım:
        public function update_attachment_title( $attachment_id ) {
            $original_filename = set_transient( '_clean_image_filenames_original_filename', $original_filename['filename'], 60 );
            if ( $original_filename ) {
                wp_update_post(
                    array(
                        'ID'         => $attachment_id,
                        'post_title' => $original_filename,
                    )
                );
                delete_transient( '_clean_image_filenames_original_filename' );
            }
        }
  • 19-04-2021, 21:50:54
    #6
    komple dosyayı atma şansın varmı gönderim formu ve işlemin yapıldığı .php
  • 19-04-2021, 22:42:51
    #7
    erolkarakoy adlı üyeden alıntı: mesajı görüntüle
    komple dosyayı atma şansın varmı gönderim formu ve işlemin yapıldığı .php
    Direk functions.php içerisindeki kodların tümünü ekledim hocam, bu iş için yazılmış ya da bağlantılı başka bir kod yok. Başka işlemler yapılıyorsa Wordpress tarafında yapılıyordur. Bir gönderim formu yok, işlem Wordpress'e ortam dosyası(fotoğraf, video, pdf..vs) yükleme şeklinde oluyor.
  • 19-04-2021, 22:53:18
    #8
    SkyGhostAir adlı üyeden alıntı: mesajı görüntüle
    Direk functions.php içerisindeki kodların tümünü ekledim hocam, bu iş için yazılmış ya da bağlantılı başka bir kod yok. Başka işlemler yapılıyorsa Wordpress tarafında yapılıyordur. Bir gönderim formu yok, işlem Wordpress'e ortam dosyası(fotoğraf, video, pdf..vs) yükleme şeklinde oluyor.
    bişey dikkatimi çekti tek gene burda filename yani dosya adı başlık kısmının post adı ne ona bak bi belk ifarklı dosyada olabilir
  • 19-04-2021, 23:00:46
    #9
    sana zahmet bu formun ne işe yaradığını anlatırmısın dosya adınımı değiştiriyor yazdığın birşeyimi dğeiştiriyor