我已经为wordpress创建了一个联系表单。 我工作良好的形式。我遇到的问题是,我的联系表格是隐藏的div。 单击邮件图标时会滑动。
所以当我发送联系表单时,它会将我重定向到感谢页面,我还没弄清楚如何禁用此功能并在同一页面上显示感谢信息。
有什么想法吗?我一直在阅读其他问题,但似乎无法帮助我。 一些代码。
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php if($email){ ?>
<p><strong>Message succesfully sent. I'll reply as soon as I can</strong></p>
<?php } else { if($error) { ?>
<p><strong>Your messange hasn't been sent</strong><p>
<?php echo $error; ?>
<?php } else { the_content(); } ?>
<section class="loginform">
<div class="contactform">
<form action="<?php the_permalink(); ?>" id="contact_me" method="post">
<input type="hidden" name="sent" id="sent" value="1" />
<ul>
<li>
<input type="text" name="your_name" id="your_name" value="<?php echo $_POST[your_name];?>" placeholder="Name" required>
</li>
<li>
<input type="text" name="your_email" id="your_email" value="<?php echo $_POST[your_email];?>" placeholder="Email" required>
</li>
<li>
<input type="text" name="your_subject" id="your_subject" value="<?php echo $_POST[your_subject];?>" placeholder="Subject" required>
</li>
<li>
<textarea name="your_message" id="your_message"><?php echo stripslashes($_POST[your_message]); ?></textarea>
</li>
<li>
<input type="submit" name = "send" value = "Send email" />
</li>
</ul>
</div>
</form>
</section>
<?php } ?>
<?php endwhile; ?>
答案 0 :(得分:1)
你最好用ajax解决这个问题;你为此建立了一个插件吗?
你应该:)
在你的插件文件中,注册一个新的ajax钩子:
// add ajax request
add_action( 'wp_ajax_send_form', 'sendForm' );
// add this so non-admins can use it
add_action( 'wp_ajax_nopriv_send_form', 'sendForm' );
其次,构建函数sendForm():
<?php
function sendForm() {
//validation logic here, get data from $_POST
// send mail logic here
if($email){
echo '<p><strong>Message succesfully sent. I will reply as soon as I can</strong></p>';
} else { if($error) {
echo '<p><strong>Your messange has not been sent</strong><p>'.$error;
} else { the_content();
// adding die(); is necessary with wp ajax
die();
}
在您的前端文件中,删除所有表单内容或让input-field在单击时返回false。
我假设您在no.Conflict()模式下使用jQuery。
在您希望显示响应的位置添加<div id="answer"></div>
。
<script>
jQuery('#contact_me input').click( function() {
// get form data here
var message = jQuery('#your_message').val();
// ...and so on
jQuery.post(ajaxurl, {
action: "send_form",
message: message,
//...and so on
}, function (response) {
jQuery('#answer').html(response);
});
});
</script>
这将通过ajax调用php-function sendForm(),执行它并在ID为#response的div中显示echo'ed消息。是你需要的吗?
要求进一步解释。
此致 西蒙