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 にフッター関数を含める必要があることに注意してください。そうしないと機能しません。

2 番目の解決策は、プラグイン ファイルのコーディングを変更することです。

それがあなたを助けることを願っています。

于 2012-11-23T13:07:46.410 に答える
2

ここにはいくつかの解決策がありますが、入力量が最も少ないものは次のようになります。

  1. (ワードプレスで)ありがとうページを作成し、URLを取得します
  2. 成功のエコー行を<meta http-equiv='refresh' content='0; url=http://stackoverflow.com'>header( 'Location: http://www.yoursite.com/new_page.html' ) ;stackoverflow の代わりに自分の URL に置き換えます。
  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 に答える