context = $context;
if ( ! $authentication ) {
$authentication = new Authentication( $this->context );
}
$this->authentication = $authentication;
}
/**
* Registers functionality through WordPress hooks.
*
* @since 1.0.0
*/
public function register() {
// Enqueue gtag script for Site Kit admin screens.
add_action(
'googlesitekit_enqueue_screen_assets',
function () {
$this->print_gtag_script();
}
);
// Enqueue gtag script for additional areas.
add_action(
'admin_enqueue_scripts',
function () {
$current_screen = get_current_screen();
if ( ! in_array( $current_screen->id, array( 'dashboard', 'plugins' ), true ) ) {
return;
}
$this->print_gtag_script();
if ( ! $this->authentication->is_authenticated() ) {
$this->print_standalone_event_tracking_script();
}
}
);
add_filter(
'googlesitekit_admin_data',
function ( $data ) {
return $this->inline_js_admin_data( $data );
}
);
add_action(
'init',
function () {
$this->register_settings();
}
);
}
/**
* Is tracking active for this plugin install?
*
* @since 1.0.0
*
* @return bool True if tracking enabled, and False if not.
*/
public function is_active() {
return (bool) get_option( self::TRACKING_OPTIN_KEY, false );
}
/**
* Output Tag Manager gtag.js if tracking is enabled.
*
* @since 1.0.0
*/
private function print_gtag_script() {
// Only load if tracking is active.
$tracking_active = $this->is_active();
if ( ! $tracking_active ) {
return;
}
?>
is_active();
$data['trackingID'] = self::TRACKING_ID;
return $data;
}
/**
* Register tracking settings and allow access from Rest API.
*
* @since 1.0.0
*/
private function register_settings() {
$args = array(
'type' => 'boolean',
'description' => __( 'Allowing tracking of anonymous usage stats.', 'google-site-kit' ),
'default' => false,
'show_in_rest' => true,
);
register_setting( 'google-site-kit', self::TRACKING_OPTIN_KEY, $args );
}
}