【发布时间】:2017-09-25 13:10:50
【问题描述】:
我正在创建一个专门的 WordPress 插件,它不适用于这个单一案例之外的问题,我们将把 wordpress 插件文件夹称为插件文件夹。在插件文件夹中,我有多个文件,一个名为 form_submit.php 的文件和一个名为 form_template.php 的文件。 form_template.php 注册为页面模板,可以通过 WordPress 仪表板应用于任何帖子或页面。问题是因为 form_submit.php 文件位于插件文件夹中,如何映射表单操作以将数据发布到文件?只需将其列为
<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>
<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>
我很困惑导致这种情况的区别是什么。
【问题讨论】:
-
wp 管理设置页面中应该有一个复选框,说明任何人都可以注册。核实。如果它不能解决您的问题,请转到 wp config 并将 debug 更改为 true 以打开调试模式
-
@shazyriver 这是我自己的外部数据库而不是 WordPress 数据库,除了在基于 WordPress 的站点上之外,不与 WordPress 数据库交互。
-
无论如何你必须正确调试它。如果它正在登录,它也将用于注册。
-
@shazyriver 任何你能想到的理由,当它们都在 WordPress 之外工作时,它会与一个但不能与另一个一起工作?
-
可能是一个简单的逻辑或语法错误。由于您没有使用 wordpress 数据库,因此它不应该与 wordpress 专门相关。
标签: php html wordpress multisite