создать кликабельную ссылку в php - PullRequest
0 голосов
/ 11 июня 2018

Я работаю с 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.

1 Ответ

0 голосов
/ 12 июня 2018

Спасибо за предложения.Я нашел альтернативный способ вывода ссылок.Что мне нужно сделать, так это вывести данные для отправки формы на веб-страницу и преобразовать ссылки, кликабельные по javascript, как предложено @Ovidash ... Это приемлемый обходной путь для моей проблемы.Спасибо за все предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...