【发布时间】:2019-11-23 17:39:37
【问题描述】:
一些背景知识:我开发了一个带有表单的 wordpress 插件。我需要一种方法来通知用户如果他们填写表格搞砸了。我最初的倾向是 php 会话变量。我将各种代码添加到我的插件中以使其正常工作,包括标题顶部的session_start(),它破坏了一些东西。所以我开始研究向用户显示消息的最佳方式。
我可以使用 cookie 作为 php 会话的替代方案,但我的问题是:
在 Wordpress 中设置前端消息的最佳方式是什么? 请注意,我是 wordpress 新手。 我听说过 Wordpress 全局变量? Wordpress 是否提供了诸如我可以设置的全局变量之类的东西,这些变量可以在任何地方访问?那会奏效。是否有一些我应该研究的插件(我不想让这个膨胀)。 Cookie 是最佳途径吗?
这是一个可以说明我想要完成的代码的 sn-p:
前端表单(简码)
<form method='POST'class="kb_donation_form" action="<?= // my action ?>">
<div class="form-group">
<label for="kb_first_name">First Name</label>
<input type="text" class="form-control" id="kb_first_name" name="kb_first_name" placeholder="First Name">
</div>
<div class="form-group">
<label for="kb_last_name">Last Name</label>
<input type="text" class="form-control" id="kb_last_name" name="kb_last_name" placeholder="First Name">
</div>
<div class="form-group">
<label for="kb_email">Email</label>
<input type="email" class="form-control" id="kb_email" name="kb_email" placeholder="Email Address">
</div>
<div class="form-group">
<label for="kb_grad_year">Graduation Year</label>
<select id="kb_grad_year" name="kb_grad_year" class="form-control">
<option value="friend">I am just a friend.</option>
<option value="1950">1950</option>
</select>
</div>
<div class="form-group">
<label for="kb_donation_amount">Donation Amount</label>
<input type="text" class="form-control" id="kb_donation_amount" name="kb_donation_amount" placeholder="100.00">
</div>
<div class="form-group">
<input type="submit" name="submit" value="Make Donation" class="btn btn-default">
</div>
</form>
后处理程序代码:
if(isset($_POST['submit'])) {
if(
!empty($_POST['kb_first_name']) &&
!empty($_POST['kb_last_name']) &&
!empty($_POST['kb_email']) &&
!empty($_POST['kb_grad_year']) &&
!empty($_POST['kb_donation_amount'])
) {
// All Data Is Set
// Make sure email is valid format
$email = filter_var($_POST['kb_email'], FILTER_VALIDATE_EMAIL);
if(!empty($email)) { // ect.. ect..}
else {
// screw up
// Notify the user
// $_SESSION['error'] = 'You Screwed Up' === NEED ALTERNATIVE
}
【问题讨论】: