功能不在页面上工作(WordPress)

时间:2018-02-07 13:26:49

标签: php wordpress function

我在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中,但它没有用。制作运作形式的正确方法是什么?

2 个答案:

答案 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属性。不确定namename属性的值为什么不起作用,否则一切正常。我已经在我当地的开发环境中进行了测试。

<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' ) ); ?>">