В WordPress есть много способов выполнить то, что вы пытаетесь сделать.
В настоящее время ваше действие формы указывает на contact_form_script.php
, что предполагает, что этот скрипт находится в текущем каталоге. Но этот текущий каталог не относится к вашему contact_form.php
. Это относительно текущего пути пользователя. например, www.mysite.com/contact/.
Одним из быстрых (но ленивых) способов решения вашей проблемы было бы переместить contact_form_script.php
в корневую директорию WordPress вашего сайта. Затем измените form action="/contact_form_script.php"
(обратите внимание на /
), вызывая его публикацию в файле с именем contact_form_script.php
в корневом каталоге сайта.
Лучшим способом было бы сохранить contact_form_script.php
в каталоге шаблонов и включить его в файл functions.php.
Если мы используем вход email_form
submit, чтобы сообщить WordPress, что скрипт contact_form_script.php
должен быть загружен, это должно позволить вам загрузить все ядро wordpress и при этом ваш собственный скрипт обработки форм обрабатывает данные:
functions.php:
if (!empty($_POST['email_form'])) {
require_once(__DIR__.'/contact_form_script.php');
// You could put a die() here if you wanted the script to stop executing.
}
contact_form.php:
include( 'header.php');
if(have_posts()): while (have_posts()): the_post();
<div class="wrapper">
<div class="message">
<div class="text">
<?php the_content(); ?>
<form action="" method="post"> <!-- Notice we are now submitting our data to wordpress and not directly to our form script -->
<p>Your email address:</p> <input type="text" name="emailAddress">
<p>Subject:</p> <input type="text" name="subject">
<p>Message:</p> <textarea name="message"></textarea>
<input type="text" name="honeyPot" style="display: none;">
<br />
<input type="submit" name="email_form" value="SUBMIT"/>
</form>
<br />
<br />
</div>
</div>
</div>
Опять же, это не идеально, но я подозреваю, что это то, что вы ищете в данный момент времени, и это шаг в правильном направлении. Хранение кода в шаблоне.