Ссылка на пользовательский файл .php в пользовательской теме Wordpress - PullRequest
0 голосов
/ 10 декабря 2011

Я работаю над темой Wordpress, в которой есть анимированная контактная форма Jquery. У меня работает js (div, который отображается / скрывается при нажатии, с формой в нем). Вот статический HTML / PHP пример (нажмите кнопку «контакт»). В чем проблема, которую вы говорите? Проблема в том, что фактическая форма не отправляется. У меня есть php-файл contact engine.php, который отправляет форму в папку с именем php в моей директории шаблонов. В HTML у меня есть:

<form method="post" action="<?php bloginfo('template_directory'); ?>/php/contactengine.php">
            <label for="Name">Name:</label>
            <input type="text" name="Name" id="Name" />
            <label for="Email">Email:</label>
            <input type="text" name="Email" id="Email" />
            <label id="bericht" for="Message">Message:</label><br />
            <textarea name="Message" rows="10" cols="20" id="Message"></textarea>
            <input type="submit" name="submit" value="Submit" class="submit-button" />
</form>

После небольшого беспокойства я сузил проблему до фактической ссылки на файл php. Wordpress не отправляет входные данные в php-файл, и ничего не делается. После нескольких сессий Google я обнаружил, что большинство людей используют для этого плагин, который я не фанат. Также кажется, что Wordpress не позволяет вам писать свои собственные php-фрагменты для реализации в теме. Я также нашел кое-что, что предполагает, что я должен поместить фрагмент php в файл functions.php, который поставляется с каждым шаблоном, но я не знаю, как сделать ссылку на определенный фрагмент php внутри functions.php. Кто-нибудь знает, как это решить? Заранее спасибо!

P.S. PHP-скрипт выглядит так:

<?php

$EmailFrom = "contactformulier@stefanhagen.nl";
$EmailTo = "info@stefanhagen.nl";
$Subject = "Contactformulier StefanHagen.nl";
$Name = Trim(stripslashes($_POST['Name'])); 
$Tel = Trim(stripslashes($_POST['Tel'])); 
$Email = Trim(stripslashes($_POST['Email'])); 
$Message = Trim(stripslashes($_POST['Message'])); 

// validation
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
exit;
}

// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
// $Body .= "Tel: ";
// $Body .= $Tel;
// $Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page 
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=../index.html\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>

1 Ответ

1 голос
/ 11 декабря 2011

Я знаю, что когда вы отправляете форму в WordPress, ваш код не будет работать, так как WordPress фильтрует все переменные записи. Когда вы используете свой собственный скрипт, этого не должно произойти. Так как же выглядит ваш скрипт contactengine.php? Используете ли вы включить в WordPress в нем? Если это так, вы обрабатываете скрипт WordPress.

То, что я вижу на вашем сайте, это то, что <? php bloginfo ('template_directory'); ?> не появляется Также лучше использовать <? php echo get_template_directory_uri (); ?>

В случае плагинов, которые используют люди, я тоже так делаю. Легко изменить форму в бэкэнде, но это может быть отрицательным моментом, поскольку клиент может изменить ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...