質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1340閲覧

自作お問い合わせフォームをWordpress化した際にactionタグがうまく作動しない

tenten0114

総合スコア2

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/05/21 08:49

自作したお問い合わせフォームをWordpress化した際に送信時にactionのリンクがうまく作動していないのか、ホームに戻ってしまいます。the_permalink();なども試してみましたが、上手くいきませんでした。Wordpress化する際にやらなければいけないことなどや間違っている箇所があったらお教えいただきたいです。

PHP

1<?php 2 if(isset($_POST['submit'])) { 3 4 //項目チェック 5 if(isset($_POST['checking'])) { 6 $capchaError = true; 7 } else { 8 9 //名前の入力なし 10 if(trim($_POST['name'] === "")) { 11 $nameError = '※名前が入力されていません'; 12 $hasError = true; 13 } else { 14 $name = trim($_POST['name']); 15 } 16 17 //メールアドレスの間違い 18 if(trim($_POST['email']) === "") { 19 $emailError = '※メールアドレスが入力されていません'; 20 $hasError = true; 21 } elseif (!preg_match('|^[0-9a-z_./?-]+@([0-9a-z-]+.)+[0-9a-z-]+$|',trim($_POST['email']))) { 22 $emailError = '※メールアドレスが正しくありません'; 23 $hasError = true; 24 } else { 25 $email = trim($_POST['email']); 26 } 27 28 //電話番号の入力なし 29 if(trim($_POST['tel']) === "") { 30 $telError = '※電話番号が入力されていません'; 31 $hasError = true; 32 } else { 33 $tel = trim($_POST['tel']); 34 } 35 36 //種類選択のなし 37 if(trim($_POST['summary']) === "") { 38 $summaryError = '※種類が選択されていません'; 39 $hasError = true; 40 } else { 41 $summary = trim($_POST['summary']); 42 } 43 44 //お問い合わせ内容の入力なし 45 if(trim($_POST['comment']) === "") { 46 $commentError = '※お問い合わせ内容が入力されていません'; 47 $hasError = true; 48 } else { 49 $comment = trim($_POST['comment']); 50 } 51 52 //プライバシー同意なし 53 if(!isset($_POST['check'])) { 54 $checkError = '※プライバシーに同意してください'; 55 $hasError = true; 56 } else { 57 $check = isset($_POST['check']); 58 } 59 } 60 61 //エラーなしの場合、メール送信 62 if(!isset($hasError)) { 63 mb_language("japanese"); 64 mb_internal_encoding("UTF-8"); 65 $emailTo = "example@gmail.com"; 66 $subject = 'お問い合わせ'; 67 $body = " 68 下記の通りお問い合わせを受け付けました。 \r\n 69 \r\n 70 -------------------------------------------------\r\n 71 お名前: $name \r\n 72 メールアドレス: $email \r\n 73 お問い合わせ内容: $comment \r\n 74 ------------------------------------------------- 75 "; 76 $title = "$summary"; 77 $from = mb_encode_mimeheader("$title"."のお問い合わせ","UTF-8"); 78 $headers = 'From: '.$from.' <'.$email.'>'; 79 (mb_send_mail($emailTo, $subject, $body, $headers)); 80 81 //自動返信用 82 $subject = 'お問い合わせ受付のお知らせ'; 83 $from = mb_encode_mimeheader("$title","UTF-8"); 84 $headers2 = 'From: '.$from.' <'.$emailTo.'>'; 85 $body = " 86 $name 様 \r\n 87 $title にお問い合わせありがとうございます。\r\n 88 改めて担当者よりご連絡をさせていただきますので、\r\n 89 今しばらくお待ちください。\r\n 90 \r\n 91 -------------------------------------------------\r\n 92 お名前:$name \r\n 93 メールアドレス:$email \r\n 94 お問い合わせ内容:$comment \r\n 95 ------------------------------------------------- 96 "; 97 mb_send_mail($email, $subject, $body, $headers2); 98 $emailSent = true; 99 } 100 } 101 ?> 102 103<main> 104 <h2 class="contact_title">CONTACT</h2> 105 <section> 106 107 <?php if(isset($emailSent) && $emailSent == true) { ?> 108 <h2 class="heading"><?=$name;?>様、<br>お問い合わせありがとうございます。</h2> 109 <section class="content"> 110 <p>この度はお問い合わせいただきありがとうございます。<br> 111 メールを確認次第、担当者よりご連絡をさせていただきます。<p> 112 <a href="絶対パス">戻る</a> 113 </section> 114 115<?php } else { ?> 116 117 <form action="<?php echo get_permalink( get_page_by_title("contact") ); ?>" method="POST"> 118 <div class="form"> 119 <div class="form_item"> 120 <p class="form_item_label">会社名</p> 121 <input type="text" class="form_item_input" name="company_name" placeholder="例) 会社名" value="<?php if(isset($_POST['company_name'])) echo h($_POST['company_name']); ?>"> 122 </div> 123 <div class="form_item"> 124 <p class="form_item_label"> 125 <span class="form_item_label_required">必須</span>氏名 126 </p> 127 <div class="right"> 128 <input type="text" class="form_item_input" name="name" placeholder="例) 山田太郎" value="<?php if($_POST['name']) echo h($_POST['name']); ?>"><br> 129 <?php if(isset($nameError)) {?><span class="error"><?=$nameError;?></span><?php } ?> 130 </div> 131 </div> 132 <div class="form_item"> 133 <p class="form_item_label"> 134 <span class="form_item_label_required">必須</span>メールアドレス 135 </p> 136 <div class="right"> 137 <input type="email" class="form_item_input" name="email" placeholder="例) example@mail.com" value="<?php if($_POST['email']) echo h($_POST['email']); ?>"><br> 138 <?php if(isset($emailError)) {?><span class="error"><?=$emailError;?></span><?php } ?> 139 </div> 140 </div> 141 <div class="form_item"> 142 <p class="form_item_label"> 143 <span class="form_item_label_required">必須</span>電話番号 144 </p> 145 <div class="right"> 146 <input type="text" class="form_item_input" name="tel" placeholder="例) 000-0000-0000" value="<?php if($_POST['tel']) echo h($_POST['tel']); ?>"><br> 147 <?php if(isset($telError)) {?><span class="error"><?=$telError;?></span><?php } ?> 148 </div> 149 </div> 150 <div class="form_item"> 151 <p class="form_item_label"> 152 <span class="form_item_label_required">必須</span>種類 153 </p> 154 <div class="right"> 155 <select class="form_item_input" name="summary" value="<?php if($_POST['summary']) echo h($_POST['summary']); ?>"> 156 <option value hidden>選択して下さい</option> 157 <option value="1">その1</option> 158 <option value="2">その2</option> 159 </select><br> 160 <?php if(isset($summaryError)) {?><span class="error"><?=$summaryError;?></span><?php } ?> 161 </div> 162 </div> 163 <div class="form_item"> 164 <p class="form_item_label"> 165 <span class="form_item_label_required">必須</span>内容 166 </p> 167 <div class="right"> 168 <textarea type="textarea" class="form_item_textarea" name="comment" placeholder="詳細やお見積もりの内容をお書き下さい。" value="<?php if($_POST['comment']) echo h($_POST['comment']); ?>"></textarea><br> 169 <?php if(isset($commentError)) {?><span class="error"><?=$commentError;?></span><?php } ?> 170 </div> 171 </div> 172 <div class="form_item"> 173 <div class="right"> 174 <input type="checkbox" name="check" class="form_privacy" value="<?php if($_POST['check']) echo h($_POST['check']); ?>">プライバシーに同意します。</input><br> 175 <?php if(isset($checkError)) {?><span class="error"><?=$checkError;?></span><?php } ?> 176 </div> 177 <input type="submit" class="form_btn" name="submit" value="送信する"> 178 </div> 179 </div> 180 </form> 181 182 <?php } ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/05/21 09:59

ブラウザに表示されたHTMLではaction属性の設定値はどうなってますか?
CHERRY

2021/05/21 12:27

このファイルは、どのようなファイル名で、どこに保存されたのでしょうか?
guest

回答1

0

ベストアンサー

https://developer.wordpress.org/reference/functions/get_page_by_title/

Return #Return
(WP_Post|array|null) WP_Post (or array) on success, or null on failure.

って書いてある。
だから
get_page_by_title("contact")->ID
こんな風にしないとget_permalink()が動かない。

投稿2021/05/26 13:55

編集2021/05/26 13:55
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tenten0114

2021/07/17 18:34

ご指摘通りコードを変えたら動きました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問