102 lines
2.4 KiB
PHP
102 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Blocksy;
|
|
|
|
class GoogleAnalytics {
|
|
public function __construct() {
|
|
add_filter(
|
|
'blocksy_engagement_general_start_customizer_options',
|
|
[$this, 'generate_google_analytics_opts']
|
|
);
|
|
|
|
add_filter('blocksy:cookies-consent:scripts-to-load', function ($data) {
|
|
$ga_4_code = $this->get_ga_4_code();
|
|
|
|
if (! empty($ga_4_code)) {
|
|
$data[] = $ga_4_code;
|
|
}
|
|
|
|
return $data;
|
|
});
|
|
|
|
if (is_admin()) return;
|
|
|
|
add_action(
|
|
'init',
|
|
function () {
|
|
add_action('wp_print_scripts', function () {
|
|
if (is_admin()) return;
|
|
|
|
if (class_exists('BlocksyExtensionCookiesConsent')) {
|
|
if (! \BlocksyExtensionCookiesConsent::has_consent()) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
|
echo $this->get_ga_4_code();
|
|
});
|
|
}
|
|
);
|
|
}
|
|
|
|
private function get_ga_4_code() {
|
|
$analytics_v4_id = blc_theme_functions()->blocksy_get_theme_mod('analytics_v4_id', '');
|
|
|
|
if (empty($analytics_v4_id)) {
|
|
return '';
|
|
}
|
|
|
|
// phpcs:disable WordPress.WP.EnqueuedResources.NonEnqueuedScript
|
|
|
|
ob_start(); ?>
|
|
|
|
<!-- Global site tag (gtag.js) - Google Analytics v4 -->
|
|
<script async src="https://www.googletagmanager.com/gtag/js?id=<?php
|
|
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
|
echo $analytics_v4_id;
|
|
?>"></script>
|
|
<script>
|
|
window.dataLayer = window.dataLayer || [];
|
|
function gtag(){dataLayer.push(arguments);}
|
|
gtag('js', new Date());
|
|
|
|
gtag('config', '<?php
|
|
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
|
echo $analytics_v4_id;
|
|
?>');
|
|
|
|
</script>
|
|
<!-- End Google Analytics v4 -->
|
|
|
|
<?php
|
|
return ob_get_clean();
|
|
|
|
// phpcs:enable WordPress.WP.EnqueuedResources.NonEnqueuedScript
|
|
}
|
|
|
|
public function generate_google_analytics_opts($options) {
|
|
$options[] = [
|
|
'analytics_v4_id' => [
|
|
'label' => __( 'Google Analytics v4', 'blocksy-companion' ),
|
|
'type' => 'text',
|
|
'design' => 'block',
|
|
'value' => '',
|
|
'desc' => blc_safe_sprintf(
|
|
// translators: %1$s and %2$s are HTML tags for a link.
|
|
__(
|
|
'Link your Google Analytics 4 tracking ID. More info and instructions can be found %1$shere%2$s.',
|
|
'blocksy-companion'
|
|
),
|
|
'<a href="https://support.google.com/analytics/answer/9744165?hl=en" target="_blank">',
|
|
'</a>'
|
|
),
|
|
'disableRevertButton' => true,
|
|
'setting' => [ 'transport' => 'postMessage' ],
|
|
]
|
|
];
|
|
|
|
return $options;
|
|
}
|
|
}
|