使用admin-post.php作为管理表单,但它会将我引导至admin-post.php白屏

时间:2018-04-18 作者:Coltvant

我使用的是管理帖子。php在我正在构建的WordPress插件的管理端处理表单提交。我的表单设置为如下函数:

function display_charge_customer_input() {
 global $stripe_options;
  $charge_amount_btn = "Charge $" . $stripe_options[\'amount_to_charge\'];

 ?>
  <h3 class="title"><?php _e(\'Charge Customer\', \'kite_stripe\'); ?></h3>
   <form action="<?php echo esc_url( admin_url(\'admin-post.php\') ); ?>" method="post">
    <input type="hidden" name="action" value="charge_customer_data"/>
      <table class="form-table">
        <tbody>
          <tr valign="top">
            <th scope="row" valign="top">
              <?php _e(\'Charge Customer\', \'kite_stripe\'); ?>
            </th>
            <td>
              <input id="charge_customer_input" name="charge_customer_input" type="text" class="regular-text" value="Customer Id"/>
              <label class="description" for="charge_customer_input"><?php _e(\'Paste the customer id of the person you\\\'d like to charge.\', \'kite_stripe\'); ?></label>
            </td>
          </tr>
        </tbody>
      </table>

      <p class="submit_charge">
        <input type="submit" class="button-primary" name = "charge_submit" value="<?php _e($charge_amount_btn, \'kite_domain\') ?>" />
      </p>
  </form>
<?php

}
我正在从另一个文件调用该函数,以使其显示在管理页面上。一切正常。

下面是我处理表单请求的代码:

add_action( \'admin_post_charge_customer_data\', \'charge_customer_data\' );
add_action( \'admin_post_nopriv_charge_customer_data\', \'charge_customer_data\' );
function charge_customer_data() {
 if (isset($_POST[\'charge_submit\'])){
   $url = "http://localhost:8888/wp-admin/admin.php?page=user-list-table.php";
   wp_redirect($url);
   exit;
 }
}
我也会让表单保存用户输入,但我只是想先让重定向工作。我试着在Stack Overflow和Google搜索上尽我所能地阅读所有内容,但我仍然不知道我错在哪里。我在想也许我的if(isset($_POST[\'charge_submit\'])) 如果没有单击submit按钮,代码就不能工作,但我不明白为什么不能。

我对这一切都很陌生,所以任何帮助都将不胜感激。非常感谢。

1 个回复
SO网友:Coltvant

所以我想出来了。。。我意识到我在添加charge_customer_data() 类中的函数,并且它从未被调用。我在插件目录中创建了一个与类分离的新文件,添加了该函数,它成功了。

结束

相关推荐

找出WordPress中使用PHP会话的原因

有没有办法找出什么在使用PHP会话或派生PHP进程?我的Wordpress网站流量很大(每月点击350万次)。我们最近发现,长期以来权限设置不正确,这意味着没有任何东西可以访问PHP会话。不幸的是,在我们修复了权限之后,我们发现大量PHP进程正在快速生成,服务器完全没有响应。它甚至不会从健康检查回来。它是AWS中的一个专用Nginx服务器,没有其他任何东西在其上运行。我们看到的是,数十个PHP进程开始并不断增长。如果我们再次“破坏”PHP会话权限,问题就不会发生,所以我们已经确定Wordpress中的某些