私は、管理設定オプションでwoocommerceストアのすべての商品を表示するプラグインを書きました。今、商品をCSVファイルとしてダウンロードするためのリンクを追加します。
問題は、リンクをクリックすると、このページを表示する権限がないという権限エラーが表示されることです。
これが私のコードです:
function extra_tablenav($which) {
if ($which == "top") {
echo '<h3 style="display:inline">'
. __('These products are currently in the database:')
. '</h3>' .
' ' .
'<a href="' . admin_url('admin.php?page=download_csv.php') . '">' . __('Export to CSV') . '</a>';
}
}
これらの許可をどのように修正できますか?
URLをadmin.php
に向けないで、代わりにadmin-post.php
を使用してください。
'<a href="' . admin_url( 'admin-post.php?action=print.csv' ) . '">'
プラグインにそのアクションのコールバックを登録します。
add_action( 'admin_post_print.csv', 'print_csv' );
function print_csv()
{
if ( ! current_user_can( 'manage_options' ) )
return;
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename=example.csv');
header('Pragma: no-cache');
// output the CSV data
}
データを匿名ユーザー(ログインしていないユーザー)が利用できるようにしたい場合は、コールバックを再度登録します。
add_action( 'admin_post_nopriv_print.csv', 'print_csv' );
…そして機能から能力チェックを取り除きます。