如何将联系表重定向到感谢页面
Posted
技术标签:
【中文标题】如何将联系表重定向到感谢页面【英文标题】:How to redirect contact form to thank you page 【发布时间】:2012-11-11 02:17:51 【问题描述】:我正在使用高级 Wordpress 主题,我正在尝试获取主题附带的自定义联系表单,以便在成功完成后重定向到感谢页面(这是为了转换跟踪目的)
无论如何这里是在页面上输入时调用短代码的代码
add_shortcode('etheme_contacts', 'etheme_contacts_shortcodes');
function etheme_contacts_shortcodes($atts, $content=null)
$a = shortcode_atts( array(
'gmap' => 1
), $atts );
if(isset($_GET['contactSubmit']))
$emailFrom = strip_tags($_GET['contactEmail']);
$emailTo = etheme_get_option('contacts_email');
$subject = strip_tags($_GET['contactSubject']);
$name = strip_tags($_GET['contactName']);
$email = strip_tags($_GET['contactEmail']);
$message = strip_tags(stripslashes($_GET['contactMessage']));
$body = "Name: ".$name."\n";
$body .= "Email: ".$email."\n";
$body .= "Message: ".$message."\n";
$body .= $name.", <b>".$emailFrom."</b>\n";
$headers = "From: ".$emailFrom."\n";
$headers .= "Reply-To:".$emailFrom."\n";
if(isset($_GET['contactSubmit']))
$success = mail($emailTo, $subject, $body, $headers);
if ($success)
echo '<p class="yay">All is well, your e–mail has been sent.</p>';
else
echo '<p class="oops">Something went wrong</p>';
else
if($a['gmap'] == 1):
?>
<div id="map">
<p>Enable your javascript!</p>
</div>
<script type="text/javascript">
var $map = jQuery('#map');
if( $map.length )
$map.gMap(
address: '<?php etheme_option('google_map'); ?>',
zoom: 16,
markers: [
'address' : '<?php etheme_option('google_map'); ?>'
]
);
var succmsg = '<?php _e('All is well, your e–mail has been sent!', ETHEME_DOMAIN); ?>';
</script>
<?php endif; ?>
<?php if(etheme_option('contacts_custom_html') != ''): ?>
<div class="custom-html">
<?php echo etheme_option('contacts_custom_html') ?>
</div>
<?php endif; ?>
<div class="one-third">
<div id="contactsMsgs"></div>
<form action="<?php the_permalink(); ?>" method="POST" class="form" id="ethemeContactForm">
<div class="formField">
<label for="contactName"><?php _e('Name', ETHEME_DOMAIN); ?> <span class="required">*</span></label>
<input type="text" class="textField required-field" name="contactName" id="contactName" />
<div class="clear"></div>
</div>
<div class="formField">
<label for="contactEmail"><?php _e('Email', ETHEME_DOMAIN); ?> <span class="required">*</span></label>
<input type="text" class="textField required-field email" name="contactEmail" id="contactEmail" />
<div class="clear"></div>
</div>
<div class="formField">
<label for="contactSubject"><?php _e('Subject', ETHEME_DOMAIN); ?></label>
<input type="text" class="textField" name="contactSubject" id="contactSubject" />
<div class="clear"></div>
</div>
<div class="formField">
<label for="contactMessage"><?php _e('Message', ETHEME_DOMAIN); ?> <span class="required">*</span></label>
<textarea class="textField required-field" name="contactMessage" id="contactMessage" cols="30" rows="10"></textarea>
<div class="clear"></div>
</div>
<div class="formField ">
<button class="button" name="contactSubmit" type="submit"><span><?php _e('Send Request', ETHEME_DOMAIN); ?></span></button>
<div class="contactSpinner"></div>
</div>
</form>
</div>
<div class="one-third last fl-r">
<div class="block non-line contats">
<?php etheme_option('contacts_info'); ?>
</div>
</div>
<?php
我假设这里需要更改一些内容,因为这是 php 为要提交的表单设置函数的地方,但由于我的菜鸟,我不确定如何处理此代码。
if(isset($_GET['contactSubmit']))
$success = mail($emailTo, $subject, $body, $headers);
if ($success)
echo '<p class="yay">All is well, your e–mail has been sent.</p>';
else
echo '<p class="oops">Something went wrong</p>';
【问题讨论】:
【参考方案1】:只需将所需的 URL 放入“附加设置”框中
on_sent_ok: "location = 'http://example.com/';"
记住你应该在footer.php中包含footer函数,否则它将不起作用。
第二种解决方案是更改插件文件中的编码。
希望对你有所帮助。
【讨论】:
【参考方案2】:由于您使用 Wordpress id 推荐内置 wp_redirect();
http://codex.wordpress.org/Function_Reference/wp_redirect
if(isset($_GET['contactSubmit']))
$success = mail($emailTo, $subject, $body, $headers);
if ($success)
//comment out below...
//echo '<p class="yay">All is well, your e–mail has been sent.</p>';
wp_redirect(get_bloginfo('wpurl').'/your-thank-you-page/');
exit;
else
echo '<p class="oops">Something went wrong</p>';
【讨论】:
【参考方案3】:试试这个:
header( 'Location: http://www.yoursite.com/thanyk_you.html' ) ;
替换当前:
echo '<p class="yay">All is well, your mail has been sent.</p>';
【讨论】:
【参考方案4】:这里有几种解决方案,但打字量最少的一个是这样的:
-
制作感谢页面(在 wordpress 中)并获取网址
将 succes echo 行替换为
<meta http-equiv='refresh' content='0; url=http://***.com'>
或 header( 'Location: http://www.yoursite.com/new_page.html' ) ;
与您的 url 而不是 *** 之一。
对出现问题的回声线执行相同操作。
【讨论】:
以上是关于如何将联系表重定向到感谢页面的主要内容,如果未能解决你的问题,请参考以下文章