私は管理ページでプラグインを作成しています。
どちらの場合も、 'pages'はにログインした管理者だけがアクセスできる必要があります。これまでのところ、以下のように、wp-blog-header.phpをphpファイルにインクルードし、ユーザーが管理者であることを確認してから自分で作業を行うことによって、これらの両方を達成する1つの方法を見つけました。
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
これを行うより良い方法はありますか?
このようにしてはいけない理由はありますか?
ありがとう:)
私はこの2つの方法をやった:
1) - csvエクスポート機能 - wpが何も出力する前に、特別なコンテンツタイプの処理が必要であることを検出します。
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 */
}
もう1つの方法は、よりフィード指向ですが、wpが特別な処理を検出することを除いて、同じ原則です(?feed = icsまたはのチェック)。 add_feedコードをinitアクションに入れます。
add_feed('ics', 'ical_feed');
関数 'ical_feed'はヘッダ全体を処理します。