[英]Why is this custom form in WordPress not directing to the specified action?
[英]Wordpress custom form action
我在整個網絡和論壇上搜索了兩天,以找到我的問題的解決方案(這個網站也是如此)。 這里的一些問題是相似的,但根本沒有幫助我。 好的進入正題,如果有人可以幫助我,我將非常感激。
我在我的自定義 wordpress 主題中制作了一個留言簿。 這本留言簿以我想要的方式出現。 一切都在 phpMyAdmin 中設置並有效。 我遇到的唯一問題是表單 action="" 不起作用。 當我將其留空並填寫留言簿表格時,它只顯示空白內容。
我可以在這些引號之間填寫什么 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();
?>
這段代碼位於gastenboek.php(荷蘭語中的guestbook.php)中,它包含在我的page.php 中,並且僅在特定頁面(留言簿頁面)中顯示。
<?php
if ( is_page('gastenboek') ) {
include 'gastenboek.php';
}
?>
最終頁面 url 如下所示 mywebsite.nl/wordpress/gastenboek(seo 友好 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 的路徑,保持它為空,使用永久鏈接代碼,但到目前為止沒有一個對我有用)
改變:
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”。
問題解決!!!
我必須做以下事情:向表單添加 ID 並更改輸入字段的名稱,因為它與 wordpress 沖突。
我之前更改了輸入類型的名稱,但它沒有用。 我只是忘記為此代碼更改它:
$name = strip_tags($_POST['formname']);
$email = strip_tags($_POST['formemail']);
$message = strip_tags($_POST['formmessage']);
無論如何,感謝您的回復 Neil Girardi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.