Skip to content

Instantly share code, notes, and snippets.

@felixarntz
Last active November 21, 2019 10:25
Show Gist options
  • Save felixarntz/c7e0aea5c0a17c116b09a25f872d1da0 to your computer and use it in GitHub Desktop.
Save felixarntz/c7e0aea5c0a17c116b09a25f872d1da0 to your computer and use it in GitHub Desktop.
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