menex.ru
← Все статьи

Генерация CSV и сохранение его на сервере

24.08.2022 • Теги: #PHP #wordpress

На одном проекте было необходимо по ссылке сохранять переменные в файл CSV. Реализовал это средствами PHP, через сниппеты в WordPress.

Для этого завел сниппет, как шорткод. Сам шорткод [save_csv] вставил на страницу, на которую ссылается форма с перемеными передаваемые GET запросом.

URL имеет вот такой вид:

/result2/?d2=29&m2=09&y2=1989&prof_name=Имя&email=mail%40mail.ru&checkbox-1=Даю-согласие-на-обработку-своих-персональных-данных-в-соответствии-с-Условиями

Код самого сниппета вот:

add_shortcode( 'save_csv', function () {

// начало шорткода

if ( $_GET['checkbox-1']='Даю-согласие-на-обработку-своих-персональных-данных-в-соответствии-с-Условиями' ) {
    function saveRow($list) {
        $file = fopen($_SERVER['DOCUMENT_ROOT'].'/wp-content/uploads/base.csv','a');
        foreach ($list as $line)
            {
                // перекодеровка в cp1251, что открывалось в Excel
                $line = iconv( "UTF-8", "cp1251",  $line );
                    fputcsv($file,explode(',',$line));
            }

        fclose($file); 
    }
    // Массив с GET-переменными
    saveRow(
        Array(
            $_GET['d2'].';'.$_GET['m2'].';'.$_GET['y2'].';'.$_GET['prof_name'].';'.$_GET['email'].';'.'checkbox-1=true'
        ));
}

// конец шорткода
//  
} );

Файл сохраняется по адресу /wp-content/uploads/base.csv и имеет правильную кодировку cp1251, для открытия его через Excel без лишних манипуляций.