これは私がここに投稿した別の質問に関連していますが、それは別の問題であるため、人々が私が二重投稿していると思わないことを願っています.
Wordpress にこんなメールフォームがあります。
html
<form action="" id="contactForm">
<input type="text" id="contactName" placeholder="Name:">
<input type="text" id="contactEmail" placeholder="Email:">
<select id="form-subject">
<option>Subject</option>
<option>Accounts</option>
<option>Bookkeeping</option>
<option>Start Up</option>
<option>CIS Returns</option>
<option>Payroll</option>
<option>Self Assessment</option>
<option>Tax Returns</option>
<option>VAT Returns</option>
<option>Other</option>
</select>
<textarea id="contactMessage" rows="8" cols="40" placeholder="Message:"></textarea>
<p id="submit">Submit</p>
<div id="status">
<p></p>
</div>
</form>
jquery
$j('#submit').click(function(){
//
var nameVal = $j('#contactForm #contactName').val();
var emailVal = $j('#contactForm #contactEmail').val();
var messageVal = $j('#contactForm #contactMessage').val();
//
$j.post('wp-content/code/contactEngine.php', { theName:nameVal, theEmail:emailVal, theMessage:messageVal }, function(data){
$j("#status p").html(data);
$j("#status p").show().fadeOut(3500);
if(data.indexOf('Thank You')==0) {document.forms[0].reset();}
});
})
php
<?php
$errors = array();
$required_fields = array('theName','theEmail','theMessage');
foreach($required_fields as $fieldname){
if(!isset($_POST[$fieldname]) || empty($_POST[$fieldname])){
$errors[] = $fieldname;
}
}
if(empty($errors)){
$name_field = Trim(stripslashes($_POST['theName']));
$name = explode(' ', $name_field);
$firstname = ucfirst($name[0]);
$email_field = Trim(stripslashes($_POST['theEmail']));
$message = Trim(stripslashes($_POST['theMessage']));
//
$to = "info@ttmt.org.uk";
$subject = "Email from Website";
$body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message";
//
mail($to, $subject, $body);
//wp_mail($to, $subject, $body);
echo "Thank You $firstname";
}else{
echo "Please complete all fields.";
}
?>
php は wp-content フォルダー内のフォルダーにあるため、jquery から簡単にアクセスできます。
$j.post('wp-content/code/contactEngine.php', { theName:nameVal, theEmail:emailVal, theMessage:messageVal }, function(data){
変数は php に到達し、フォームが完成しているかどうかに応じて返信を返します。
実際のメールは送信されません - PHP の mail() 関数は Worpdress で動作しますか。
wp_mail() 関数を試しましたが、これによりスクリプトが完全に停止し、エコーが得られません。
Contact Form 7 のようなメール プラグインがあることは知っていますが、このサイトでは動作しないと思います。
これは、カスタム投稿タイプの単一ページ サイトです。Contact Form 7 で行う必要があると思われるコンテンツを呼び出していません。