CSV-Datei auf Ihrem Webserver erzeugen (für CSV-Rechnungen) |
Startseite zurück vorwärts |
/////////////////////////////////////////////////////////////////////
// PHP-Snippet für das Plugin "Code Snippets" in WordPress
// Sie können es dort einfach hineinkopieren.
//
// Das Formular aus dem die CSV Datei generiert wird,
// wurde mit WPForms erstellt.
//
// Das Snippet speichert eingehende WPForms-Formulare automatisch
// als CSV-Datei auf dem Server.
// Speicherort:
// /wp-content/uploads/wpforms_exports/
/////////////////////////////////////////////////////////////////////
// Wenn Sie ein anderes Formularsystem etc. verwenden, können Sie das folgende PHP-Snippet als Vorlage nutzen.
// Kopieren Sie den Code einfach in ChatGPT (chatgpt.com) und fragen Sie:
//
// Ich verwende das System XYZ.
// Hier ist ein PHP-Snippet für WPForms und Wordpress, das Formulardaten als CSV speichert.
// Bitte passe es so an, dass es in meinem System funktioniert.
//
// In vielen Fällen erhalten Sie direkt eine passende Lösung oder zumindest eine gute Ausgangsbasis
function HoleFormularId(): int
{
// 0 = alle Formulare speichern
// Ansonsten hier die gewünschte Formular-ID eintragen.
return 0;
}
// Ab hier müssen Sie normalerweise nichts mehr ändern.
////////////////////////////////////
function log_csv_export($msg)
{
if (defined('WP_DEBUG') && WP_DEBUG) {
error_log('[WPForms CSV Export] ' . $msg);
}
}
function csv_escape($value): string
{
if (is_array($value)) {
$value = implode(', ', $value);
}
$value = (string)$value;
// Zeilenumbrüche entfernen
$value = str_replace(array("\r", "\n"), ' ', $value);
// Quotes escapen
$value = str_replace('"', '""', $value);
return '"' . $value . '"';
}
function export_all_wpforms_to_csv($fields, $entry, $form_data)
{
if (empty($form_data['id'])) {
log_csv_export('Keine Formular-ID gefunden');
return;
}
$form_id = (int)$form_data['id'];
$filter_id = HoleFormularId();
if ($filter_id != 0 && $filter_id != $form_id) {
return;
}
$upload_dir = wp_upload_dir();
if (empty($upload_dir['basedir'])) {
log_csv_export('Upload-Verzeichnis nicht gefunden');
return;
}
// Fester Zielordner
$dir = trailingslashit($upload_dir['basedir']) . 'wpforms_exports/';
// Ordner erstellen
if (!file_exists($dir)) {
if (!wp_mkdir_p($dir)) {
log_csv_export('Ordner konnte nicht erstellt werden: ' . $dir);
return;
}
}
if (!is_writable($dir)) {
log_csv_export('Ordner nicht beschreibbar: ' . $dir);
return;
}
$file = $dir . 'wpforms_form_' . $form_id . '.csv';
$file_exists = file_exists($file);
$fp = fopen($file, 'a');
if (!$fp) {
log_csv_export('Datei konnte nicht geöffnet werden: ' . $file);
return;
}
$columns = array();
$row_data = array();
foreach ($fields as $field_id => $field) {
// Spaltenname bestimmen
if (!empty($field['name'])) {
$column = $field['name'];
} elseif (!empty($field['label'])) {
$column = $field['label'];
} else {
$column = 'field_' . $field_id;
}
$column = trim($column);
if ($column === '') {
$column = 'field_' . $field_id;
}
$columns[] = $column;
$value = $field['value'] ?? '';
$row_data[] = $value;
}
// Header schreiben (nur einmal)
if (!$file_exists) {
fwrite($fp, "\xEF\xBB\xBF"); // UTF-8 BOM
$header = array();
foreach ($columns as $col) {
$header[] = csv_escape($col);
}
fwrite($fp, implode(';', $header) . "\n");
}
// Daten schreiben
$row = array();
foreach ($row_data as $value) {
$row[] = csv_escape($value);
}
fwrite($fp, implode(';', $row) . "\n");
fclose($fp);
}
add_action('wpforms_process_complete', 'export_all_wpforms_to_csv', 10, 3);
zurück