WordPress- und CSV-Datei. Kann es funktionieren?

Lesezeit: 4 Minuten

Ich habe ein kleines Problem. Auf meiner WordPress-basierten Website möchte ich ein Bestellstatus-Formular erstellen, in dem Benutzer einen Code verwenden und den Fortschritt ihrer Bestellung überprüfen können. Es ist kein Online-Shop, also nutze ich Woocommerce nicht. Die Datei mit dem Fortschritt der Bestellung ist eine CSV-Datei. Ich habe versucht, das über eine Funktion zu verwenden, aber es hat nicht funktioniert. Ich habe sogar Javascript ausprobiert, aber mein Code kann die Datei auf dem Server nicht finden 🙁 Meine Frage ist: Welche Sprache und welche Technik sollte ich für meine Bedürfnisse verwenden.

Vielen Dank, Guyz.

  • Vielleicht möchten Sie hier einen Teil Ihres Codes hinzufügen, um den Ball ins Rollen zu bringen. Ein erster Tipp: Auschecken codex.wordpress.org/AJAX_in_Plugins

    – DB

    17. März 2018 um 22:56 Uhr

Wordpress und CSV Datei Kann es funktionieren
Omar Tanti

Ich denke, das ist es, wonach Sie suchen, ohne dass Bibliotheken erforderlich sind:

Zuerst erstellen Sie ein Formular (die Formularaktion kann Ihre Homepage sein, da wir auf die $_GET-Parameter warten werden initdie bei jedem Seitenaufbau ausgeführt wird):

<form action="<?php echo site_url() ?>">
    <input type="hidden" name="csv_export" value="order_status" />
    <input type="text" name="code" />
    <input type="submit" value="Download Report" name="download_report" />
</form>

Dann müssen Sie eine Aktion hinzufügen init in functions.php, um auf den get-Parameter zu hören csv_export um Ihre Funktionalität zum Vorbereiten der CSV-Datei und zum Ausgeben zum Herunterladen zu starten: (Wir verwenden die Funktion exit(); nachdem wir CSV erstellt haben, um sicherzustellen, dass nach diesem Vorgang nichts anderes ausgeführt wird.)

function check_for_export() {
    if ( isset( $_GET['csv_export'], $_GET['code'] ) && $_GET['csv_export'] == 'order_status' ) {
            ob_end_clean();
            export_order_status_csv( $_GET['code'] );
            exit();
        }
    }
}
add_action('init', 'check_for_export');

Jetzt können Sie die Funktionalität zum Generieren des CSV-Berichts starten. Diese Funktion hängt davon ab, wie Sie die Daten abrufen, aber Sie können diesem Beispiel folgen, um die Kopfzeilen festzulegen und den Bericht auszugeben:

function export_order_status_csv( $code ) {

    // Make a DateTime object and get a time stamp for the filename
    $date = new DateTime();
    $ts = $date->format( "Y-m-d-G-i-s" );

    // A name with a time stamp, to avoid duplicate filenames
    $filename = "order-statuses-export-$ts.csv";

    // Tells the browser to expect a CSV file and bring up the
    // save dialog in the browser
    header( 'Pragma: public' );
    header( 'Expires: 0' );
    header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
    header( 'Content-Description: File Transfer' );
    header( 'Content-Type: text/csv' );
    header( 'Content-Disposition: attachment;filename=" . $filename );
    header( "Content-Transfer-Encoding: binary' );

    // This opens up the output buffer as a "file"
    $fp = fopen( 'php://output', 'w' );

    //This needs to be customised from your end, I am doing a WP_Query for this example
    $results = new WP_Query();  
    if ( $results->have_posts() ) {

        //This is set to avoid issues with special characters
        $bom = ( chr( 0xEF ) . chr( 0xBB ) . chr( 0xBF ) );

        //add BOM to fix UTF-8 in Excel
        fputs( $fp, $bom );

        // Set the headers of the csv
        fputcsv( $fp, [
            'orderID',
            'orderDate',
            'orderTotal'
        ] );

        while ( $results->have_posts() ) {
            $results->the_post();

            //Here we are inserting the row data per result fetched
            fputcsv(
                $fp,
                [
                    get_the_ID(),
                    get_the_date(),
                    'your_custom_data'
                ]
            );

        }
        wp_reset_query();
        // Close the output buffer (Like you would a file)
        fclose( $fp );
    } else {
        fputcsv( $fp, [ 'No Results' ] );
        fclose( $fp );
    }

}

Wenn Sie eine CSV-Datei exportieren, müssen Sie sich an eine Aktion anschließen, die verarbeitet wird, bevor etwas ausgegeben wurde. Vor dem Erstellen der CSV-Datei kann es keine Ausgabe geben, da wir die Header aktualisieren.

Wenn Sie die Daten aus einer CSV-Datei lesen und bearbeiten möchten, um Ihren CSV-Export anzupassen, können Sie diese Funktion anstelle von WP_Query im obigen Beispiel verwenden: http://php.net/manual/en/function.fgetcsv.php

$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}

  • Das ist sehr nützlich und Sie haben das richtige Denken. Wahrscheinlich habe ich mein Problem nicht gut genug erklärt. Die CSV-Datei muss nicht erneut gedruckt, ersetzt oder erneut gespeichert werden. Alles, was ich brauche, ist, einen Code (vom Benutzer angegeben) mit der CSV-Datei zu vergleichen und die Daten für diese bestimmte Zeile abzurufen.

    – Der Professor

    18. März 2018 um 17:47 Uhr


  • Um die Daten aus der CSV zu lesen, verwenden Sie den letzten Teil der Antwort und überprüfen Sie den Code mit den aus der CSV abgerufenen Daten.

    – Omar Tanti

    18. März 2018 um 18:22 Uhr

Ich habe tatsächlich verwendet PHPExcel in einem früheren Projekt, das das erreicht hat, wonach Sie suchen, obwohl ich sehe, dass es zugunsten von verworfen wurde PhpSpreadsheet-Bibliothek. Also die würde ich verwenden!

Was beide Bibliotheken im Wesentlichen (neben vielen anderen Dingen) tun können, ist, die Tabelle zu analysieren und die relevanten Informationen basierend auf Ihren Anforderungen zurückzugeben.

Sie könnten also Ihre Tabelle in einem separaten Verzeichnis ablegen, aus dem Sie dann die PhpSpreadsheet-Bibliothek verwenden, um Informationen zu extrahieren – und dem Kunden so präsentieren, wie Sie es für richtig halten.

998920cookie-checkWordPress- und CSV-Datei. Kann es funktionieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy