Je crée un plugin avec une page d'administration qui doit:
Dans ces deux cas, les "pages" doivent ne sont accessibles qu'aux administrateurs connectés. Jusqu'à présent, j'ai trouvé un moyen d'accomplir ces deux choses, en incluant wp-blog-header.php dans un fichier php, en vérifiant que l'utilisateur est un administrateur et en procédant moi-même, comme indiqué ci-dessous.
require('../../../wp-blog-header.php');
if (!current_user_can('administrator'))
{
wp_die( __('You do not have sufficient permissions to access this page.') );
}
...set headers & stream file
Existe-t-il une meilleure façon de le faire?
Y a-t-il une raison pour laquelle je ne devrais pas le faire de cette façon?
Merci :)
J'ai fait ça de deux manières:
1) - une fonction d’exportation csv - détecte que le traitement de type de contenu spécial est requis AVANT que wp n’émette quoi que ce soit.
add_action ('plugins_loaded', 'amr_meta_handle_csv');
function amr_meta_handle_csv ($csv, $suffix='csv') {
// chcek if there is a csv request on this page BEFORE we do anything else ?
if (( isset ($_POST['csv']) )) {
// do some stuff
to_csv ($csv, $suffix)
}
}
function to_csv ($csv, $suffix) {
/* create a csv file for download */
if (!isset($suffix)) $suffix = 'csv';
$file = 'userlist-'.date('YmdHis').'.'.$suffix;
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=$file");
header("Pragma: no-cache");
header("Expires: 0");
echo $csv;
exit(0); /* Terminate the current script sucessfully */
}
Un autre moyen était plus orienté vers l'alimentation, mais le même principe, sauf que wp effectue la détection de manipulation spéciale (recherche? Feed = ics ou). Placez le code add_feed dans une action init.
add_feed('ics', 'ical_feed');
la fonction 'ical_feed' fait alors tout l'en-tête, etc.