2

我正在使用高级 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>';
}
4

4 回答 4

5

尝试这个 :

header( 'Location: http://www.yoursite.com/thanyk_you.html' ) ;

替换当前:

echo '<p class="yay">All is well, your mail has been sent.</p>'; 
于 2012-11-22T16:35:14.643 回答
3

只需将所需的 URL 放入“附加设置”框中

on_sent_ok: "位置 = 'http://example.com/';"

请记住,您应该在 footer.php 中包含页脚函数,否则它将不起作用。

第二种解决方案是更改插件文件中的编码。

希望它会帮助你。

于 2012-11-23T13:07:46.410 回答
2

这里有几种解决方案,但打字量最少的一个是这样的:

  1. 制作一个感谢页面(在 wordpress 中)并获取 url
  2. 用您的 url 代替succes echo 行,<meta http-equiv='refresh' content='0; url=http://stackoverflow.com'>而不是 stackoverflow 行。header( 'Location: http://www.yoursite.com/new_page.html' ) ;
  3. 对出现问题的回声线执行相同的操作。
于 2012-11-22T16:35:11.457 回答
0

由于您使用 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>';
}
于 2012-11-22T16:38:18.997 回答