使用 admin_post 挂钩自定义 HTML 表单提交错误
Posted
技术标签:
【中文标题】使用 admin_post 挂钩自定义 HTML 表单提交错误【英文标题】:Custom HTML form submission error using admin_post hook 【发布时间】:2021-11-08 18:56:59 【问题描述】:我有一个 html 表单,我使用 elementor 上的 HTML 代码 sn-p 插入了该表单。我想将它连接到我的 wordpress 数据库。我已经研究了 wpdb-> insert 函数,但无法让它工作。我正在使用 wp-admin 的操作挂钩。
<html
<body>
<form action="https://www.example.com/wp-admin/admin-post.php" method="post" name="myform">
<!-- ####################################################### --><br><br>
<h3>Option1 </h3>
<input type="radio" name="a" id="1" value="1" /> None of the time
<input type="radio" name="a" id="1" value="2" /> Rarely
<input type="radio" name="a" id="1" value="3" /> Some of the Time
<input type="radio" name="a" id="1" value="4" /> Often
<input type="radio" name="a" id="1" value="5" /> All of the Time
<br /><br />
<!-- #############################################################-->
<h3> Option2 </h3>
<input type="radio" name="p" id="High" value="1" /> None of the time
<input type="radio" name="p" id="Medium" value="2" /> Rarely
<input type="radio" name="p" id="Low" value="3" /> Some of the Time
<input type="radio" name="p" id="Medium" value="4" /> Often
<input type="radio" name="p" id="Medium" value="5" /> All of the Time <br /><br />
<!-- ########################################################## -->
<input type="hidden" name="action" value="compass_data">
<br />
<br />
<h3><span id="msg"></span></h3>
</form>
<input type="submit" value="SUBMIT" name="submit" onclick="setTimeout(validate, 1500)" />
<br /><br />
<script>
/* Some functions here*/
</script>
</body>
</html>
上面的JS有一个变量需要存入数据库。我正在使用 PHP 代码 sn-p 插件来放置以下 PHP 代码。我的问题是我应该把这个 PHP 代码放在 functions.php 还是 PHP sn-p 的什么位置?
add_action('admin_post_compass_data','storedata_compass',11);
add_action('admin_post_nopriv_compass_data','storedata_compass',11);
function storedata_compass()
if(isset($_POST['SUBMIT']))
global $wpdb;
$user = wp_get_current_user();
$userId = $user->ID;
$user_data = get_userdata($user_id);
$data = array('Student Id' => $userId, 'First Name' => $user_data -> user_firstname, 'Email' => $user_data -> user_email, 'Group Id' => 2, 'Intro Selection' => 'DBTEST', 'End Selection' => 'test2');
$format = array('%d', '%s', '%s', '%d', '%s', '%s');
$wpdb->insert( 'wpqc_compass', $data, $format);
【问题讨论】:
我现在用过 admin-post.php 【参考方案1】:您的 php 代码在您设置 $tablename
的位置有点损坏
It should be $tablename = $wpdb->prefix . 'compass'
而不是$tablename = $wpdb-> 'compass';
但是,当您尝试运行该 php 代码时,您应该会遇到错误。但是你应该把它添加到functions.php中。
你也不应该只听$_POST['submit']
,因为如果你有任何其他表单,它有一个名为“提交”的按钮,它也会触发这个 php 脚本。
【讨论】:
我现在正在使用 admin_post 动作挂钩与数据库进行交互,但仍然没有用。以上是关于使用 admin_post 挂钩自定义 HTML 表单提交错误的主要内容,如果未能解决你的问题,请参考以下文章