kollapsminoriteten/wp-content/plugins/blocksy-companion/framework/features/google-analytics.php

106 lines
2.5 KiB
PHP
Raw Permalink Normal View History

2025-08-27 08:44:30 +02:00
<?php
namespace Blocksy;
2026-03-31 11:30:59 +02:00
if (! defined('ABSPATH')) {
exit;
}
2025-08-27 08:44:30 +02:00
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;
}
}
2025-12-12 13:13:07 +01:00
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2025-08-27 08:44:30 +02:00
echo $this->get_ga_4_code();
});
}
);
}
private function get_ga_4_code() {
2026-03-31 11:30:59 +02:00
$analytics_v4_id = blocksy_companion_theme_functions()->blocksy_get_theme_mod('analytics_v4_id', '');
2025-08-27 08:44:30 +02:00
if (empty($analytics_v4_id)) {
return '';
}
2025-12-12 13:13:07 +01:00
// phpcs:disable WordPress.WP.EnqueuedResources.NonEnqueuedScript
2025-08-27 08:44:30 +02:00
ob_start(); ?>
<!-- Global site tag (gtag.js) - Google Analytics v4 -->
2025-12-12 13:13:07 +01:00
<script async src="https://www.googletagmanager.com/gtag/js?id=<?php
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo $analytics_v4_id;
?>"></script>
2025-08-27 08:44:30 +02:00
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
2025-12-12 13:13:07 +01:00
gtag('config', '<?php
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo $analytics_v4_id;
?>');
2025-08-27 08:44:30 +02:00
</script>
<!-- End Google Analytics v4 -->
<?php
return ob_get_clean();
2025-12-12 13:13:07 +01:00
// phpcs:enable WordPress.WP.EnqueuedResources.NonEnqueuedScript
2025-08-27 08:44:30 +02:00
}
public function generate_google_analytics_opts($options) {
$options[] = [
'analytics_v4_id' => [
'label' => __( 'Google Analytics v4', 'blocksy-companion' ),
'type' => 'text',
'design' => 'block',
'value' => '',
2026-03-31 11:30:59 +02:00
'desc' => blocksy_companion_safe_sprintf(
2025-12-12 13:13:07 +01:00
// translators: %1$s and %2$s are HTML tags for a link.
2025-08-27 08:44:30 +02:00
__(
2025-12-12 13:13:07 +01:00
'Link your Google Analytics 4 tracking ID. More info and instructions can be found %1$shere%2$s.',
2025-08-27 08:44:30 +02:00
'blocksy-companion'
),
'<a href="https://support.google.com/analytics/answer/9744165?hl=en" target="_blank">',
'</a>'
),
'disableRevertButton' => true,
'setting' => [ 'transport' => 'postMessage' ],
]
];
return $options;
}
}