Documentazione Plugin per WordPress
Guida completa all'installazione, configurazione e utilizzo di iCONstat Tracker Plus per ambienti WordPress.
Descrizione
iCONstat Tracker Plus è la versione avanzata del plugin iCONstat Tracker, progettata per rilevare e integrare automaticamente lo script di tracking iCONstat in installazioni WordPress, incluse quelle in sottocartelle o con strutture complesse e personalizzate.
Il plugin elimina la necessità di configurazioni manuali complicate, scansionando intelligentemente il filesystem per localizzare la cartella _iconstat e iniettare lo script tracker con attributi anti-ottimizzazione che ne preservino l'integrità.
Caratteristiche Principali
Funzionalità Core
- Rilevamento Automatico Intelligente: Scansione ricorsiva fino a 5 livelli di profondità per trovare automaticamente
tracker.js - Override Manuale: Possibilita di specificare un percorso personalizzato se il rilevamento automatico fallisce
- Compatibilita Subdirectory: Gestione corretta di WordPress installato in sottocartelle (es.
example.com/blog/) - Protezione Anti-Optimizer: Attributi
data-cfasync="false",data-no-optimize="1",data-no-minify="1"per prevenire manipolazioni dello script - Cache Intelligente: Memorizzazione del risultato della scansione per migliorare le performance
- Reset & Rescan: Pulsante per forzare una nuova scansione e aggiornare la cache
Interfaccia Pannello Impostazioni (v1.7.x)
- Design a Card: Layout pulito conforme agli standard WordPress
- Icone SVG Inline: Zero dipendenze CDN esterne, caricamento immediato
- Sistema Bilingua IT/EN: Toggle in tempo reale con salvataggio preferenza utente
- Responsive: Ottimizzato per desktop, tablet e mobile
- Stato Visivo: Feedback immediato sul rilevamento (successo/errore)
Sicurezza
- Validazione Percorsi: Regex e whitelist per prevenire directory traversal
- Verifica Fisica: Controllo esistenza file prima del salvataggio
- Nonce WordPress: Protezione CSRF su tutte le azioni amministrative
- Capability Check: Solo utenti con
manage_optionspossono modificare le impostazioni - Escape Output: Tutti gli output sono sanitizzati con funzioni WordPress
Requisiti
Minimi
- WordPress: 5.0 o superiore
- PHP: 7.4 o superiore
- Permessi Filesystem: Lettura su
DOCUMENT_ROOT
Consigliati
- WordPress: Ultima versione stabile
- PHP: 8.0 o superiore
- Server: Apache/Nginx con configurazione standard
Installazione
Metodo 1: Upload Manuale
- Scarica il file ZIP del plugin dalla pagina https://iconsuite.it/iconstat
- Vai su Plugin → Aggiungi nuovo → Carica plugin
- Seleziona il file ZIP e clicca Installa ora
- Attiva il plugin
Metodo 2: FTP/SFTP
- Estrai il contenuto dello ZIP nella cartella
/wp-content/plugins/ - La struttura dovrebbe essere:
/wp-content/plugins/iconstat-tracker-plus/ - Attiva il plugin da Plugin → Plugin installati
Configurazione
Configurazione Automatica (Consigliata)
Dopo l'attivazione, il plugin esegue automaticamente:
- Scansione Iniziale: Cerca
tracker.jsall'interno di cartelle_iconstatnel tuo server - Cache Risultato: Memorizza il percorso trovato per evitare scansioni ripetute
- Iniezione Script: Aggiunge automaticamente il tracker nel footer del sito
Nessuna azione richiesta se il plugin trova correttamente lo script.
Configurazione Manuale
Se il rilevamento automatico fallisce:
- Vai su Impostazioni → iCONstat Tracker +
- Nel campo "Percorso manuale (opzionale)", inserisci il percorso relativo alla cartella
_iconstat- Esempio: Se il tracker si trova in
https://example.com/analytics/_iconstat/tracker.js, inserisci:analytics/_iconstat - Nota: Non includere barre iniziali o finali
- Esempio: Se il tracker si trova in
- Clicca "Salva impostazioni"
Forza Ri-scansione
Per aggiornare la cache e cercare nuovamente il tracker:
- Clicca sul pulsante viola "Forza ri-scansione"
- Utile dopo aver spostato o aggiunto la cartella
_iconstat
Come Funziona
Algoritmo di Rilevamento
Il plugin segue questa priorità:
- Percorso Manuale (se specificato dall'utente)
- Cache (se esistente e valida)
- Scansione Automatica (fallback)
Scansione Automatica Dettagliata
- Punto di Partenza:
$_SERVER['DOCUMENT_ROOT'](root del dominio) - Profondita Massima: 5 livelli di sottocartelle
- Target: File
tracker.jsall'interno di cartelle chiamate_iconstat - Cartelle Escluse (per performance):
node_modules,vendor.git,.svnwp-content/cachetmp,temp,log,logsbackup,backups
Costruzione URL
// Esempio:
Path fisico: /home/user/public_html/blog/iconstat/_iconstat/tracker.js
Home URL: https://example.com/blog/
Risultato: https://example.com/iconstat/_iconstat/tracker.js
Il plugin rimuove correttamente la sottocartella WordPress (/blog/) dall'URL finale.
Iniezione dello Script
Il tracker viene inserito nel footer con priorita 20:
<script src="https://example.com/iconstat/_iconstat/tracker.js"
defer
data-cfasync="false"
data-no-optimize="1"
data-no-minify="1">
</script>
Attributi di protezione:
defer: Caricamento asincrono per non bloccare il renderingdata-cfasync="false": Esclusione da Cloudflare Rocket Loaderdata-no-optimize="1": Esclusione da plugin di ottimizzazione (WP Rocket, Autoptimize, etc.)data-no-minify="1": Previene la minificazione dello script
Struttura File
iconstat-tracker-plus/
├── iconstat-tracker-plus.php # File principale del plugin
├── readme.txt # Documentazione WordPress.org
└── assets/
├── css/
│ └── admin-style.css # Stili interfaccia admin
├── js/
│ └── admin-i18n.js # Sistema traduzione IT/EN (Vanilla JS)
└── img/
└── iconstat-logo-main.webp # Logo ufficiale
File Principali
iconstat-tracker-plus.php
Contiene tutta la logica del plugin:
- Funzioni di scansione filesystem
- Validazione e sanitizzazione input
- Hook WordPress (admin, frontend, ajax)
- Gestione cache e opzioni
assets/css/admin-style.css
Stili per l'interfaccia amministrativa:
- Layout a card responsive
- Pulsanti con dimensioni uniformi (30px height, 180px min-width)
- Classi per icone SVG (
.icon-svg,.sm,.md,.lg) - Stati visivi (successo/errore)
- Toggle lingua
assets/js/admin-i18n.js
Sistema di internazionalizzazione:
- Traduzioni IT/EN hardcoded (zero file JSON esterni)
- Salvataggio preferenza in
localStorage(preview) e user meta (WordPress) - Toggle in tempo reale senza ricaricare la pagina
- AJAX per salvare preferenza utente nel database WordPress
Sistema Bilingua
Funzionamento
Il plugin supporta Italiano (IT) e Inglese (EN) con:
- Rilevamento Automatico: Usa la lingua impostata nel profilo utente WordPress
- Override Manuale: Toggle IT/EN nell'header della pagina impostazioni
- Persistenza: La preferenza viene salvata nel database (
user_meta) e ricordata per sessioni future
Come Cambiare Lingua
Nel pannello WordPress:
- Clicca su IT o EN nell'angolo in alto a destra della pagina impostazioni
- La traduzione avviene istantaneamente (JavaScript)
- La preferenza viene salvata nel tuo profilo utente
Aggiungere Altre Lingue
Per aggiungere una nuova lingua (es. Francese):
- Apri
assets/js/admin-i18n.js - Aggiungi l'oggetto
frnell'oggettotranslations - Aggiungi il pulsante nel PHP
FAQ
Il plugin non trova il tracker.js. Cosa faccio?
Soluzione 1: Usa il percorso manuale
- Vai su Impostazioni → iCONstat Tracker +
- Inserisci il percorso relativo (es.
iconstat/_iconstat) - Salva
Soluzione 2: Verifica i permessi
- Assicurati che PHP abbia permessi di lettura su
DOCUMENT_ROOT - Controlla che la cartella
_iconstatesista e contengatracker.js
Soluzione 3: Forza ri-scansione
- Clicca sul pulsante "Forza ri-scansione" per pulire la cache
Posso usare il plugin con WordPress in una sottocartella?
Sì! Il plugin gestisce automaticamente installazioni come:
https://example.com/blog/https://example.com/news/
Costruisce l'URL corretto rimuovendo la sottocartella WordPress dal path finale.
Il plugin rallenta il sito?
No, perché:
- La scansione avviene solo quando necessario (prima installazione o reset)
- Il risultato viene cachato nel database
- Le scansioni successive usano la cache (query DB istantanea)
- Timeout di 10 secondi previene blocchi del server
Posso personalizzare la posizione dello script?
No, il plugin inietta automaticamente lo script nel footer (wp_footer hook, priorita 20).
Funziona con plugin di caching/ottimizzazione?
Sì, ed e progettato proprio per questo! Gli attributi data-no-optimize e data-no-minify prevengono che plugin come:
- WP Rocket
- Autoptimize
- SiteGround Optimizer
- LiteSpeed Cache
- W3 Total Cache
... modifichino o spostino lo script tracker.
Come disattivo il plugin?
- Vai su Plugin → Plugin installati
- Trova "iCONstat Tracker Plus"
- Clicca Disattiva
- (Opzionale) Clicca Elimina per rimuovere anche le opzioni dal database
Nota: La disattivazione non elimina le opzioni dal database. Per una pulizia completa, elimina il plugin.
Hook e Filtri
Action Hooks
iconstat_plus_after_scan
Eseguito dopo la scansione automatica.
add_action( 'iconstat_plus_after_scan', function( $url ) {
error_log( 'Tracker URL: ' . $url );
});
Filtri Disponibili
iconstat_plus_tracker_url
Filtra l'URL del tracker prima dell'output.
add_filter( 'iconstat_plus_tracker_url', function( $url ) {
// Modifica URL per CDN
return str_replace( 'example.com', 'cdn.example.com', $url );
});
iconstat_plus_scan_depth
Modifica la profondita massima di scansione (default: 5).
add_filter( 'iconstat_plus_scan_depth', function( $depth ) {
return 7; // Aumenta a 7 livelli
});
iconstat_plus_excluded_dirs
Aggiungi o rimuovi cartelle dalla lista di esclusione.
add_filter( 'iconstat_plus_excluded_dirs', function( $dirs ) {
$dirs[] = 'my_custom_folder';
return $dirs;
});
Changelog
1.7.0 Plus
- NEW: Interfaccia impostazioni completamente ridisegnata con layout a card
- NEW: Supporto bilingua IT/EN con toggle in tempo reale e salvataggio preferenza utente
- NEW: Icone Material Symbols inline (SVG) - zero dipendenze CDN esterne
- IMPROVED: Validazione percorso manuale con regex e whitelist caratteri
- IMPROVED: Scansione filesystem ottimizzata (profondità max 5, lista esclusione, timeout 10s)
1.6.0 Plus
- NEW: Sistema di traduzione basato su JSON con fallback automatico
- NEW: Enqueue condizionale asset (CSS/JS caricati solo nella pagina impostazioni plugin)
- IMPROVED: Separazione logica PHP/CSS/JS per migliore manutenibilità
- FIXED: Cache busting automatico tramite parametro versione plugin
1.5.2 Plus
- IMPROVED: Ulteriormente migliorato il rilevamento del percorso per installazioni WordPress in sottocartelle con scansione intelligente, reset e ri-scansione
1.1.3
- OFFICIAL: Rilascio ufficiale per il repository WordPress.org
1.1.0
- FIX: Compatibilità con plugin di ottimizzazione JS (SiteGround Optimizer, WP Rocket, Autoptimize, LiteSpeed Cache) che potevano rinominare o spostare lo script, impedendo al tracker di localizzare il proprio endpoint
- CHANGE: Metodo di iniezione script cambiato da wp_enqueue_script a output diretto con attributi di esclusione ottimizzatori
- ADD: Attributi data-cfasync, data-no-optimize, data-no-minify per prevenire la manipolazione dello script da parte di plugin di caching/ottimizzazione
1.0.1
- IMPROVED: Migliorato il rilevamento del percorso per installazioni WordPress in sottocartelle
1.0.0
- INITIAL: Rilascio iniziale del plugin iCONstat Tracker
WordPress Plugin Documentation
A comprehensive guide to the installation, configuration, and operation of iCONstat Tracker Plus within WordPress environments.
Description
iCONstat Tracker Plus is the advanced version of the iCONstat Tracker plugin, designed to automatically detect and integrate the iCONstat tracking script in complex WordPress installations, including subdirectory setups or custom server structures.
The plugin eliminates the need for complex manual configurations by intelligently scanning the filesystem to locate the _iconstat folder and injecting the tracker script with anti-optimization attributes that preserve its integrity.
Key Features
Core Functionality
- Smart Auto-Detection: Recursive scan up to 5 levels deep to automatically find
tracker.js - Manual Override: Specify a custom path if auto-detection fails
- Subdirectory Compatibility: Proper handling of WordPress installed in subdirectories (e.g.,
example.com/blog/) - Anti-Optimizer Protection: Attributes
data-cfasync="false",data-no-optimize="1",data-no-minify="1"to prevent script manipulation - Smart Caching: Stores scan results to improve performance
- Reset & Rescan: Button to force a new scan and update cache
Professional Interface (v1.7.0)
- Modern Card-Based Design: Clean, professional layout compliant with WordPress standards
- Inline SVG Icons: Zero external CDN dependencies, instant loading
- Bilingual IT/EN System: Real-time toggle with user preference saving
- Responsive: Optimized for desktop, tablet, and mobile
- Visual Status: Immediate feedback on detection (success/error)
Security
- Path Validation: Regex and whitelist to prevent directory traversal
- Physical Verification: File existence check before saving
- WordPress Nonce: CSRF protection on all admin actions
- Capability Check: Only users with
manage_optionscan modify settings - Output Escaping: All outputs sanitized with WordPress functions
Requirements
Minimum
- WordPress: 5.0 or higher
- PHP: 7.4 or higher
- Filesystem Permissions: Read access to
DOCUMENT_ROOT
Recommended
- WordPress: Latest stable version
- PHP: 8.0 or higher
- Server: Apache/Nginx with standard configuration
Installation
Method 1: Manual Upload
- Download the plugin ZIP file from the page https://iconsuite.it/iconstat
- Go to Plugins → Add New → Upload Plugin
- Select the ZIP file and click Install Now
- Activate the plugin
Method 2: FTP/SFTP
- Extract the ZIP contents to the
/wp-content/plugins/folder - The structure should be:
/wp-content/plugins/iconstat-tracker-plus/ - Activate the plugin from Plugins → Installed Plugins
Configuration
Automatic Configuration (Recommended)
After activation, the plugin automatically performs:
- Initial Scan: Searches for
tracker.jswithin_iconstatfolders on your server - Result Caching: Stores the found path to avoid repeated scans
- Script Injection: Automatically adds the tracker to your site footer
No action required if the plugin finds the script correctly.
Manual Configuration
If auto-detection fails:
- Go to Settings → iCONstat Tracker +
- In the "Manual Path (Optional)" field, enter the relative path to the
_iconstatfolder- Example: If the tracker is at
https://example.com/analytics/_iconstat/tracker.js, enter:analytics/_iconstat - Note: Do not include leading or trailing slashes
- Example: If the tracker is at
- Click "Save Settings"
Force Rescan
To update the cache and search for the tracker again:
- Click the purple "Force Rescan" button
- Useful after moving or adding the
_iconstatfolder
How It Works
Detection Algorithm
The plugin follows this priority:
- Manual Path (if specified by user)
- Cache (if existing and valid)
- Auto-Scan (fallback)
Detailed Auto-Scan
- Starting Point:
$_SERVER['DOCUMENT_ROOT'](domain root) - Maximum Depth: 5 levels of subdirectories
- Target: File
tracker.jsinside folders named_iconstat - Excluded Folders (for performance):
node_modules,vendor.git,.svnwp-content/cachetmp,temp,log,logsbackup,backups
URL Construction
// Example:
Physical path: /home/user/public_html/blog/iconstat/_iconstat/tracker.js
Home URL: https://example.com/blog/
Result: https://example.com/iconstat/_iconstat/tracker.js
The plugin correctly removes the WordPress subdirectory (/blog/) from the final URL.
Script Injection
The tracker is inserted in the footer with priority 20:
<script src="https://example.com/iconstat/_iconstat/tracker.js"
defer
data-cfasync="false"
data-no-optimize="1"
data-no-minify="1">
</script>
Protection attributes:
defer: Async loading to avoid blocking renderingdata-cfasync="false": Exclusion from Cloudflare Rocket Loaderdata-no-optimize="1": Exclusion from optimization plugins (WP Rocket, Autoptimize, etc.)data-no-minify="1": Prevents script minification
File Structure
iconstat-tracker-plus/
├── iconstat-tracker-plus.php # Main plugin file
├── readme.txt # WordPress.org documentation
└── assets/
├── css/
│ └── admin-style.css # Admin interface styles
├── js/
│ └── admin-i18n.js # IT/EN translation system (Vanilla JS)
└── img/
└── iconstat-logo-main.webp # Official logo
Main Files
iconstat-tracker-plus.php
Contains all plugin logic:
- Filesystem scan functions
- Input validation and sanitization
- WordPress hooks (admin, frontend, ajax)
- Cache and options management
assets/css/admin-style.css
Styles for the admin interface:
- Responsive card-based layout
- Uniform button dimensions (30px height, 180px min-width)
- SVG icon classes (
.icon-svg,.sm,.md,.lg) - Visual states (success/error)
- Language toggle
assets/js/admin-i18n.js
Internationalization system:
- Hardcoded IT/EN translations (zero external JSON files)
- Preference saving in
localStorage(preview) and user meta (WordPress) - Real-time toggle without page reload
- AJAX to save user preference in WordPress database
Bilingual System
How It Works
The plugin supports Italian (IT) and English (EN) with:
- Auto-Detection: Uses the language set in the WordPress user profile
- Manual Override: IT/EN toggle in the settings page header
- Persistence: Preference is saved in the database (
user_meta) and remembered for future sessions
How to Change Language
In WordPress dashboard:
- Click IT or EN in the top-right corner of the settings page
- Translation happens instantly (JavaScript)
- Preference is saved to your user profile
In HTML preview:
- Works offline thanks to hardcoded translations in JS
- Uses
localStorageto remember the choice
Adding More Languages
To add a new language (e.g., French):
- Open
assets/js/admin-i18n.js - Add the
frobject to thetranslationsobject - Add the button in the PHP file
FAQ
The plugin cannot find tracker.js. What should I do?
Solution 1: Use manual path
- Go to Settings → iCONstat Tracker +
- Enter the relative path (e.g.,
iconstat/_iconstat) - Save
Solution 2: Verify permissions
- Ensure PHP has read permissions on
DOCUMENT_ROOT - Check that the
_iconstatfolder exists and containstracker.js
Solution 3: Force rescan
- Click the "Force Rescan" button to clear the cache
Can I use the plugin with WordPress in a subdirectory?
Yes! The plugin automatically handles installations like:
https://example.com/blog/https://example.com/news/
It builds the correct URL by removing the WordPress subdirectory from the final path.
Does the plugin slow down my site?
No, because:
- Scanning only occurs when necessary (first installation or reset)
- Results are cached in the database
- Subsequent scans use the cache (instant DB query)
- 10-second timeout prevents server hangs
Can I customize the script position?
No, the plugin automatically injects the script in the footer (wp_footer hook, priority 20).
Does it work with caching/optimization plugins?
Yes, and it is designed specifically for this! The data-no-optimize and data-no-minify attributes prevent plugins like:
- WP Rocket
- Autoptimize
- SiteGround Optimizer
- LiteSpeed Cache
- W3 Total Cache
... from modifying or relocating the tracker script.
How do I deactivate the plugin?
- Go to Plugins → Installed Plugins
- Find "iCONstat Tracker Plus"
- Click Deactivate
- (Optional) Click Delete to also remove options from the database
Note: Deactivation does not remove options from the database. For complete cleanup, delete the plugin.
Hooks & Filters
Action Hooks
iconstat_plus_after_scan
Executed after the automatic scan.
add_action( 'iconstat_plus_after_scan', function( $url ) {
error_log( 'Tracker URL: ' . $url );
});
Available Filters
iconstat_plus_tracker_url
Filters the tracker URL before output.
add_filter( 'iconstat_plus_tracker_url', function( $url ) {
// Modify URL for CDN
return str_replace( 'example.com', 'cdn.example.com', $url );
});
iconstat_plus_scan_depth
Modifies the maximum scan depth (default: 5).
add_filter( 'iconstat_plus_scan_depth', function( $depth ) {
return 7; // Increase to 7 levels
});
iconstat_plus_excluded_dirs
Add or remove folders from the exclusion list.
add_filter( 'iconstat_plus_excluded_dirs', function( $dirs ) {
$dirs[] = 'my_custom_folder';
return $dirs;
});
Changelog
1.7.0 Plus
- NEW: Completely redesigned settings interface with card-based layout
- NEW: Bilingual IT/EN support with real-time toggle and user preference saving
- NEW: Inline Material Symbols icons (SVG) - zero external CDN dependencies
- IMPROVED: Manual path validation with regex and character whitelist
- IMPROVED: Optimized filesystem scanning (depth limit 5, exclude list, 10s timeout)
1.6.0 Plus
- NEW: JSON-based translation system with automatic fallback
- NEW: Conditional asset enqueue (CSS/JS loaded only on plugin settings page)
- IMPROVED: Separation of PHP/CSS/JS logic for better maintainability
- FIXED: Automatic cache busting via plugin version parameter
1.5.2 Plus
- IMPROVED: Further improved path detection for WordPress subdirectory installations with intelligent scanning, reset & rescan functionality
1.1.3
- OFFICIAL: Official release for WordPress.org repository
1.1.0
- FIX: Compatibility with JS optimization plugins (SiteGround Optimizer, WP Rocket, Autoptimize, LiteSpeed Cache) that could rename or relocate the script, preventing the tracker from locating its endpoint
- CHANGE: Script injection method changed from wp_enqueue_script to direct output with optimizer exclusion attributes
- ADD: Attributes data-cfasync, data-no-optimize, data-no-minify to prevent script manipulation by caching/optimization plugins
1.0.1
- IMPROVED: Improved path detection for WordPress installations in subdirectories
1.0.0
- INITIAL: Initial release of iCONstat Tracker plugin