Ich habe ein kleines Wordpress-Plugin entwickelt, um die Daten von Benutzern aus der Datenbank als CSV-Datei herunterzuladen.Anzeige der Erfolgsmeldung nach dem Download CSV
Alles funktioniert gut, obwohl ich Probleme habe herauszufinden, wie eine Erfolgsmeldung angezeigt wird.
Unter dem Code der Methode, die Pflege der Datenexport nimmt:
/*
* Export CSV File
*/
public function export_CSV()
{
if ($this->users) {
$fileName = "Export_users_" . date("Y-m-d_H:i:s", time());
$fileName = $fileName.".csv";
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header('Content-Encoding: UTF-8');
header("Content-type: application/csv;charset=UTF-8");
header("Content-Disposition: attachment; filename={$fileName}");
header("Expires: 0");
header("Pragma: public");
echo "\xEF\xBB\xBF"; // UTF-8 BOM
$fh = @fopen('php://output', 'w');
$headerDisplayed = false;
foreach ($this->users as $user) {
if($user) {
$user_meta = get_user_meta($user->data->ID);
//Push user meta into $user array
foreach($user_meta as $key => $var)
{
$user->data->$key = trim($var[0]);
}
//convert object in array;
$usersArray = (array)$user->data;
// Add a header row if it hasn't been added yet
if ($headerDisplayed == false) {
// Use the keys from $directory as the titles
fputcsv($fh, array_keys($usersArray));
$headerDisplayed = true;
}
// Put the data into the stream
fputcsv($fh,$usersArray);
}//end if
}//end foreach
// Close the file
fclose($fh);
// Users exported successfully
$this->response = "Users exported successfully!";
// Make sure nothing else is sent
exit;
} else {
// No results found
$this->response = "Sorry, no results found!";
}
}
I Ausgang verwenden müssen ansonsten die CSV-Datei, die alle HTML-Code der Seite enthält. Gibt es eine Möglichkeit, eine Javascript-Datei zu starten, um die Nachricht im Frontend zu aktualisieren?
Vielen Dank im Voraus!
Setzen Sie den Download-Material in einer anderen Seite. Sie können die Header nur einmal senden, deshalb können Sie HTML nach dem Senden des CSV-Headers nicht drucken. – modsfabio
Nach meinem Wissen gibt es keine Möglichkeit, etwas zu starten, nachdem ein Download abgeschlossen wurde. Ich denke, dass Sie ServerSentEvents oder etwas verwenden konnten, aber das scheint ein bisschen übertrieben. – Halcyon