[WordPress] 外掛分享: SQMViews

首頁外掛目錄 › SQMViews
全新外掛
安裝啟用
尚無評分
25 天前
最後更新
問題解決
WordPress 6.2+ PHP 8.1+ v1.2.4 上架:2026-01-31

內容簡介

SQMViews 是一款簡單輕量的追蹤與分析外掛,幫助使用者了解訪客如何與 WordPress 內容互動,並且不會將數據傳送至第三方服務。

【主要功能】
• 近即時的頁面瀏覽追蹤
• 參與度指標(停留時間、活躍時間)
• 隱私友好的用戶活動計數(點擊、滾動等)
• 互動式分析儀表板,使用 D3.js 可視化
• 歷史數據每日聚合
• 高效能的追蹤端點,減少請求延遲

外掛標籤

開發者團隊

⬇ 下載最新版 (v1.2.4) 或搜尋安裝

① 下載 ZIP → 後台「外掛 › 安裝外掛 › 上傳外掛」
② 後台搜尋「SQMViews」→ 直接安裝(推薦)
📦 歷史版本下載

原文外掛簡介

SQMViews is a simple and lightweight tracking and analytics plugin that helps you understand how visitors interact with your WordPress content—without sending data to third-party services.
Plugin adds very little overhead, capable of tracking millions of page views per day on a moderately sized website.
Plugin includes sqm-views-pages.php drop-in script installation (Fast endpoint) to collect pageviews without loading WordPress core, reducing pageview request from 250 ms to 5 ms. If drop-in installation is not possible, the plugin falls back to the WordPress call (API endpoint).
Key Features
Tracking & Analytics:

Near real-time page view tracking
Engagement metrics (time on page, active time)
Shows user activity (clicks, scrolls, etc.) with privacy-friendly event counting
Interactive analytics dashboard with D3.js visualizations
Historical data with daily aggregation
Filter by date range, content type, and more

Performance:

Ultra-fast tracking endpoint (bypasses a core load)
Minimal overhead (~5ms per request with the drop-in script)
File-based batch processing (no database requests during the pageview event collection, only during cron processing)
Efficient data storage with automatic archiving
Configurable background processing via WP-Cron

Drop-in script
* Created to minimize overhead
* Uses exactly the same code as the API endpoint except two hooks for config modification (sqm_views_ping_interval, sqm_views_session_timeout)
* Run strict JSON request schema validation to minimize attack surface.
* Receives request, run validation, add it to a file for the later batch processing. Very low memory and CPU footprint.
Pageview lifetime
JS code will send an init event, followed by ping events and completed by exit or timeout events. Unique ID is returned during init used for all the following events. During cron processing all the events with the same IDs are combined into a single pageview and stored in the database.
Privacy & Control:

100% privacy-focused (no external services)
All data stays on your server
Encrypted tracking payloads (you don’t need to reveal everything you track)
Full control over what gets tracked
GDPR-friendly (no personal data collected by default), we focus on pageviews

Flexibility:

Track custom post types and taxonomies
30+ developer hooks for customization
WP-CLI commands for automation
Translation-ready (i18n)
REST API for integrations

What Gets Tracked?
Content Types:
* Posts and pages (configurable)
* Custom post types
* Category and tag archives
* Custom taxonomy archives
* Author archives
* Date archives
* Home page
* Search results
Engagement Metrics:
* Count – Total number of views
* Time on Page – Total time spent on page
* Active Time – Time user was actively engaged
* High-Frequency Events – User browsing on the page (scrolling, mouse movement)
* Low-Frequency Events – Deliberate actions (clicks, touches, typing)
Perfect For

Publishers monitoring content performance
Marketers analyzing user engagement
Developers needing custom analytics
Privacy-conscious site owners
Anyone wanting Google Analytics alternative

How It Works

Lightweight JavaScript tracker injected on tracked pages (inline or external)
Fast endpoint receives tracking data
File-based storage for raw data writes data to JSONL files (no database overhead)
Background processing via WP-Cron aggregates data hourly/daily and put them in the database
Interactive dashboard displays charts and metrics

Extensibility
30+ Developer Hooks:

Frontend Hooks – Control what gets tracked and how
Processing Hooks – Modify data before database storage
REST API Hooks – Customize chart data and permissions
Activation Hooks – Adjust default settings and storage

WP-CLI Support
# Process statistics manually
wp sqm-views process

