Je travaille sur la création d'un script qui prend une table de base de données WordPress personnalisée et l'exporte dans un fichier CSV. Je n'arrive pas à le faire fonctionner. Est-ce que quelqu'un peut m'aider
<?php
$parse_uri = explode( 'wp-admin', $_SERVER['SCRIPT_FILENAME'] );
require_once( $parse_uri[0] . 'wp-load.php' );
global $wpdb;
$result = $wpdb->get_results("SELECT * FROM wp_email_table;");
$i = 0;
foreach ($result as $row) {
$csv_output .= $row->Field.
$i++;
}
$csv_output .= "\n";
$values = $wpdb->get_results("SELECT * FROM wp_email_table;");
foreach ($values as $rowr) {
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;
?>
OK, donc je l'ai modifié un peu plus et maintenant je reçois l'erreur suivante
Erreur irrécupérable: impossible d'utiliser l'objet de type stdClass en tant que tableau sur la ligne 8
Vous avez quelques erreurs.
wp-load.php
. Ce n'est pratiquement jamais la bonne façon de le faire.get_results()
est un objet. Vous allez donc avoir des erreurs lorsque vous essayez d'utiliser les résultats sous forme de tableau. Ajoutez ARRAY_A
à la liste d'arguments pour cette fonction (ou utilisez la syntaxe d'objet)$file
n'est pas définiforeach
et for
, et le code associé, est beaucoup trop compliqué.Je n'ai pas votre table à tester mais cela devrait être proche.
function csv_pull_wpse_212972() {
global $wpdb;
$file = 'email_csv'; // ?? not defined in original code
$results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}email_table;",ARRAY_A);
if (empty($results)) {
return;
}
$csv_output = '"'.implode('";"',array_keys($results[0])).'";'."\n";;
foreach ($results as $row) {
$csv_output .= '"'.implode('";"',$row).'";'."\n";
}
$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;
}
add_action('wp_ajax_csv_pull','csv_pull_wpse_212972');
Pour "déclencher" ceci envoyer une requête à http://sitename.com/wp-admin/admin-ajax.php?action=csv_pull
. Dans WordPress, vous pouvez générer cela (et devriez le générer) avec $ajax_url = admin_url('admin-ajax.php?action=csv_pull');