Я работаю с wordpress -> контактной формой 7 и сохраняю данные с контактной формой 7 в плагин расширения базы данных.
Плагин имеет фильтры для изменения данных перед сохранением в базу данных.([Мне нравится эта страница]) 1
Теперь я хотел сохранить файл в другой папке на сервере и вывести ссылку на этот файл в административную панель.Я использовал этот фильтр следующим образом.
function cfdbFilterSaveFile($formData) {
// CHANGE THIS: CF7 form name you want to manipulate
$formName = 'DemoReport';
// CHANGE THIS: upload field name on your form
$fieldName = 'Report';
// CHANGE THIS: directory where the file will be saved permanently
$uploaddir = '/home2/username/public_html/example.com/report/wp-content/uploads/reports/';
$urlDir = 'http://example.com/report/wp-content/uploads/reports/';
if ($formData && $formName == $formData->title && isset($formData->uploaded_files[$fieldName])) {
// make a copy of data from cf7
$formCopy = clone $formData;
// breakdown parts of uploaded file, to get basename
$path = pathinfo($formCopy->uploaded_files[$fieldName]);
// directory of the new file
$newfile = $uploaddir . $path['basename'];
// check if a file with the same name exists in the directory
if (file_exists($newfile)) {
$dupname = true;
$i = 2;
while ($dupname) {
$newpath = pathinfo($newfile);
$newfile = $uploaddir . $newpath['filename'] . '-' . $i . '.' . $newpath['extension'];
if (file_exists($newfile)) {
$i++;
} else {
$dupname = false;
}
}
}
// make a copy of file to new directory
copy($formCopy->uploaded_files[$fieldName], $newfile);
// save the path to the copied file to the cfdb database
$formCopy->posted_data[$fieldName] = $newfile;
$path = pathinfo($newfile);
$filelink = '<a href=' . $urlDir . $path['basename'] . '>' . $path['basename'] . '</a>';
$formCopy->posted_data[$fieldName . '-url'] = $filelink;
// delete the original file from $formCopy
unset($formCopy->uploaded_files[$fieldName]);
return $formCopy;
}
return $formData; }
add_filter('cfdb_form_data', 'cfdbFilterSaveFile');
Теперь с этим кодом файл сохраняется в папку на сервере, как и ожидалось, но я не могу вывести кликабельную ссылку на сохраненный файл в панели администраторастолы.Вместо кликабельных ссылок есть полный URL.Как на скриншоте.
ScreenShot
Вывод идет в виде полного URL (как отмечено на скриншоте 1), а я хочу, чтобы URL выводился в виде ссылки нафайл (что-то вроде 2 на скриншоте).Я пытался использовать echo () и sprintf, но получил ошибку синтаксиса php.