2017-09-25 58 views
0

我正在创建一个专门的WordPress插件,除了这个问题的其余部分外,我们将其称为wordpress插件文件夹作为插件文件夹。在插件文件夹中,我有多个文件,一个名为form_submit.php的文件和一个名为form_template.php的文件。 form_template.php被注册为页面模板,可以通过WordPress仪表板应用于任何帖子或页面。这个问题是因为form_submit.php文件位于插件文件夹内部,我如何映射我的表单动作以将数据发布到文件中?只需将其列为表单动作WordPress插件

<form action="form_submit.php" method="post" > 
因为我需要,因为它会寻找在该网站不是插件文件夹的根目录下的form_submit.php并试图绘制出URL方案用于其在

都不行插件文件夹如

<form action="wp-content/plugins/plug-folder/form_submit.php" method="post" > 

也不管用,是否存在我没​​有想到的方法?

编辑:切换到使用plugins_url()后,建议它在我使用表单的两个实例之一中工作。我的注册表格(下面附上)不起作用,返回错误加载页面。

<form action="<?php echo plugins_url('register_submit.php', __FILE__); ?>" method="post" autocomplete="off"> 

          <?php if($_GET['error'] == 'username'){ ?> 
           <div class="error_message"> 
            Uh oh! That username is already taken. 
           </div> 
          <?php }else if($_GET['error'] == 'email'){ ?> 
           <div class="error_message"> 
            Uh oh! That email is already in use. 
           </div> 
          <?php }else if($_GET['error'] == 'email_invalid'){ ?> 
           <div class="error_message"> 
            Uh oh! Make sure to enter a valid email. 
           </div> 
          <?php }else if($_GET['error'] == 'signup_blank'){ ?> 
           <div class="error_message"> 
            Uh oh! Make sure to fill in all the fields. 
           </div> 
          <?php } ?> 


          <input type="text" name="first_name" class="signup_input" id="first_name_input" placeholder="First Name" value="<?= $_GET['first_name']; ?>" required> 

          <input type="text" name="last_name" class="signup_input" id="last_name_input" placeholder="Last Name" value="<?= $_GET['last_name']; ?>" required> 

          <input type="text" name="email" class="signup_input" placeholder="Email" value="<?= $_GET['email']; ?>" required> 

          <input type="password" name="password" class="signup_input" placeholder="Password" required> 

          <input type="radio" name="gender" value="Female" required> <font color="#FFF">Female</font> &nbsp; 
          <input type="radio" name="gender" value="Male" required> <font color="#FFF">Male </font> 

          <input type="submit" name="submit" class="btn btn-default" value="Sign Up" style="margin-left: 15px;"> 

</form> 

但我的登录表单工作。

    <form action="<?php echo plugins_url('login_submit.php', __FILE__); ?>" method="post" autocomplete="off"> 

         <div class="list-block"> 
         <ul> 
           <span class="ti-user"></span> 
           <div class="item-input"> 
            <input type="text" name="email" placeholder="E-Mail"> 
           </div> 
          <div class="item-content margin-top-15"> 
           <span class="ti-lock"></span> 
           <div class="item-input"> 
            <input type="password" name="password" placeholder="Password"> 
           </div> 
         </ul> 
         </div> 
         <div class="log-in-btn margin-top-15 margin-bottom-30" > 
         <input type="submit" name="submit" class="btn btn-default"> 
         </div> 
         </form> 

我很困惑,这会导致这种差别。

+0

在wp管理员设置页面应该有一个复选框,表示任何人都可以注册。核实。如果它不能解决你的问题,打开调试模式,通过转到wp config并将调试更改为true – shazyriver

+0

@shazyriver这是我自己的外部数据库而不是WordPress数据库,不与WordPress数据库进行交互而不是在WordPress上基于网站。 –

+0

无论如何,你将不得不妥善调试它。如果它正在登录,它也将用于注册。 – shazyriver

回答

2

使用plugins_url()

<form action="<?php echo plugins_url('form_submit.php', __FILE__); ?>" method="post" > 

法典参考https://codex.wordpress.org/Function_Reference/plugins_url

编辑:请检查wordpress设置。我认为你没有启用注册。

希望它有帮助。

+0

我曾尝试过这一点,它的成功有限,会不会在本地环境中正常工作?我只是将其插入其中的一个,它可以工作,但仍然不适用于WP以外的完美工作。 –

+0

它可以用于本地主机和服务器。你能否解释这个问题,在这种情况下,它不起作用 – shazyriver

+0

发布了更多细节。 –