Last active
November 21, 2019 10:25
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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