我正在使用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就在那里。如截图所示。
输出作为完整URL(在屏幕截图中标记为1),而我希望url作为文件的链接输出(屏幕截图中为2)。我试图使用echo()和sprintf,但得到了php syntex错误。
答案 0 :(得分:0)
感谢您的建议。我找到了输出链接的替代方法。我要做的是在网页上输出表单提交数据,并按照@Ovidash的建议转换javascript可点击的链接...这是我的问题的可接受的解决方法。感谢您的所有建议。