Wordpress自定义表单操作

时间:2013-10-15 21:49:51

标签: php wordpress forms action

我在网络和论坛上搜索了两天,以找到解决方案 对于我的问题(这个网站也是如此)。这里的一些问题相似,但没有帮助 我。好了,我会非常感谢有人能够劝我。

我在自定义wordpress主题中制作了留言簿。这本留言簿按照我想要的方式出现。 一切都在phpMyAdmin中设置并且有效。我遇到的唯一问题是表单action =“”不起作用。 当我把它留空并填写留言簿表格时,它只显示一个空白内容。

我可以在这些引号之间填写什么动作=“” 网站和论坛上的答案说它是空的,但它没有给我我想要的结果。 当我填写留言簿表格时,它应该在有人提交时显示该消息。

这是我的代码,也许我做错了什么?

    <?php 

    mysql_connect("blablabla", "blablabla", "blablabla");
    mysql_select_db("blablabla");

    /***************************************************************************************************************/
    //  Form and add stuff area

    echo "<strong>Laat anderen uw mening weten over Bed & Breakfast Nerja</strong>";

    if ($_POST['bericht_btn']) {
            $naam = strip_tags($_POST['naam']);
            $email = strip_tags($_POST['email']);
            $bericht = strip_tags($_POST['bericht']);

            if ($naam && $email && $bericht) {

                    $tijd = datum("h:i A");
                $datum = datum("F d, Y");
                $ip = $_SERVER['REMOTE_ADDR'];

                // Voeg toe aan database
                mysql_query("INSERT INTO gastenboek VALUES (
                        '', '$naam', '$email', 'bericht', 'tijd', 'datum', 'ip'
                )");

                echo "Bedankt. Uw bericht is succesvol toegevoegd aan ons gastenboek.";
            }
            else
                echo "Niet alle velden waren ingevuld.";
            }

            echo "<form action='' method='post' id='form_guestbook'>
                <table><br />
                        <tr>
                            <td>Naam:</td>
                            <td><input type='text' name='naam' style='width: 200px;' /></td>
                        </tr>
                        <tr>
                            <td>Email:</td>
                            <td><input type='text' name='email' style='width: 200px;' /></td>
                        </tr>
                        <tr>
                            <td>Bericht:</td>
                            <td><textarea name='bericht' style='width: 450px; height: 100px; margin-bottom: 20px;'></textarea></td>
                        </tr>
                        <tr>
                            <td></td>
                            <td><input type='submit' name='bericht_btn' value='Plaats bericht' /></td>
                        </tr>
                </table>
            </form>
            <br />";

    /***************************************************************************************************************/
    //  Display stuff area

    //echo "Alle gedeelde meningen";
        echo "<div style='color: red; font-size: 20px;'>Het gastenboek werkt nog niet compleet. Hier wordt aan gewerkt.</div>";                       
    $query = mysql_query("SELECT * FROM gastenboek ORDER BY id DESC");
    $numrows = mysql_num_rows($query);

    echo "<hr />";

    if($numrows > 0){
            while ( $row = mysql_fetch_assoc($query) ) {
                    $id = $row['id'];
                $naam = $row['naam'];
                $email = $row['email'];
                $bericht = $row['bericht'];
                $tijd = $row['tijd'];
                $datum = $row['datum'];
                $ip = $row['ip'];

                $bericht = nl2br($bericht);

                echo "<div>
                        Bericht van <strong>$naam</strong> op <strong>$datum</strong> om <strong>$tijd</strong> <br />
                        $bericht
                        </div><hr />";
                }
            }
            else
                    echo "Er zijn geen berichten gevonden.";

    /***************************************************************************************************************/

    mysql_close();

&GT;

此代码位于gastenboek.php(在荷兰语中表示guestbook.php),它包含在我的page.php中 并且仅针对特定页面(留言板页面)显示。

    <?php
      if ( is_page('gastenboek') ) {
    include 'gastenboek.php';
  }
    ?>

结束页面网址如下mywebsite.nl/wordpress/gastenboek(seo friendly url)

谢谢如果有人可以帮助/帮助我,我认为问题不是那么大,但由于我对与wordpress兼容的自定义表单缺乏知识,我似乎无法找到解决方案。


好的,我正在接近解决问题。 我已经在我的服务器上使用guestbook.php文件尝试了没有wordpress的留言簿。 在这里我可以使用

    <form action="../guestbook.php"

猜猜是什么,它有效xD! 所以问题是以下事情之一,或者可能是两者之一:

  • 我应该将我的代码放在wordpress .php文件中? (目前在page.php文件中,我有一个if语句来包含guestbook.php 仅适用于特定页面)

    if ( is_page('name of a page') ) {
                                  include 'guestbook.php';
                            }
    
  • 我必须在action =“”的引号之间键入什么内容? (我尝试了许多不同的东西,guestbook.php的路径,保持空白,使用永久链接代码,到目前为止我都没有工作)

2 个答案:

答案 0 :(得分:0)

变化:

if ($_POST['bericht_btn']) {

为:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

点击提交不会发布提交的名称属性。

或者,您可以使用隐藏的输入。为此,您可以将其放在表单中:

<input type="hidden" name="submitted" />

然后在表单处理程序中使用此检查:

if (isset($_POST['submitted']))) {

对于表单的action属性,应该将其设置为处理它的脚本的url。看起来显示表单的脚本与处理表单的脚本相同,因此如果将此脚本称为“foo.php”,则将action属性设置为“/foo.php”。

答案 1 :(得分:0)

问题解决了!!!

我必须做以下事情: 将ID添加到表单并更改输入字段的名称,因为它与wordpress冲突。

之前我更改了输入类型的名称,但它没有用。 我只是忘了为这段代码更改它:

    $name = strip_tags($_POST['formname']);
                            $email = strip_tags($_POST['formemail']);
                            $message = strip_tags($_POST['formmessage']);

无论如何,谢谢你的回复Neil Girardi