Multisite Compatible
Planned
Why Choose SQMViews?
vs. External Analytics:
* No external JavaScript libraries
* No tracking cookies required
* No data sent to Google servers
* Faster page loads (no external requests)
* Complete data ownership
Requirements

WordPress 6.0 or higher
PHP 8.1 or higher (PHP 8.2+ recommended)
PHP Sodium extension (for encryption)
MySQL 5.6 or higher / MariaDB 10.0 or higher
Write permissions for wp-content/uploads/sqm-views directory

Credits
SearchQueryMaster.com team
Powered by:
* D3.js for visualizations
* WordPress CMS
* Sodium crypto library
Privacy Policy
SQMViews is designed with privacy in mind. The plugin:
Does NOT collect:
* Personal information
* Cookies not required for tracking
* Sessions – there is no session tracking at the moment, only pageviews tracking
* Usernames or emails
* Browser fingerprints
IP address and user agents are:
* collected in raw log files for troubleshooting, spam, bot, and system abuse prevention
* removed from aggregated data and not used anywhere else
Does collect:
* Page URLs being viewed
* Tags and categories on the current page
* Timestamps of visits
* User interaction metrics (scrolls, clicks) counter
* Browser user-agent string (for bot filtering)
* Referrer URL (if available)
Data storage:
* All data stored on your WordPress server
* No data sent to external services
* You control data retention and deletion
Your responsibilities:
* Update your site’s privacy policy to mention analytics tracking
* Implement cookie consent if required in your jurisdiction
* Handle data subject access requests per GDPR/CCPA requirements
* Configure the plugin to exclude personal data if necessary
Support
Free Support:
* WordPress.org Support Forum
Developer Notes
Architecture:
* Namespaced PHP code (SQMViews\)
* PSR-4 autoloading via Composer
* REST API endpoints for integrations
* File-based queueing system
Database Tables:
* sqm_views_trackables – Catalog of tracked content
* sqm_views_events – Event type definitions
* sqm_views_records – Individual tracking records
* sqm_views_daily – Daily aggregated statistics
Hooks:
Hooks Reference:
Filters (apply_filters):
Tracking & Frontend:
* sqm_views_should_track – Control whether tracking should occur (2 params: $should_track, $data)
* sqm_views_tracking_data – Modify tracking data before encryption (1 param: $tracking_data)
* sqm_views_trackable_post_types – Customize which post types can be tracked (1 param: $post_types)
* sqm_views_trackable_taxonomies – Customize which taxonomies can be tracked (1 param: $taxonomies)
* sqm_views_data_taxonomies – Modify taxonomies included in tracking data (1 param: $taxonomies)
* sqm_views_encryption_key – Override the encryption key (1 param: $key)
* sqm_views_tracker_endpoint – Customize tracking endpoint URL (2 params: $endpoint, $saved_endpoint)
* sqm_views_minified_js – Control whether to use minified tracker JS (1 param: $use_min)
* sqm_views_tracker_script_path – Customize the tracker script file path (2 params: $path, $use_min)
* sqm_views_tracker_script_url – Customize tracker script URL (2 params: $url, $use_min)
* sqm_views_inline_js – Control whether to inline tracker JS (1 param: $use_inline)
* sqm_views_show_debug_comment – Show debug HTML comment (1 param: $show)
Processing:
* sqm_views_raw_record – Filter raw record data during processing (1 param: $data)
* sqm_views_calculated_metrics – Modify calculated metrics (2 params: $metrics, $records)
* sqm_views_session_timeout – Customize session inactivity timeout (1 param: $timeout)
* sqm_views_ping_interval – Customize the ping interval for session tracking (1 param: $interval)
Dashboard:
* sqm_views_dashboard_minified_js – Control minified JS for dashboard (1 param: $use_min)
* sqm_views_dashboard_script_path – Dashboard script file path (2 params: $path, $use_min)
* sqm_views_dashboard_script_url – Dashboard script URL (2 params: $url, $use_min)
* sqm_views_dashboard_inline_js – Control inline JS for dashboard (1 param: $use_inline)
* sqm_views_dashboard_default_filters – Customize default dashboard filters (1 param: $defaults)
REST API:
* sqm_views_rest_permissions – Customize REST API permissions (1 param: $capability)
* sqm_views_rest_chart_data – Modify chart data in REST response (2 params: $data, $request)
* sqm_views_chart_cache_expiration – Customize chart cache expiration time (1 param: $seconds)
* sqm_views_rest_chart_filters – Customize available chart filters (1 param: $filters)
Activation & Settings:
* sqm_views_enable_dropin – Enable/disable drop-in file creation (1 param: $enable)
* sqm_views_default_settings – Customize default plugin settings (1 param: $settings)
* sqm_views_data_directory – Customize data storage directory (1 param: $directory)
Actions (do_action):
Activation & Upgrade:
* sqm_views_activated – Fires after plugin activation (0 params)
* sqm_views_upgraded – Fires after plugin upgrade (2 params: $from_version, $to_version)
* sqm_views_before_upgrade – Fires before the upgrade process (2 params: $from_version, $to_version)
* sqm_views_after_upgrade – Fires after the upgrade process (2 params: $from_version, $to_version)
* sqm_views_uninstalled – Fires during plugin uninstallation (0 params)
Tracking:
* sqm_views_before_tracker_output – Before tracker script output (2 params: $tracking_data, $tracker_config)
* sqm_views_after_tracker_output – After tracker script output (1 param: $tracking_data)
Processing:
* sqm_views_before_processing – Before statistics processing starts (1 param: $verbose)
* sqm_views_after_processing – After statistics processing completes (1 param: $processor_instance)
* sqm_views_record_processed – After individual record processed (1 param: $record)
* sqm_views_daily_aggregated – After daily aggregation completes (1 param: $result)
Cache:
* sqm_views_chart_cache_invalidated – When chart cache is cleared (0 params)
Examples
Frontend Hooks – Control Tracking Behavior:
Exclude logged-in administrators from tracking (will not work properly if you cache pages or use CDN):
add_filter( 'sqm_views_should_track', function( $should_track, $data ) {
if ( current_user_can( 'manage_options' ) ) {
return false;
}
return $should_track;
}, 10, 2 );

