2012-03-05 3 views
2

私は自分のWordpressのコメントフォームにカスタムイベントを入れようとしており、誰かが送信ボタンをクリックするたびにイベントを追跡したいと思っています。私が抱えている問題は、フォームがサブミットしてページリクエストを作成し、Googleアナリティクスコードが動作する時間がないことです。アナライザがトラッキングを送信できるようにするjQueryを使用した遅延wordpressコメントフォームの投稿。

フォームの送信を遅らせる必要があるため、追跡に時間がかかります。私は同様の問題を捜し、さまざまな解決策を試しましたが、傾けることはできません。どんな助けでも大歓迎です。

私のコードは次のとおりですが、私の試みはフォームをうまく遅延させようとしました。

<form id="commentsForm" action="<?php echo get_option('siteurl'); ?>/wp-comments-  post.php" method="post" id="commentform"> 

<!-- Delay form submit to allow GA code to send --> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#commentsForm').submit(function (e) { 
    var form = this; 
    e.preventDefault(); 
    setTimeout(function() { 
     form.submit(); 
    }, 1000); // in milliseconds 
}); 
}); 
</script> 

<?php if (is_user_logged_in()) : ?> 

<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><? php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Log out of this account">Log out &raquo;</a></p> 

<?php else : ?> 

<p class="textfield"> 
<input name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" type="text" <?php if ($req) echo "aria-required='true'"; ?>> 

<label for="author"><small>Name <?php if ($req) echo "(required)"; ?></small></label> </p> 

<p class="textfield"><input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?>> 
<label for="email"><small>Mail (will not be published) <?php if ($req) echo "(required)"; ?></small></label></p> 

<p class="textfield"><input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3"> 
<label for="url"><small>Website</small></label></p> 

<?php endif; ?> 

<!--<p><small><strong>XHTML:</strong> You can use these tags: <code><?php echo allowed_tags(); ?></code></small></p>--> 

<p class="text-area"><textarea name="comment" id="comment" cols="58" rows="10" tabindex="4"></textarea></p> 

//Submit button 
<p><input class="submitButton" onClick="_gaq.push(['_trackEvent','Comment','Submit', URL]);" name="submit" type="submit" id="submit" tabindex="5" value="" /> 


<?php comment_id_fields(); ?> 
</p> 
<?php do_action('comment_form', $post->ID); ?> 

</form> 

フォームはPHPフォームなので動作しない可能性がありますが、動作させるには最良の方法はわかりません。

ご協力いただきありがとうございます。

+0

あなたの例は私のために働く。何があなたのためにはうまくいかないのですか? – Basti

+0

私は提出するフォームを取得することはできますが、GAコードをトリガーすることはできません(wp-comments-post.phpがあまりにも速く読み込まれるため)。またはコードを取得してGAイベントを送信しますが、送信しませんフォーム。上記の例では、フォームは送信されますが、残念ながら送信ボタンがクリックされるとすぐにフォームが送信されます。これは、GAイベントにカスタムイベントをスヌーズする時間がないことを意味します。私のためにそれを見てくれてありがとう。 – Simon

答えて

2

サブミットonclickが発射され、form.submit()が発生する可能性があります。送信ボタンからクリックイベントを引き出し、送信機能に配置してみてください。このような

何か:

$(document).ready(function(){ 
    $('#commentsForm').submit(function (e) { 
    var form = this; 
    e.preventDefault(); 
    _gaq.push(['_trackEvent','Comment','Submit', URL]); 
    setTimeout(function() { 
     form.submit(); 
    }, 1000); // in milliseconds 
}); 
}); 

はまた、多分私はあなたの例ではそれを逃したが、URLは何ですか?

+0

あなたの応答のためのThatnks。 URL変数は、var URL = location.hrefを使用して、自分のヘッダーにあるページのURLです。おそらくそれを含めるべきだったでしょう。 あなたのメソッドを試してみましたが、カスタムイベントが発生することができますが、コンソールでエラーが発生しました。Uncaught TypeError:オブジェクト#のプロパティ 'submit'が関数ではありません。これにより、フォームが送信されなくなり、残念なことに動作しなくなります。私は今日後で例を掲示します、私はサイトを外部的に鏡映する必要があります。私は提出が遅れない理由について混乱しています。 – Simon

+0

Horray!私はあなたのソリューションと別のスレッドで見つけた別のソリューションの組み合わせを使用して解決しました(私はリンクできないようですが、ソリューションに投稿します)。あなたのコードを使用し、送信ボタンをに変更し、名前とIDを変更しました。ご協力いただきありがとうございます! – Simon

+0

私の答えは小切手を受け取るのですか?私が助けることができてうれしい – shanabus

関連する問題