Отложите сообщение в форме комментария WordPress с помощью jQuery, чтобы аналитика могла отследить. - PullRequest
2 голосов
/ 05 марта 2012

Я пытаюсь добавить пользовательское событие в форму комментариев Wordpress и хотел бы отслеживать событие каждый раз, когда кто-то нажимает кнопку отправки.Проблема, с которой я столкнулся, заключается в том, что форма отправляет и создает запрос страницы, а код аналитики Google не успевает работать.

Мне нужно отложить отправку формы, чтобы время отслеживания работало.Я искал похожие проблемы и пробовал различные решения, но, кажется, не могу заставить их работать.Любая помощь будет принята с благодарностью.

Мой код выглядит следующим образом, с моей попыткой отложить форму безуспешно.

<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, но я не уверен, что это лучший способ заставить ее работать.

Спасибо за любую помощь или мысли.

1 Ответ

2 голосов
/ 06 марта 2012

Возможно, у вас возникли проблемы с порядком, в котором отправляется запрос onclick и происходит событие form.submit(). Не могли бы вы попробовать снять событие click с кнопки отправки и просто поместить его в функцию отправки?

Примерно так:

$(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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...