143 lines
2.8 KiB
PHP
143 lines
2.8 KiB
PHP
<?php
|
|
|
|
class MonsterInsights_Google_Ads_Pax extends MonsterInsights_Ads_Tracking_Provider {
|
|
|
|
/**
|
|
* The instance of the class.
|
|
*/
|
|
private static $instance;
|
|
|
|
/**
|
|
* The conversion tracking id.
|
|
*/
|
|
protected $conversionTrackingId;
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct() {
|
|
|
|
// Little sanity check to make sure the class is loaded.
|
|
if ( !class_exists('MonsterInsights_Google_Ads') ) {
|
|
require_once MONSTERINSIGHTS_PLUGIN_DIR . 'includes/ppc/google/class-monsterinsights-google-ads.php';
|
|
}
|
|
|
|
if ( !$this->is_google_ads_enabled() ) {
|
|
return;
|
|
}
|
|
|
|
$this->conversionTrackingId = MonsterInsights_Google_Ads::get_settings('conversion_tracking_id');
|
|
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Get instance
|
|
*
|
|
* @return MonsterInsights_Google_Ads_Pax
|
|
*/
|
|
public static function get_instance() {
|
|
if ( ! self::$instance ) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Insert conversion code
|
|
*/
|
|
public function insert_conversion_code() {
|
|
printf(
|
|
"\t\t__gtagTracker( 'config', '%s' );\n",
|
|
esc_js($this->conversionTrackingId)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Check if Google Ads is enabled
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_google_ads_enabled() {
|
|
$settings = MonsterInsights_Google_Ads::get_settings();
|
|
|
|
if ( ! $settings ) {
|
|
return false;
|
|
}
|
|
|
|
if ( empty($settings['conversion_tracking_id']) ) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function is_active() {
|
|
return $this->is_google_ads_enabled();
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function get_tracking_id() {
|
|
return $this->conversionTrackingId;
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function get_api_token() {
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function get_provider_id() {
|
|
return 'google_pax';
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
protected function add_frontend_hooks() {
|
|
// Inject conversion id
|
|
add_action( 'monsterinsights_frontend_tracking_gtag_after_pageview', [$this, 'insert_conversion_code'] );
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
protected function init_server_handler() {
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function maybe_print_conversion_code( $conversion_data, $customer_info = [] ) {
|
|
|
|
// Conversions require both conversion id and label
|
|
if ( empty( $this->conversionTrackingId ) ) {
|
|
return false;
|
|
}
|
|
|
|
$data_for_google = [
|
|
'send_to' => $this->conversionTrackingId,
|
|
'value' => $conversion_data['order_total'],
|
|
'currency' => $conversion_data['currency'],
|
|
'transaction_id' => $conversion_data['order_id'],
|
|
];
|
|
|
|
printf(
|
|
"\n\t\t__gtagTracker( 'event', 'purchase', %s );\n",
|
|
json_encode( $data_for_google, JSON_UNESCAPED_SLASHES ) // phpcs:ignore WordPress.WP.AlternativeFunctions.json_encode_json_encode -- We need to use json_encode here to avoid double escaping
|
|
);
|
|
|
|
return true;
|
|
}
|
|
}
|