103 lines
2.4 KiB
PHP
103 lines
2.4 KiB
PHP
<?php
|
|
|
|
class MonsterInsights_Ads_Forms
|
|
{
|
|
|
|
/**
|
|
* The instance of the class.
|
|
*/
|
|
private static $instance;
|
|
|
|
/**
|
|
* The conversion tracking id.
|
|
*/
|
|
protected $conversionTrackingId;
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct()
|
|
{
|
|
// Only run on frontend
|
|
if (! is_admin()) {
|
|
$this->conversionTrackingId = MonsterInsights_Google_Ads::get_settings('conversion_tracking_id');
|
|
if ($this->conversionTrackingId) {
|
|
add_action('monsterinsights_frontend_tracking_gtag_after_pageview', [$this, 'inject_form_conversion_tracking']);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get instance
|
|
*
|
|
* @return MonsterInsights_Ads_Forms
|
|
*/
|
|
public static function get_instance()
|
|
{
|
|
if (! self::$instance) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Inject the form conversion tracking script
|
|
*/
|
|
public function inject_form_conversion_tracking()
|
|
{
|
|
?>
|
|
|
|
(function() {
|
|
function mi_ads_forms_has_class(element, className) {
|
|
return (' ' + element.className + ' ').indexOf(' ' + className + ' ') > -1;
|
|
}
|
|
|
|
function mi_ads_forms_record_conversion(event) {
|
|
var form_id = event.target.id;
|
|
if (form_id) {
|
|
__gtagTracker('event', 'contact', {
|
|
send_to: '<?php echo esc_js($this->conversionTrackingId); ?>',
|
|
form_id: form_id
|
|
});
|
|
}
|
|
}
|
|
|
|
function mi_ads_forms_attach_listeners() {
|
|
var forms = document.getElementsByTagName('form');
|
|
for (var i = 0; i < forms.length; i++) {
|
|
var form = forms[i];
|
|
var form_id = form.getAttribute('id');
|
|
if (!form_id || form_id === 'commentform' || form_id === 'adminbar-search') {
|
|
continue;
|
|
}
|
|
if (window.jQuery) {
|
|
(function(form_id) {
|
|
jQuery(document).ready(function() {
|
|
jQuery('#' + form_id).on('submit', mi_ads_forms_record_conversion);
|
|
});
|
|
})(form_id);
|
|
} else {
|
|
if (form.addEventListener) {
|
|
form.addEventListener('submit', mi_ads_forms_record_conversion, false);
|
|
} else if (form.attachEvent) {
|
|
form.attachEvent('onsubmit', mi_ads_forms_record_conversion);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (typeof __gtagTracker !== 'undefined' && __gtagTracker) {
|
|
if (window.addEventListener) {
|
|
window.addEventListener('load', mi_ads_forms_attach_listeners, false);
|
|
} else if (window.attachEvent) {
|
|
window.attachEvent('onload', mi_ads_forms_attach_listeners);
|
|
}
|
|
} else {
|
|
setTimeout(arguments.callee, 200);
|
|
}
|
|
})();
|
|
|
|
<?php
|
|
}
|
|
}
|