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;
}
Хуже не будет точно, хотя бы имена будут читаемые.