diff --git a/admin/css/admin.css b/admin/css/admin.css
index ff608e6..e9270d0 100644
--- a/admin/css/admin.css
+++ b/admin/css/admin.css
@@ -28,6 +28,7 @@
color: #fff;
}
+.att-cc-badge--always { background: #4CAF50; }
.att-cc-badge--functional { background: #2196F3; }
.att-cc-badge--analytics { background: #FF9800; }
.att-cc-badge--marketing { background: #9C27B0; }
diff --git a/admin/views/settings-scripts.php b/admin/views/settings-scripts.php
index 9691b20..a0468bc 100644
--- a/admin/views/settings-scripts.php
+++ b/admin/views/settings-scripts.php
@@ -82,11 +82,12 @@ $scripts = ATT_Consent_Scripts_Manager::get_all_scripts();
|
-
+
|
diff --git a/includes/class-frontend.php b/includes/class-frontend.php
index eeb0a4b..7bba363 100644
--- a/includes/class-frontend.php
+++ b/includes/class-frontend.php
@@ -115,7 +115,6 @@ wait_for_update:c.wait_for_update||500
});
window.attCCHasConsent=false;
}
-if(c.linker_domains&&c.linker_domains.length){g('set','linker',{'domains':c.linker_domains});}
if(!sessionStorage.getItem('att_cc_attr')){
var p=new URLSearchParams(window.location.search);
var a={
@@ -128,9 +127,10 @@ ut:p.get('utm_term')||'',
uo:p.get('utm_content')||'',
gc:p.get('gclid')||'',
dc:p.get('dclid')||'',
+gl:p.get('_gl')||'',
t:Date.now()
};
-if(a.r||a.us||a.gc){
+if(a.r||a.us||a.gc||a.gl){
sessionStorage.setItem('att_cc_attr',JSON.stringify(a));
}
}
@@ -176,7 +176,7 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
if ( 'gtag' === $s['tracking_mode'] && ! empty( $s['ga4_measurement_id'] ) ) {
$id = esc_attr( $s['ga4_measurement_id'] );
return "
-";
+";
}
return '';
diff --git a/includes/class-scripts-manager.php b/includes/class-scripts-manager.php
index ba1a673..fb147e2 100644
--- a/includes/class-scripts-manager.php
+++ b/includes/class-scripts-manager.php
@@ -97,7 +97,7 @@ class ATT_Consent_Scripts_Manager {
global $wpdb;
$table = self::table_name();
- $allowed_categories = array( 'functional', 'analytics', 'marketing' );
+ $allowed_categories = array( 'always', 'functional', 'analytics', 'marketing' );
$allowed_placements = array( 'head', 'footer' );
$allowed_statuses = array( 'active', 'inactive' );
@@ -150,6 +150,7 @@ class ATT_Consent_Scripts_Manager {
public static function get_scripts_for_frontend() {
$scripts = self::get_scripts();
$grouped = array(
+ 'always' => array( 'head' => array(), 'footer' => array() ),
'functional' => array( 'head' => array(), 'footer' => array() ),
'analytics' => array( 'head' => array(), 'footer' => array() ),
'marketing' => array( 'head' => array(), 'footer' => array() ),
@@ -193,6 +194,18 @@ class ATT_Consent_Scripts_Manager {
continue;
}
+ // "Always" scripts execute immediately without consent gating.
+ if ( 'always' === $script['category'] ) {
+ if ( preg_match( '/' . "\n";
+ }
+ continue;
+ }
+
// Check if snippet contains