| 开发者 | muscode |
|---|---|
| 更新时间 | 2026年4月8日 21:39 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 6.9 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
localStorage entry (attentiq_seen_[post_id]) is written to the visitor's browser. No cookies are set.
Site owners can disable all frontend tracking at any time by adding the following to their theme or a plugin:
add_filter( 'attentiq_enable_tracking', '__return_false' );
AttentIQ also registers suggested text for your site's Privacy Policy page (Appearance → Privacy Policy) via the WordPress privacy API.
attentiq folder to the /wp-content/plugins/ directoryYes. AttentIQ detects common page builders (Elementor, Divi, Beaver Builder, etc.) and switches to JavaScript-based ad injection automatically.
AttentIQ starts collecting data immediately after activation. Slot scores become reliable once a post reaches the minimum views threshold (default: 50 views), which you can adjust in Settings.
Yes. AttentIQ tracks desktop and mobile visits separately (Pro). You can set mobile-specific ad codes for each slot and choose device-specific ad placement mode.
The tracker script is lightweight, loads asynchronously, and only fires after the reader has been on the page for a few seconds (configurable bounce threshold). It has no impact on page load time.
All attention data is stored in your own WordPress database. No post content or reader data is sent to external servers. See External Services for details on third-party services used in the admin UI.
Yes. Go to AttentIQ → Settings and select which post types AttentIQ should track and inject ads into.
is_premium from all PHP localized script data — the Pro plugin now injects attention-data flags into the frontend JS via wp_add_inline_script() only when active.$is_pro_locked slot-locking logic and attentiq_unlocked_slots filter — the Second In-Content slot is added entirely by the Pro plugin via attentiq_slot_definitions; no slot locking exists in the free plugin.ob_start() / apply_filters() pattern) replaced with direct if (!class_exists('AttentIQ_Pro')) checks — no output buffers left open.is_premium → use_attention_data and variables isPremium → hasAttentionData throughout admin JS — naming now reflects data availability rather than a license state.attentiq_is_pro() function and all apply_filters('attentiq_pro_active') calls — pro plugin detection now uses the standard class_exists('AttentIQ_Pro') pattern throughout.attentiq_upgrade_url() function — returns the in-admin pricing page URL when the Pro plugin is installed, or the external upgrade page otherwise. All upgrade links now use this function instead of the ATTENTIQ_UPGRADE_URL constant directly.wp_add_inline_script() for WordPress.org compliance (no raw inline <script> tags).apply_filters() so the Pro plugin can cleanly suppress them — no conditional gating in the free plugin itself.<form> and <button> elements added to kses_admin_html() allowlist — previously stripped by wp_kses(), which caused the Pro plugin's license activation form to silently do nothing..pot translation file.[attentiq_heatmap] shortcode is present in a post with ads enabled — shortcodes are now stripped from content before slot scoring to prevent recursive calls.init so both free and pro plugins are fully loaded before handlers are registered.type="submit") — button now has explicit type="button".SKIM_SPEED being set to 3 px/s (any scrolling triggered skim mode, dumping all dwell time into an unused bucket). Threshold raised to 400 px/s and scroll speed now resets when the user stops scrolling.auto_insert_ads) now reads slot scores, revenue, and best slot directly from cached post meta — no DB queries or recalculations on every page load.ATTENTIQ_UPGRADE_URL constant — all upgrade links in the plugin use this single constant, making it easy to update the target URL in one place.wp_kses_post().$svg_desktop, $svg_mobile) now escaped with wp_kses() throughout the Post Insights template.attentiq_license_page_html filter — license info, billing details, cancel subscription, and plugin sidebar all render from the pro plugin when active.?> tags visible on Post Insights page after escaping pass.wp_nonce_url().wp_localize_script.$score_bar, $heat_bar, forecast icon) with wp_kses_post() / wp_kses().$_GET['sort'] code from the dashboard — the JS already uses attentIQAdmin.defaultSort from wp_localize_script.?> tags left by escaping pass were visible on screen.