我在Wordpress中创建了一个页面,其形式如下:
<form id="contact" action="<?= $_SERVER['PHP_SELF'];?>" method="post">
<h3>Beschikbaarheid</h3>
<h4>Geef uw beschikbare werktijden door.</h4>
<fieldset>
<input placeholder="Uw naam" type="text" name="name" value="<?= $name ?>" tabindex="1">
<span class="error"><?= $name_error ?></span>
</fieldset>
<fieldset>
<input placeholder="Uw Emailadres" type="text" name="email" value="<?= $email ?>" tabindex="2">
<span class="error"><?= $email_error ?></span>
</fieldset>
我已将这个表单的函数放在functions.php中,但它没有用。制作运作形式的正确方法是什么?
答案 0 :(得分:1)
handlig表单的最佳方式 - 使用admin-post.php
并且不要忘记有效和转义数据。
好教程here
将表单操作更改为<?php echo admin_url('admin-post.php'); ?>
。使用名称操作创建字段:
<input name="action" value="my_action">
在functions.php文件中创建挂钩。
add_action('admin_post_my_action', 'form_handler');
add_action('admin_post_nopriv_my_action', 'form_handler');
function form_handler(){
// handle your form. Use $_POST here
}
不要忘记使用nonce
。
答案 1 :(得分:0)
[更新]
如下所示设置表单操作,以便将数据提交到此页面,并且不会重定向到其他页面。您必须更改输入字段name
属性。不确定name
为name
属性的值为什么不起作用,否则一切正常。我已经在我当地的开发环境中进行了测试。
<form id="contact" method="post" action="<?php the_permalink(); ?>">
抱歉,我不知道有一个请求处理程序。以下是详细信息https://codex.wordpress.org/Plugin_API/Action_Reference/admin_post_(action),此处是修改后的标记
<form id="contact" method="post" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">