Esportare tabelle WordPress in Excel
Ho creato in precedenza script PHP per esportare tabelle di database in formato .xls come questo:
$select = "SELECT * FROM tracking";
$export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( ) );
$fields = mysql_num_fields ( $export );
$file = 'export';
for ( $i = 0; $i < $fields; $i++ )
{
$header .= mysql_field_name( $export , $i ) . "\t";
}
while( $row = mysql_fetch_row( $export ) )
{
$line = '';
foreach( $row as $value )
{
if ( ( !isset( $value ) ) || ( $value == "" ) )
{
$value = "\t";
}
else
{
$value = str_replace( '"' , '""' , $value );
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim( $line ) . "\n";
}
$data = str_replace( "\r" , "" , $data );
if ( $data == "" )
{
$data = "\n(0) Records Found!\n";
}
$filename = $file."_".date("M-d-Y");
header("Content-type: application/octet-stream");
header( "Content-disposition: filename=".$filename.".xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
Quello che vorrei sapere è come "convertire" questo script in formato WordPress usando la classe $wpdb? Riesco a impostare la query iniziale per selezionare i dati dalla tabella che mi interessa, ma mi perdo in alcune caratteristiche della classe wpdb. Vorrei anche sapere dove inserire questo codice in WordPress, in modo che quando un utente clicca su un link, esegua questa query e scarichi il file .xls?
Qualsiasi aiuto è molto apprezzato! Questo sito è fantastico!

crea questo file come 'export_data.php'. Poi chiama questo php dal link
<?php
$host = 'localhost';
$user = 'mysqlUser';
$pass = 'myUserPass';
$db = 'myDatabase';
$table = 'products_info';
$file = 'export';
$link = mysql_connect($host, $user, $pass) or die("Impossibile connettersi." . mysql_error());
mysql_select_db($db) or die("Impossibile connettersi.");
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field']."; ";
$i++;
}
}
$csv_output .= "\n";
$values = mysql_query("SELECT * FROM ".$table."");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr[$j]."; ";
}
$csv_output .= "\n";
}
$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;
?>

Sono decisamente in ritardo per aiutare con la mia risposta.. spero :) , ma mi rivolgo a chiunque abbia bisogno di una funzione WordPress aggiornata per esportare una tabella personalizzata in un file CSV ben formattato con righe pulite
function ns_contact_form_csv_pull() {
global $wpdb;
$table = 'ns_contact_form';// nome della tabella
$file = 'ns_contact_form_csv'; // nome del file csv
$results = $wpdb->get_results("SELECT * FROM $wpdb->prefix$table",ARRAY_A );
if(count($results) > 0){
foreach($results as $result){
$result = array_values($result);
$result = implode(", ", $result);
$csv_output .= $result."\n";
}
}
$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;
}
add_action('wp_ajax_csv_pull','ns_contact_form_csv_pull');
Scarica il CSV (devi essere loggato) basta aggiungere questo URL nel tuo browser http://example.com/wp-admin/admin-ajax.php?action=csv_pull
... cambia il dominio con il tuo :)
Puoi chiamarlo ovunque in WordPress usando:
$ajax_url = admin_url('admin-ajax.php?action=csv_pull');

Qualcosa del genere:
$results = $wpdb->get_results('SELECT * FROM tracking;');
Vedi Risultati generici SELECT nel Codex per maggiori dettagli.
Non sono sicuro su come implementare al meglio il link a questo, una pagina con un template personalizzato potrebbe fare al caso nostro.
