17 декабря 2020 года было обновление Contact Form 7, после чего имя прикрепляемого файла стало выглядеть примерно так «ndhundhdhndh», не читаемое.

Это происходит в первую очередь из-за функции wpcf7_antiscript_file_name, которую разработчики как раз и обновили, добавив такую строчку:

$filename = preg_replace( '/[\pC\pZ]+/i', '', $filename );

Вот что происходит с русскими сломами после ее срабатывания

Те��имки�или�� - Тестим кириллицу

Дальше идет функция wordpress wp_unique_filename() которая служит для уникализации имен файлов:

$filename = wp_unique_filename( $uploads_dir, $filename );

на выходе мы получаем нечто похожее на это «ndhundhdhndh».

Функция wp_unique_filename() работает нормально без строчки которую добавили разрабы в CF7.

Я исправил это транслитерацией имени файла, плагин Car-To-Lat помог это реализовать, он обязателен. У CF7 есть hook wpcf7_upload_file_name с помощью которого можно изменить имя отправляемого файла. Ниже готовый код, его нужно вставить в ваш functions.php.

add_filter( 'wpcf7_upload_file_name', 'joid_filename_translit_cf7', 10, 3 );
function joid_filename_translit_cf7( $filename, $file_name, $tag ){

 global $cyr_to_lat_plugin;
 // Плагин Cyr To Lat
 $filename = $cyr_to_lat_plugin->transliterate( $file_name );
 // Транслитерация имени
 $filename = str_replace(" ","-",$filename);
 // Добавление тире вместо пробелов 
 $filename = wpcf7_canonicalize( $filename, 'as-is' );
 // Стандартная строчка CF7
 $filename = wpcf7_antiscript_file_name( $filename );
 // Стандартная строчка CF7
 return $filename;

}

Хуже не будет точно, хотя бы имена будут читаемые.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *