如何从Html表单提交数据?

时间:2018-08-07 作者:Marina A.

我用一个表单构建了一个自定义HTML价格计算器,当提交表单时,它会通过action属性调用一个PHP文件,然后这个PHP文件会将收集到的数据发送到我公司的电子邮件,并将另一封电子邮件发送给填好表单的客户。

我们建立的另一个网站不是WordPress网站,但我不知道该把这个PHP文件放在哪里才能在WordPress中工作,因为我是WordPress新手。我已经把计算器放进了我们的主题,但我现在卡住了。我们目前正在使用BeTheme,但如果没有它更容易做到这一点,就不一定会坚持使用它。

任何帮助都将不胜感激。

4 个回复
SO网友:M. Heesters

最好将这种功能放在插件中。不要把它塞进主题。您可以在此处看到wordpress的简单联系人表单插件示例:https://www.sitepoint.com/build-your-own-wordpress-contact-form-plugin-in-5-minutes/

提示:

在适当的时候执行你的代码,找到适合你的钩子(比如init钩子)

  • 在wordpress中使用wp\\u mail(),而不是像上面提到的@WebElaine那样使用标准的php mail()函数:当你为它创建一个插件时,你在切换主题时不会失去你的功能。此外,如果需要,该功能将很容易在站点之间传输,您可以单击按钮打开/关闭该功能。如果该功能只针对该网站,那么最好不要将其包含在(子主题)功能中。php。仅限“;“主题”;应在此处放置特定功能(小部件,包括特定样式/js文件/等)。ea。您不会在子主题中包含联系人表单7代码

  • SO网友:Marc

    我同意其他答案,大多数情况下,最好使用插件来处理表单提交。然而,这条规则也有例外。

    如果您发现自己需要自己处理表单提交,可以将数据提交到admin-post.php. 以下是如何设置:

    首先设置表单。

    <!-- Submit the form to admin-post.php -->
    <form action="<?php echo esc_url( admin_url(\'admin-post.php\') ); ?>" method="POST">
    
        <!-- Your form fields go here -->
    
        <!-- Add a hidden form field with the name "action" and a unique value that you can use to handle the form submission  -->
        <input type="hidden" name="action" value="my_simple_form">
    
    </form>
    
    现在,您将在functions.php 文件您将使用表单中隐藏的操作字段中使用的值。

    function my_handle_form_submit() {
    
        // This is where you will control your form after it is submitted, you have access to $_POST here.
    
    }
    
    // Use your hidden "action" field value when adding the actions
    add_action( \'admin_post_nopriv_my_simple_form\', \'my_handle_form_submit\' );
    add_action( \'admin_post_my_simple_form\', \'my_handle_form_submit\' );
    
    这里有一个链接,可以从codex获得更多信息-https://codex.wordpress.org/Plugin_API/Action_Reference/admin_post_(action)

    SO网友:Kirill

    有一种更简单的方法:)

    只需将所有代码作为“Form”+“PHP part”添加到任何主题中即可。php文件。任何人!然后在任意参数下创建“If else”复选框。因此,仅当该参数位于浏览器(当前页面)的主URL内时,表单才会显示。

    例如:您有如下URLexample.com/hello-world (任何帖子url)

    只需添加“single.php”,类似于:

    if ( $_GET[\'abcde\'] == \'abc\') {
      ... your code ...
    }
    
    现在只需在下一个URL下加载页面:example.com/hello-world?abcde=abc

    还可以按以下方式执行表单操作:

    <form action="">  // without any URL
    

    SO网友:firxworx

    有一种快速而肮脏的方法:如果这是一个很大程度上独立的WordPress和price calculator+emailer脚本,请注意,您可以将任意PHP文件放在站点文件/目录树的根目录(或实际上任何地方)中,除非您有相反的重写规则和/或服务器配置(注意:您可能没有),否则它可以单独访问。

    例如,如果您有test.php 脚本和您的WordPress站点可在线访问https://example.com, 然后你做了一个plop测试。php在您站点的根目录中(例如,您可以在其中看到以下文件wp-config.php 和文件夹,如wp-content/) 然后您和您网站的访问者可以访问test.php 从浏览器:https://example.com/test.php. WordPress或完全独立于WordPress提供的其他表单可以发布到test.php.

    对于初学者友好的WordPress设置联系人类型功能的方法,您可以使用许多联系人表单插件中的一个。一个流行的选项是联系方式7:https://en-ca.wordpress.org/plugins/contact-form-7/. 有几十种类似的选择。

    重力表单是一个很好的商业表单选项,可用于创建具有条件字段等的动态表单:https://www.gravityforms.com/

    听起来你的脚本可能在做两件事:一个是“价格计算器”,另一个是“给你的公司发电子邮件”。如果需要将计算器与主题集成,可以尝试将其直接实现到主题的模板文件中,或者将其创建为小部件:https://developer.wordpress.org/themes/functionality/widgets/. 如果您的主题定义了“小部件区域”,那么您的小部件可以从wp管理员轻松地放置在其中的任何位置。

    希望这有帮助!干杯

    结束