如何将联系表重定向到感谢页面

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&ndash;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&ndash;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&ndash;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&ndash;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 行替换为 &lt;meta http-equiv='refresh' content='0; url=http://***.com'&gt;header( 'Location: http://www.yoursite.com/new_page.html' ) ; 与您的 url 而不是 *** 之一。 对出现问题的回声线执行相同操作。

【讨论】:

以上是关于如何将联系表重定向到感谢页面的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在使用联系表 7 付款后重定向到特定的感谢页面?

联系表格 7 感谢您在新窗口上重定向页面

Ajax 表单提交后如何将用户重定向到另一个页面?

Ajax表单提交后如何将用户重定向到另一个页面

如何使用web.config将所有.asp页面重定向到IIS上的.php页面

如何强制将所有 404(或每个页面,无论是不是无效)重定向到主页?