#前提
初めて、WordPressオリジナルテーマを作成しています。
ローカル環境で作成しています。(ソフト:Local by Flywheel を使用)
コンタクトフォームをプラグインを使わず導入したいです。
#コンタクトフォームで欲しい情報
- 氏名
- フリガナ
- 団体名/学校名
- メールアドレス
- 電話番号
- 件名
- お問い合わせ内容
#コンタクトフォームで欲しい機能
- セキュリティ対策(入力データを文字列に変換等)
- バリデーション機能(メールアドレスがなければエラー、お問い合わせ内容最低30文字以下ならエラー等)
- 入力画面、入力確認画面、送信画面の3つのページ。
- 送信後、「◯◯様、お問い合わせありがとうございました。」のようなメッセージ。
#教えていただきたいこと
- 送信先のアドレス(私宛に届くようにしたい)はどこで設定すればよいのか。WordPressの管理画面上の設定からですか?
- 自作する際に必要なファイル、コードなどの工程をリスト化して頂きたいです。HTMLでフォーム作成、CSSで装飾が必要なのはわかるのですが、PHPの記述はどこに書くのか、JSが必要か否かがわからないです。
- 必要なファイルは、contact.php(入力画面用ファイル)、confirm.php(入力画面確認用ファイル)、sendmail.php(送信後用のファイル)の3つですか?
- 参考にできるサイトがあれば教えて下さい。
- フォームにあると便利な機能があれば教えて下さい。
#プラグインを使いたくない理由
- 私自身のスキルアップの為。
- プラグインを極力入れないで、ページの表示速度を上げたい。
- contact form 7を導入したところ、slick.jsを用いて作成したスライドショーが動かなくなった。
以上の理由からプラグインは極力使用したくありません。
#試したこと
コチラを参考にしました
上記のサイトを参考に、
以下、3つファイルを作成しました。
contact.php
お問い合わせ入力画面です。
入力後、確認画面へ遷移します。
php
1<?php 2session_start(); 3/* Template Name: お問い合わせ */ 4?> 5<?php get_header(); ?> 6<main id="page_wrapper"> 7 <form action="<?php echo get_permalink( get_page_by_path( 'confirm' )->ID ); ?>" method="post"> 8 <input type="text" name="your_name" required> 9 <input type="email" name="your_mail" required> 10 <input type="text" name="your_subject"> 11 <textarea name="your_message" cols="100" lows="15" required></textarea> 12 13 <input type="submit" name="your_submit" value="確認画面へ"> 14 </form> 15</main> 16<?php get_footer(); ?> 17
confirm.php
入力内容確認画面です。
入力したデータを出力することができました。
しかし、送信ボタンを押すとcoplete.phpへ遷移するのですが、
Parse error: syntax error, unexpected end of file in /app/public/wp-content/themes/Lemon/complete.php on line 16
上記のエラーがでます。
header, footer がないのがエラー原因かと思いましたが、違いました。
php
1<?php 2session_start(); 3/* Template Name: お問い合わせ内容確認 */ 4 5if(isset($_POST['your_submit'])) { 6 $_SESSION['your_name'] = $_POST['your_name']; 7 $_SESSION['your_mail'] = $_POST['your_mail']; 8 if($_POST['your_subject'] != ""){ 9 $_SESSION['your_subject'] = $_POST['your_subject']; 10 }else{ 11 $_SESSION['your_subject'] = "件名なし"; 12 } 13 $_SESSION['your_message'] = $_POST['your_message']; 14 $_SESSION['your_submit'] = $_POST['your_submit']; 15} 16?> 17<?php get_header(); ?> 18<main id="page_wrapper"> 19<table rules="all" border="border"> 20 <tr> 21 <th>お名前</th><td><p><?php echo htmlspecialchars($_SESSION['your_name']); ?></p></td> 22 </tr> 23 <tr> 24 <th>メールアドレス</th><td><p><?php echo htmlspecialchars($_SESSION['your_mail']); ?></p></td> 25 </tr> 26 <tr> 27 <th>件名</th><td><p><?php echo htmlspecialchars($_SESSION['your_subject']); ?></p></td> 28 </tr> 29 <tr> 30 <th>お問い合わせ内容</th><td><p><?php 31 $message = htmlspecialchars($_SESSION['your_message']); 32 $message = str_replace(" ", " ", $message); 33 $message = str_replace(" ", " ", $message); 34 echo nl2br($message); 35 ?></p></td> 36 </tr> 37</table> 38 39<center><span> 40 <button class="submit" type="button" onclick="location.href='<?php echo get_permalink( get_page_by_path( 'contact' )->ID ); ?>'">修正</button> 41 <button class="submit" type="button" onclick="location.href='<?php echo get_permalink( get_page_by_path( 'complete' )->ID ); ?>'">送信</button> 42</span></center> 43</main> 44<?php get_footer(); ?> 45
complete.php
ここでエラーがでます。
php
1 2<?php 3session_start(); 4/* Template Name: 送信画面 */ 5 6if(isset($_SESSION['your_submit'])) { 7 $to = ''; //【メールアドレス】 8 9 //ここでは 名前, 件名 10 $subject = $_SESSION['your_name'].', '.$_SESSION['your_subject']; //【タイトル】 11 $message = $_SESSION['your_message']; //【本文】 12 13 wp_mail($to, $subject, $message); 14 session_destroy(); 15?> 16
回答1件
あなたの回答
tips
プレビュー