自定义PHP页面表单数据未显示为wp主题页面模板

时间:2020-02-12 作者:Sheikh Sajib

我用PHP制作了一个年龄计算器。它在localhost/age/age-calculator.php

我已将此文件作为wp主题页模板移动theme/mytheme/page-template/age-calculator.php

<?php get_header();
/*
Template Name: Age Calculator
*/
创建页面并与此页面模板链接。

输入表单工作正常,但在提交数据时。WordPress不会显示任何结果,也不会将我带到主页上。

但在localhost中,我在同一页上获得输入结果

如何在wp页面模板上显示结果?

谢谢

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method=\'post\'>
<div class="container bg-light p-2 wow bounceInUp">

    <div class="row">

        <div class="col-sm-6 mb-4">
    <p> Your Name * </p>
    <input type="text" name=\'person_1\' placeholder="Name" <?php echo "$required $all_required";?> />
    <p class="text-danger"> <?php echo " $nameErr ";?> </p>
    <br/>

    <p> Date of Birth * </p>
    <input type="date" name=\'birth_date\' <?php echo "$required $all_required";?> /> 
    <p class="text-danger"> <?php echo " $dateErr ";?> </p>
    <br/>

    <input  class="btn-success" type="submit" value=\'Calculate Yours Age\' name=\'submit_1\' /> <br/>

        </div>

        <div class="col-sm-6">
    <p> Your Friend\'s Name * </p>
    <input type="text" name=\'person_2\' placeholder= "Friend\'s Name " <?php echo "$all_required";?> />
    <p class="text-danger"> <?php echo " $nameErr2 ";?> </p>
    <br />

    <p> Your Friend\'s Date of birth * </p>
    <input type="date" name=\'birth_date_2\' <?php echo "$all_required";?> />
    <p class="text-danger">  <?php echo " $dateErr2 ";?> </p>
    <br /><br />

        </div>
    </div>
    <div class="row">
        <input class=\'m-auto btn btn-success p-2\' type="submit" value=\'Compare Age\' name=\'submit_all\' /> 
    </div>
</div>
</form>

1 个回复
SO网友:jdm2112

我通常采用的方法是检查提交输入是否存在,并根据该条件构建页面。

例如,如果提交/发送按钮的构造与此类似:

<input class="cta" type="submit" name="submit_all" value="Send message">
那么您的状况检查如下所示:

if ( isset( $_POST[\'submit_all\'] ) ) {
    // Do the stuff with $_POST array
} else {
    // No submission yet, show the form
}
$\\u POST数组中的键将与输入的name属性匹配。

Elaine的评论很好,因为action属性决定了提交数据的发布位置。在WordPress中,使用永久链接是一个很好的选择。

<form id="####" class="####" method="post" action="<?php echo esc_url( the_permalink() ); ?>">
编辑:根据您添加到问题中的代码,我建议更新表单元素上的action属性。此外,我还更新了条件示例,以使用submit\\u all值。