Comment puis-je forcer un téléchargement de fichier dans le backend WordPress?
2 réponses
- votes
-
- 2013-01-04
un autreplugin utilepour l'exportation auformat CSV.peut être utile à quelqu'un
<?php class CSVExport { /** * Constructor */ public function __construct() { if(isset($_GET['download_report'])) { $csv = $this->generate_csv(); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private", false); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"report.csv\";" ); header("Content-Transfer-Encoding: binary"); echo $csv; exit; } // Add extra menu items for admins add_action('admin_menu', array($this, 'admin_menu')); // Create end-points add_filter('query_vars', array($this, 'query_vars')); add_action('parse_request', array($this, 'parse_request')); } /** * Add extra menu items for admins */ public function admin_menu() { add_menu_page('Download Report', 'Download Report', 'manage_options', 'download_report', array($this, 'download_report')); } /** * Allow for custom query variables */ public function query_vars($query_vars) { $query_vars[] = 'download_report'; return $query_vars; } /** * Parse the request */ public function parse_request(&$wp) { if(array_key_exists('download_report', $wp->query_vars)) { $this->download_report(); exit; } } /** * Download report */ public function download_report() { echo '<div class="wrap">'; echo '<div id="icon-tools" class="icon32"> </div>'; echo '<h2>Download Report</h2>'; //$url = site_url(); echo '<p>Export the Users'; } /** * Converting data to CSV */ public function generate_csv() { $csv_output = ''; $table = 'users'; $result = mysql_query("SHOW COLUMNS FROM ".$table.""); $i = 0; if (mysql_num_rows($result) > 0) { while ($row = mysql_fetch_assoc($result)) { $csv_output = $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"; } return $csv_output; } } // Instantiate a singleton of this plugin $csvExport = new CSVExport();
one more useful plugin for exporting into CSV. may be useful to some one
<?php class CSVExport { /** * Constructor */ public function __construct() { if(isset($_GET['download_report'])) { $csv = $this->generate_csv(); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private", false); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"report.csv\";" ); header("Content-Transfer-Encoding: binary"); echo $csv; exit; } // Add extra menu items for admins add_action('admin_menu', array($this, 'admin_menu')); // Create end-points add_filter('query_vars', array($this, 'query_vars')); add_action('parse_request', array($this, 'parse_request')); } /** * Add extra menu items for admins */ public function admin_menu() { add_menu_page('Download Report', 'Download Report', 'manage_options', 'download_report', array($this, 'download_report')); } /** * Allow for custom query variables */ public function query_vars($query_vars) { $query_vars[] = 'download_report'; return $query_vars; } /** * Parse the request */ public function parse_request(&$wp) { if(array_key_exists('download_report', $wp->query_vars)) { $this->download_report(); exit; } } /** * Download report */ public function download_report() { echo '<div class="wrap">'; echo '<div id="icon-tools" class="icon32"> </div>'; echo '<h2>Download Report</h2>'; //$url = site_url(); echo '<p>Export the Users'; } /** * Converting data to CSV */ public function generate_csv() { $csv_output = ''; $table = 'users'; $result = mysql_query("SHOW COLUMNS FROM ".$table.""); $i = 0; if (mysql_num_rows($result) > 0) { while ($row = mysql_fetch_assoc($result)) { $csv_output = $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"; } return $csv_output; } } // Instantiate a singleton of this plugin $csvExport = new CSVExport();
-
- 2014-12-24
admin_init Hook ou load- (page) Hook semblefonctionner,WordPressn'apas été définien-tête dans cet état. J'utilise le crochet load- (page) caril s'exécute lorsqu'unepage demenu d'administrationest chargée. Vouspouvez charger votre scriptpour unepage spécifique.
Vouspouvez vérifier load- (page) Hook sur WordPress Codex
Si vous utilisez admin_init Hook,assurez-vous de vérifiernonce en utilisant check_admin_referer ou un autre scriptpeut-êtrepasser la condition obtiendra la sortie de votretéléchargementfichier.
admin_init Hook or load-(page) Hook seems to work, WordPress has not been set header in this state. I'm using load-(page) Hook because it runs when an administration menu page is loaded. You can load your script for specific page.
You can check load-(page) Hook on WordPress Codex
If you're using admin_init Hook make sure to verify nonce using check_admin_referer or other script maybe pass the condition will get output your download file.
Je voudrais ajouter unbouton "Cliquerpourtélécharger" à l'un demesplugins WordPress,et jene saispas quel hook utiliser.Jusqu'àprésent,accrocher 'admin_init' à ce code semblefonctionner:
Cela semblefonctionner,maisje veuxjuste voir s'ilexiste unebonnepratique.
Merci, Dave