2012-03-05 30 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 2012-03-05 17:04:50

+0

嗯,我可以讓表單提交,但不會觸發GA代碼(因爲它太快地加載wp-comments-post.php),或者我可以得到它,以便代碼提交GA事件但不提交表格。在上面的示例中,表單提交,但是一旦遺憾地點擊了提交按鈕,就意味着GA事件沒有時間來定製自定義事件。感謝您爲我查看它。 – Simon 2012-03-05 21:01:22

回答

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:Property'submit'object#不是函數。這會阻止表單提交,並且不幸的是不再工作。我今天晚些時候會發佈一個例子,我需要從外部鏡像站點。我很困惑,爲什麼提交不會延遲。 – Simon 2012-03-06 09:13:48

+0

Horray!我使用你的解決方案和另一個線程上的另一個解決方案(我似乎無法鏈接到,將在解決方案中發佈)的組合解決它。我使用你的代碼,並將我的提交按鈕更改爲,更改名稱和ID 。謝謝你的幫助! – Simon 2012-03-06 09:27:49

+0

我的答案也得到檢查嗎?很高興我能幫到 – shanabus 2012-03-06 14:06:05