我有一个带有自定义表单的页面,它通过 admin-post.php 发送帖子数据。几天前这曾经工作得很好,但现在看来它甚至没有触发该功能。这是代码。 我在同一网站上还有其他一些类似的表单,但它们都已停止工作。
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="POST">
<input type="hidden" name="action" value="create_user">
<?php wp_nonce_field('create_user'); ?>
<input type="text" class="form-control" name="first_name" placeholder="First Name" required/>
<input type="text" class="form-control" name="last_name" placeholder="Last Name" required/>
</form>
在我的functions.php中我有这个
function create_user() {
$retrieved_nonce = $_POST['_wpnonce'];
if (!wp_verify_nonce($retrieved_nonce, 'create_user' ) ){
$status = 'failed';
}else{
// My Code goes here
}
}
add_action( 'admin_post_create_user', 'estudy_create_user' );
我尝试过回显某些内容并终止脚本,只是为了检查该函数是否被触发,但这也不起作用。
任何正确方向的帮助都会很棒:)
最佳答案
经过一番挖掘,我发现 admin-post.php 用于管理端表单(这应该是显而易见的)。当我在前端表单上使用它时。
前端表单的解决方案非常相似,使用admin-ajax.php代替admin-post.php。其次,将 admin_post_*
钩子(Hook)替换为 wp_ajax_*
钩子(Hook)。对于前端访客用户,请使用 wp_ajax_nopriv_*
。
关于php - 通过 admin-post.php 提交 WordPress 自定义表单停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42614582/