Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
WordPress mini plugin as an extension to Site Kit that tracks WordPress comment form submissions via Google Analytics.
<?php
/**
* Site Kit by Google Track Comments plugin file.
*
* @package Google\Site_Kit_Track_Comments
* @author Felix Arntz, Google
* @license GPL-2.0-or-later
* @copyright 2019 Google Inc.
*
* @wordpress-plugin
* Plugin Name: Site Kit by Google Track Comments
* Description: Tracks WordPress comment form submissions via Google Analytics.
* Plugin URI: https://gist.github.com/felixarntz//c7e0aea5c0a17c116b09a25f872d1da0
* Version: 0.1.0
* Author: Felix Arntz, Google
* Author URI: https://felix-arntz.me
* License: GNU General Public License v2 (or later)
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/
namespace Google\Site_Kit_Track_Comments;
/*
* In AMP, we need to simply filter the amp-analytics options and add the required event trigger.
*/
add_filter(
'googlesitekit_amp_gtag_opt',
function( array $options ) {
if ( ! isset( $options['triggers'] ) ) {
$options['triggers'] = array();
}
// See https://developers.google.com/analytics/devguides/collection/amp-analytics/#measure_events
// and https://amp.dev/documentation/components/amp-analytics/#triggers.
$options['triggers']['comment_submission'] = array(
'selector' => '#commentform input[type="submit"]',
'on' => 'click',
'vars' => array(
'event_name' => 'submit_comment',
'event_category' => 'engagement',
),
);
return $options;
}
);
/*
* In non-AMP, we need to add a custom script to listen to the DOM event and fire the gtag event.
*/
add_action(
'wp_enqueue_scripts',
function() {
if ( ! wp_script_is( 'google_gtagjs' ) ) {
return;
}
// See https://developers.google.com/analytics/devguides/collection/gtagjs/events#send_events.
ob_start();
?>
<script>
document.addEventListener( 'DOMContentLoaded', function() {
var submitButton = document.querySelector( '#commentform input[type="submit"]' );
if ( submitButton ) {
submitButton.addEventListener( 'click', function() {
gtag( 'event', 'submit_comment', { 'event_category': 'engagement' } );
} );
}
} );
</script>
<?php
$script = substr( trim( ob_get_clean() ), strlen( '<script>' ), - strlen( '</script>' ) );
wp_add_inline_script( 'google_gtagjs', $script );
},
99
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.