我的设置上有一个按钮,一旦点击它就会提示下载一个csv文件。这是代码。
<?php
/** Step 2 (from text above). */
add_action( 'admin_menu', 'my_plugin_menu' );
/** Step 1. */
function my_plugin_menu() {
add_options_page( 'Members Log Data',
'Members Log',
'manage_options',
'sj-member-option',
'members_option' );
}
/** Step 3. */
function members_option() {
if ( !current_user_can( 'manage_options' ) )
{
wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
}
$name = "member-log-".date('Y-m-d');
$list[] = array('username','no of favorites');
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=' . $name);
$op = fopen('php://output','w');
foreach($list as $row)
{
fputcsv($op,$row);
}
fclose($op);
/*
echo '<div class="wrap">';
echo '<p>Here is where the form would go if I actually had options.</p>';
echo '</div>';
*/
}
我无法修改会话标题。
我想问一下如何在WP中做这个,因为我不熟悉它。
答案 0 :(得分:0)
您试图发送header
命令太晚,因此错误。使用钩子load-(your_page)
进行此类输出。
function my_plugin_menu() {
$page = add_options_page( 'Members Log Data',
'Members Log',
'manage_options',
'sj-member-option',
'members_option' );
add_action( "load-$page", 'do_export' );
}
在members_option
函数回调中添加一个带有提交按钮的<form>
,并在新的do_export
函数中添加导出操作。像bellow一样,注意我没有检查nonce,但是为了安全性最佳实践,你应该这样做,而不是检查$_POST['submit']
。
function members_option() {
if ( !current_user_can( 'manage_options' ) )
{
wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
}
?>
<form method='post' >
<p class="submit">
<?php wp_nonce_field('my-import'); ?>
<input type='submit' name='submit' value='Restore'/>
</p>
</form>
<?php
}
function do_export() {
if( isset( $_POST['submit'] ) && 'Restore' == $_POST['submit'] )
{
$name = "member-log-".date('Y-m-d');
$list[] = array('username','no of favorites');
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=' . $name);
$op = fopen('php://output','w');
foreach($list as $row)
{
fputcsv($op,$row);
}
fclose($op);
}
}
在我的测试中,导出结果是一个HTML文件,其中包含页面的全部内容以及您定义的'username','no of favorites'
,但这是另一个问题/研究的问题。