从“提交”按钮调用保存函数

时间:2016-04-23 作者:K.Briggs

我试图调用一个函数来保存提交按钮的更改,但我不习惯PHP编程,因为我刚刚开始。我试着在谷歌上搜索了一下,但没有发现任何对我的情况有用或适用的东西。

在脚本的底部,我有一个创建仪表板页面的函数:

function blank_add_pages() {



// anyone can see the menu for the Blank Plugin
  add_menu_page(\'Development Log\',\'Dev Log Plugin\', \'read\', \'development_log\', \'blank_overview\', \'dashicons-book\');
  // http://codex.wordpress.org/Function_Reference/add_menu_page

  // this is just a brief introduction
  add_submenu_page(\'blank_overview\', \'Overview for the Blank Plugin\', \'Overview\', \'read\', \'blank_overview\', \'blank_intro\');
  // http://codex.wordpress.org/Function_Reference/add_submenu_page

}

function blank_overview() {

$logText = wp_remote_fopen(\'http://com.areonline.co.uk/wp-content/plugins/blank/devlog.txt\');

?>
<style>
#devlog-content {
    width: 100%;
}
</style>
<div class="wrap"><h2>Labyrith Development Log</h2>
<p>A simple overview of our work.</p>
<textarea id="devlog-content"><?php echo $logText ?></textarea>
<?php submit_button(); ?>
</div>
<?php
exit;
}

?>
但我不确定如何触发保存调用,将文本区域中的内容(更改)保存回位于第27行ish链接的文件。

有人知道怎么做吗?

1 个回复
SO网友:majick

你需要有一个<form> 要素不指定表单action 将表单帖子属性设置为您所在的同一页面,这样可以轻松处理。

也是一个id 在文本区域上,您需要添加一个name 要捕获的属性$_POST 用于处理。还添加了nonce 字段是良好的做法,检查权限以确保安全。尝试以下操作:

 function blank_overview() {

     $logPath = dirname(__FILE__).\'/devlog.txt\';
     $logText = file_get_contents($logPath);

     if (isset($_POST[\'devlog_content\'])) {
         if ( (wp_verify_nonce($_POST[\'devlog_nonce_field\'],\'devlog_nonce_action\'))
           && (current_user_can(\'manage_options\')) ) {
              $logText = $_POST[\'devlog_content\'];
              file_put_contents($logPath, $logText);
              echo "Dev Log Saved.<br><br>";
          } else {echo "Warning: Dev Log NOT Saved.<br><br>";}
     }
?>

<style>#devlog-content {width: 100%;}</style>
<div class="wrap"><h2>Labyrith Development Log</h2>
<p>A simple overview of our work.</p>
<form method="post">
<?php wp_nonce_field(\'devlog_nonce_action\',\'devlog_nonce_field\'); ?>
<textarea name="devlog_content" id="devlog-content"><?php echo $logText ?></textarea>
<input type="submit" class="button-primary" value="Save Dev Log">
</form>
</div>
<?php } ?>
你也不会我已经删除了exit. 这里不需要它,它可以阻止管理员页脚脚本等完成,因为它会停止进一步的输出。该函数将自动返回,并允许其他事情在没有它的情况下完成。