Export tabel WordPress în Excel
Am creat anterior scripturi PHP pentru a exporta un tabel de baze de date în format .xls astfel:
$select = "SELECT * FROM tracking";
$export = mysql_query ( $select ) or die ( "Eroare SQL: " . 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) Înregistrări găsite!\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";
Ceea ce aș dori să știu este cum să "convertesc" acest cod în format WordPress folosind clasa $wpdb? Pot să obțin interogarea inițială pentru a selecta datele din tabelul dorit, dar mă pierd în unele dintre semanticile clasei wpdb. De asemenea, aș fi vrut să știu unde aș putea plasa acest cod în WordPress, astfel încât atunci când un utilizator apasă pe un link, să ruleze această interogare și să descarce fișierul .xls?
Orice ajutor este foarte apreciat! Acest site este minunat!

creează acest fișier ca 'export_data.php'. Apoi apelează acest PHP din link
<?php
$host = 'localhost';
$user = 'mysqlUser';
$pass = 'myUserPass';
$db = 'myDatabase';
$table = 'products_info';
$file = 'export';
$link = mysql_connect($host, $user, $pass) or die("Nu mă pot conecta." . mysql_error());
mysql_select_db($db) or die("Nu mă pot conecta.");
$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;
?>

Sunt clar cam târziu să ajut cu răspunsul meu.. sper :) , dar mă adresez oricui altcuiva care are nevoie de o funcție WordPress actualizată pentru a exporta un tabel personalizat într-un fișier CSV afișat frumos și clar pe rânduri
function ns_contact_form_csv_pull() {
global $wpdb;
$table = 'ns_contact_form';// numele tabelului
$file = 'ns_contact_form_csv'; // numele fișierului 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');
Descarcă fișierul CSV (trebuie să fii autentificat) doar adaugă acest URL în browser http://example.com/wp-admin/admin-ajax.php?action=csv_pull
... schimbă domeniul cu al tău :)
Poți să-l apelezi oriunde în WordPress folosind:
$ajax_url = admin_url('admin-ajax.php?action=csv_pull');

Ceva de genul acesta:
$results = $wpdb->get_results('SELECT * FROM tracking;');
Vezi SELECT rezultate generice în Codex pentru detalii.
Nu sunt sigur cum să implementez cel mai bine linkul către aceasta, o pagină cu șablon personalizat ar putea fi soluția.
