Code snippets

Export functie naar .csv maken

Als je in je eigen WordPress plugin of thema een export functie wil maken naar een .csv bestand kan dat heel eenvoudig.

Op de plek waar je de link wil hebben zet je het volgende neer:

<a href="<?php echo plugin_dir_url( __FILE__ ).'export.php?nonce='.wp_create_nonce("csv_export_nonce");?>" class="button button-primary">Exporteer</a>

Vervolgens maak je een bestand aan (bijvoorbeeld export.php), ik ga er in dit voorbeeld vanuit dat dit bestand in een plugin staat, en indezelfde directory als het bestand met de link. Ik zal het stap voor stap even doorlopen:

  1. Eerst laden we de core WordPress bestanden
  2. Daarna controleren we de nonce met de verify nonce functie
  3. Stel de headers in
  4. Haal de data op die je wilt exporteren
  5. Exporteer naar .csv

Dat is alles!

<?php

/* 1)  load wordpress */
# No need for the template engine
define( 'WP_USE_THEMES', false );
#find the base path
define( 'BASE_PATH', find_wordpress_base_path()."/" );
require_once( BASE_PATH.'wp-load.php' );


/* 2) Verify with nonce*/
//verify the request. 
if (isset($_GET['nonce'])) {
    $nonce = $_GET['nonce'];
    if (! wp_verify_nonce( $nonce, 'csv_export_nonce' )) {
      die("invalid command");
    }
} else {
  die("invalid command");
}


/* 3) set the headers. */
header('Content-Type: application/excel');
header('Content-Disposition: attachment; filename="sample.csv"');


/*4) get the data you want to export */
global $wpdb;
$entries = $wpdb->get_results("select post_title from $wpdb->posts");

/* 5) export it to csv */
$fp = fopen('php://output', 'w');
foreach ($entries as $entry) {
    $row = array();
    foreach ($entry as $key => $value) {
         $row[] = $value;
    }
    fputcsv($fp, $row);
}
fclose($fp);

function find_wordpress_base_path() {
  $dir = dirname(__FILE__);
  do {
      //it is possible to check for other files here
      if( file_exists($dir."/wp-config.php") ) {
          return $dir;
      }
  } while( $dir = realpath("$dir/..") );
  return null;
}

Related Articles

Laat een reactie achter