Modify tracking data before sending:
add_filter( 'sqm_views_tracking_data', function( $data ) {
// Add custom metadata
$data['custom_field'] = get_post_meta( get_the_ID(), 'my_field', true );
return $data;
} );

Customize which post types are tracked (overrides UI settings):
add_filter( 'sqm_views_tracked_post_types', function( $post_types ) {
// Add custom post type
$post_types[] = 'portfolio';
return $post_types;
} );

Processing Hooks – Modify Data Before Storage:
Calculate custom engagement metrics:
add_filter( 'sqm_views_calculated_metrics', function( $metrics, $records ) {
// Calculate engagement score
$metrics['engagement_score'] = ( $metrics['active'] / max( 1, $metrics['on_page'] ) ) * 100;

// Calculate bounce rate indicator
$metrics['likely_bounce'] = $metrics['on_page'] < 5 ? 1 : 0; return $metrics; }, 10, 2 ); Filter records before processing: add_filter( 'sqm_views_before_process_record', function( $record ) { // Exclude specific URLs if ( strpos( $record['url'], '/test-page/' ) !== false ) { return null; // Skip this record } return $record; } ); REST API Hooks – Customize Chart Data: Modify chart permissions: add_filter( 'sqm_views_rest_permissions', function( $has_permission ) { // Allow editors to view analytics return current_user_can( 'edit_posts' ); } ); Activation Hooks – Adjust Default Settings: Set custom default settings on activation: add_action( 'sqm_views_activated', function() { // Set default processing interval update_option( 'sqm_views_cron_interval', 'hourly' ); // Enable external JavaScript by default update_option( 'sqm_views_js_mode', 'external' ); } ); Cron Hooks – Custom Processing Schedules: Run custom tasks after processing: add_action( 'sqm_views_after_process', function( $processed_count ) { // Send notification if processing high volume if ( $processed_count > 10000 ) {
wp_mail(
get_option( 'admin_email' ),
'SQMViews High Volume Alert',
sprintf( 'Processed %d records', $processed_count )
);
}
}, 10, 1 );

REST API:
* POST /wp-json/sqm-views/v1/track – Submit tracking data through WordPress API endpoint
* POST sqm-views-pages.php – Submit tracking data through Fast endpoint
* GET /wp-json/sqm-views/v1/charts – Retrieve chart data
WP-CLI:
* wp sqm-views process – Process pending statistics
License:
GPLv3. See LICENSE file for details.

延伸相關外掛

文章
Filter
Apply Filters
Mastodon