我在处理表单时遇到问题。该项目是独立的PHP,我正在使用以下方法将其集成到Wordpress中:
require_once("../../../wp-load.php");
表单元素定义为:
<form id="new_post" name="new_post" class="form-horizontal" method="post" enctype="multipart/form-data">
现在,我对测试很满意,我正在尝试将其移动到wordpress插件中,并使用
is_page()
现在,表单看起来还可以,但当我提交表单时,我看到的是主题的404页面,而不是我在测试版本中得到的所需输出。
我已尝试将表单元素更改为:
<form action="<?php echo esc_url( admin_url(\'admin-post.php\') ); ?> id="new_post" name="new_post" class="form-horizontal" method="post" enctype="multipart/form-data">
但我只得到一个白色屏幕。我的日志中没有显示错误。
对我做错了什么有什么建议吗?
最合适的回答,由SO网友:TomC 整理而成
我通过添加一个隐藏字段来实现这一点:
<input type="hidden" name="action" value="process_form">
并将表单操作更新为:
<form action="<?php echo admin_url( \'admin-post.php\' ); ?>" id="new_post" name="new_post" class="form-horizontal" method="post" enctype="multipart/form-data">
然后,我将表单处理打包到一个函数中:
function process_form()
然后使用以下工具钩住它:
add_action( \'admin_post_process_form\', \'process_form\' );
这是因为发送到admin post。然后,php在表单隐藏字段中按名称查找函数,可以使用
admin_post_YOUR_HIDDEN_VALUE_HERE