你有几件事做错了。
首先,你显然处于WordPress的语境中。为此,您应该使用AJAX API,而不是包括wp-load.php
.实际上,这从来都不是正确的做法
get_results()
默认为对象,因此当您尝试将结果用作数组时,将出现geterrors。添加ARRAY_A
到该函数的参数列表(或使用对象语法)不要硬编码WordPress表前缀$file
未定义当您只需要一个查询时,您有两个查询foreach
和for
, 和相关的代码,太复杂了我没有您的测试表,但这应该很接近。
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\');
要“触发”,请向发送请求
http://sitename.com/wp-admin/admin-ajax.php?action=csv_pull
. 在WordPress中,您可以使用
$ajax_url = admin_url(\'admin-ajax.php?action=csv_pull\');