2017-11-22 5 views
2

カスタムテーマのfunctions.phpファイルに管理メニューページを作成しました。そのメニューをクリックすると、CSV形式でデータをエクスポートします。wordpress export csvが管理メニューページで機能しない

私は次のコードを書いていますが、そのメニューをクリックするとExcelのガベージ形式の結果が得られます。

enter image description here

カスタムテーマののfunctions.phpファイル

1で書かれた私のコードです続き)

<?php 
add_action('admin_menu', 'my_menu_pages'); 
function my_menu_pages(){ 
     add_menu_page('Export Payment History', 'Export Payment History', 'manage_options', 'export-history', 'export_payment_history','dashicons-image-rotate-right'); 
} 
?> 

2カスタム管理者メニューのページを追加)機能

function export_payment_history(){ 
global $wpdb, $user_id; 
$c_user = get_current_user_id(); 

$filename = "users_csv.csv"; 
$data_rows = array(); 


$results = $wpdb->get_results("SELECT * FROM wp_custom_payment"); 

$header_row = array(
    0 => 'ID', 
    1 => 'TRANSACTION ID', 
    2 => 'EMAIL', 
    3 => 'PAYMENT DATE', 
    4 => 'TOTAL AMOUNT', 

); 


$i = 1; 
foreach($results as $result) { 

    $item_unserialize = unserialize($result->item_data); 

    $user_info = get_userdata($result->user_id); 
    $user_email = $user_info->user_email; 

    $row = array(); 
    $row[0] = $i; 
    $row[1] = $result->txn_id; 
    $row[2] = $user_email; 
    $row[3] = $result->payment_date; 
    $row[4] = $item_unserialize['payment_total']['payment_gross']; 

    $data_rows[] = $row; 

    $i++; 
} 

$fh = @fopen('php://output', 'w'); 
fprintf($fh, chr(0xEF) . chr(0xBB) . chr(0xBF)); 

header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Content-Description: File Transfer'); 
header('Content-type: text/csv'); 
header('Content-Disposition: attachment; filename=' . $filename); 
header('Expires: 0'); 
header('Pragma: public'); 



fputcsv($fh, $header_row); 

    foreach ($data_rows as $data_row) { 
    fputcsv($fh, $data_row); 
    } 

    fclose($fh); 
    exit(); 

} 
をコールバック

データを取得していないExcelシートにガベージ値がありますnyone私を助けてください。

すべての enter image description here

+0

いただきました! 'fprintfのため、この行($ FH、CHR(0xEFという)CHR(0xBB)CHR(0xbfの)。。);' – ArtisticPhoenix

+0

また、私はその行を削除しました。 –

+0

実際の出力を見ましたか?私はこれが「ガベージ形式の結果を得た」ということが何であるか分かりません – ArtisticPhoenix

答えて

0

まず、次のような出力が全てみんなに感謝私は、私はちょうどstream_get_contentsを追加している私の自己

ことによってそれを解決してきました。

全コード..

function export_payment_history(){ 
global $wpdb, $user_id; 
$c_user = get_current_user_id(); 

$filename = "users_csv.csv"; 
$data_rows = array(); 


$results = $wpdb->get_results("SELECT * FROM wp_custom_payment"); 

$header_row = array(
    0 => 'ID', 
    1 => 'TRANSACTION ID', 
    2 => 'EMAIL', 
    3 => 'PAYMENT DATE', 
    4 => 'TOTAL AMOUNT',  
); 


$i = 1; 
foreach($results as $result) { 

    $item_unserialize = unserialize($result->item_data); 

    $user_info = get_userdata($result->user_id); 
    $user_email = $user_info->user_email; 

    $row = array(); 
    $row[0] = $i; 
    $row[1] = $result->txn_id; 
    $row[2] = $user_email; 
    $row[3] = $result->payment_date; 
    $row[4] = $item_unserialize['payment_total']['payment_gross']; 

    $data_rows[] = $row; 

    $i++; 
} 

ob_end_clean(); 
$fh = @fopen('php://output', 'w'); 
fprintf($fh, chr(0xEF) . chr(0xBB) . chr(0xBF)); 

header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Content-Description: File Transfer'); 
header('Content-type: text/csv'); 
header('Content-Disposition: attachment; filename=' . $filename); 
header('Expires: 0'); 
header('Pragma: public'); 

fputcsv($fh, $header_row); 

    foreach ($data_rows as $data_row) { 
    fputcsv($fh, $data_row); 
    } 

$csvFile = stream_get_contents($fh); 
fclose($fh); 
die(); 
} 
関連する問題