Ваш вопрос немного расплывчатый ... но ответ на вопрос, почему вы видите csv в каждом файле, заключается в том, что вы включаете его после отправки заголовков. Это означает, что вам нужно подключить вашу функцию к init
или admin_init
в зависимости от обстоятельств.
Также .. Вы хотите запускать функцию экспорта в csv только при нажатии кнопки. Я делаю что-то вроде этого.
// CSV Export
if (isset($_REQUEST['do']) && $_REQUEST['do'] == 'download' && $_GET['page'] == 'your-page-slug'){
add_action('admin_init', 'download_csv_file');
}
Я запускаю экспорт csv с помощью кнопки на странице администратора, как это.
<a class="button-primary" href="<?php echo admin_url('admin.php?page=your-page-slug&do=download');?>&_wpnonce=<?php echo wp_create_nonce( 'download_csv' )?>">Download Existing Data</a>
Я полагаю, с информацией выше, вы должны быть в состоянии решить вашу проблему.