表单操作 WordPress 插件

Form action WordPress Plugin

我正在创建一个专门的 WordPress 插件,它不适用于这个单一案例之外的问题,我们将把 wordpress 插件文件夹称为插件文件夹。在插件文件夹中,我有多个文件,一个名为 form_submit.php 的文件和一个名为 form_template.php 的文件。 form_template.php 注册为页面模板,可通过 WordPress 仪表板应用于任何 post 或页面。问题是因为 form_submit.php 文件在插件文件夹中如何将我的表单操作映射到 post 数据到文件?只需将其列为

<form action="form_submit.php" method="post" >

将无法按我的需要工作,因为它将在站点的根目录而不是插件文件夹中寻找 form_submit.php,并试图在插件文件夹如

<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>

我对导致这种情况的不同之处感到困惑。

使用plugins_url()

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

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

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

希望对您有所帮助。