Title: Init Reading Position – Remember, Return, Continue
Author: Init HTML
Published: <strong>2025 年 11 月 1 日</strong>
Last modified: 2026 年 5 月 17 日

---

搜尋外掛

![](https://ps.w.org/init-reading-position/assets/banner-772x250.png?rev=3387907)

![](https://ps.w.org/init-reading-position/assets/icon-256x256.png?rev=3387907)

# Init Reading Position – Remember, Return, Continue

 由 [Init HTML](https://profiles.wordpress.org/brokensmile2103-1/) 開發

[下載](https://downloads.wordpress.org/plugin/init-reading-position.1.6.1.zip)

 * [詳細資料](https://tw.wordpress.org/plugins/init-reading-position/#description)
 * [使用者評論](https://tw.wordpress.org/plugins/init-reading-position/#reviews)
 *  [安裝方式](https://tw.wordpress.org/plugins/init-reading-position/#installation)
 * [開發資訊](https://tw.wordpress.org/plugins/init-reading-position/#developers)

 [技術支援](https://wordpress.org/support/plugin/init-reading-position/)

## 外掛說明

Init Reading Position enhances the reading experience by remembering how far a visitor
has read on a post.
 When they return, it automatically scrolls back to where they
left off.

Perfect for:

 * Long-form articles
 * Tutorials or guides
 * Web novels or manga
 * Any content where readers often stop and come back later

This plugin is part of the [Init Plugin Suite](https://en.inithtml.com/init-plugin-suite-minimalist-powerful-and-free-wordpress-plugins/)—
a collection of minimalist, fast, and developer-focused tools for WordPress.

GitHub repository: [https://github.com/brokensmile2103/init-reading-position](https://github.com/brokensmile2103/init-reading-position)

**Features**

 * Saves scroll position using localStorage (guests) or a dedicated database table(
   logged-in users)
 * Smart device-based sync: remembers position separately for PC, Mobile, and Tablet
 * Automatically scrolls back on page load
 * Lightweight, no jQuery, no bloat
 * Easy to extend via filters
 * Optional settings page to control which post types are enabled

### License

This plugin is licensed under the GPLv2 or later.
 You are free to use, modify, 
and distribute it under the same license.

## 螢幕擷圖

[⌊Simple settings page — choose post types and optionally enter a CSS selector (
e.g. .entry-content) to limit where reading progress is tracked.⌉⌊Simple settings
page — choose post types and optionally enter a CSS selector (e.g. .entry-content)
to limit where reading progress is tracked.⌉[

Simple settings page — choose post types and optionally enter a CSS selector (e.
g. `.entry-content`) to limit where reading progress is tracked.

## 安裝方式

 1. Upload the plugin folder to `/wp-content/plugins/` or install via Plugins  Add 
    New.
 2. Activate the plugin.
 3. Go to **Settings  Reading Position** and choose which post types should support
    this feature.

## 常見問題集

### Does it sync across devices?

Yes. For logged-in users, scroll position is stored in a dedicated database table,
saved separately for each device type (PC, Mobile, Tablet).

### Will it work with custom post types?

Yes. You can enable it for any public post type in the plugin settings page.

### Will it slow down my site?

No. It only runs a small JS script on enabled single pages and stores data efficiently
in a dedicated table with indexed queries.

## 使用者評論

這個外掛目前沒有任何使用者評論。

## 參與者及開發者

以下人員參與了開源軟體〈Init Reading Position – Remember, Return, Continue〉的開發
相關工作。

參與者

 *   [ Init HTML ](https://profiles.wordpress.org/brokensmile2103-1/)

[將〈Init Reading Position – Remember, Return, Continue〉外掛本地化為台灣繁體中文版](https://translate.wordpress.org/projects/wp-plugins/init-reading-position)

### 對開發相關資訊感興趣？

任何人均可[瀏覽程式碼](https://plugins.trac.wordpress.org/browser/init-reading-position/)、
查看 [SVN 存放庫](https://plugins.svn.wordpress.org/init-reading-position/)，或透過
[RSS](https://plugins.trac.wordpress.org/log/init-reading-position/?limit=100&mode=stop_on_copy&format=rss)
訂閱[開發記錄](https://plugins.trac.wordpress.org/log/init-reading-position/)。

## 變更記錄

#### 1.6 – April 23, 2026

 * Improved: Reading position retrieval is now handled via a single bulk query instead
   of multiple per-device lookups — reduces database queries and improves performance
   for logged-in users
 * Added: Bulk cache layer for multi-device reading positions with a deterministic
   cache key (`pc_mobile_tablet`) — ensures consistent cache hits and simplifies
   invalidation logic
 * Improved: Cache invalidation now clears both single-device and bulk cache entries—
   prevents stale data when users continue reading across sessions
 * Improved: Data flow refactored to return all device positions (`pc`, `mobile`,`
   tablet`) in one payload — frontend now selects the correct device slot dynamically
 * Fixed: Inconsistent cache key generation (previous md5-based keys) that could
   lead to stale or non-invalidated cache entries
 * Fixed: Potential PHP notice when `savedPositions` was undefined for guest users—
   now always initialized with default values
 * Improved: Internal code cleanup and minor optimizations for better maintainability
   and consistency
 * No breaking changes — REST API, database schema, localStorage keys, and frontend
   behavior remain fully compatible

#### 1.5 – April 23, 2026

 * Improved: Device detection is now handled entirely by JavaScript — PHP no longer
   performs UA sniffing on the server side, eliminating mismatches between detected
   device on page load vs. save
 * Improved: Saved scroll position lookup now tries all three device slots (pc, 
   mobile, tablet) in order, so the correct position is always restored regardless
   of which device the user was last on
 * Improved: Scope element bounds (`absTop`, `absBottom`) are now cached after DOMContentLoaded
   and refreshed on window resize — `getBoundingClientRect()` is no longer called
   on every scroll event
 * Improved: REST API rate limiting switched from transient-based to `wp_cache`-
   based — eliminates transient writes to `wp_options` on high-traffic sites; works
   best with an object cache (Redis/Memcached), degrades gracefully without one
 * Fixed: `autoClearOnEnd` with no CSS selector configured would never trigger the
   end-of-content clear; now correctly falls back to page-bottom detection in that
   case
 * No breaking changes — REST API, localStorage keys, and all existing settings 
   remain fully compatible

#### 1.4 – April 21, 2026

 * Refactored: Migration now runs via a self-scheduling WP-Cron event instead of
   admin_init
 * Added: Automatic re-scheduling every 30 seconds until migration completes
 * Improved: Removed dependency on admin requests for background processing
 * Improved: Added locking to prevent overlapping migration runs
 * No breaking changes

#### 1.3 – April 21, 2026

 * Added: Switched from user_meta storage to a dedicated custom database table for
   reading positions
 * Added: Automatic migration from existing user_meta data to the new database structure(
   runs safely in the background)
 * Added: Optimized database schema with unique keys (user_id, post_id, device) 
   for efficient upsert operations
 * Improved: Faster read/write performance and better scalability for large sites
 * Improved: Reduced API request frequency by adding a throttle layer on top of 
   existing debounce
 * Improved: Device detection now uses normalized lowercase values (`pc`, `mobile`,`
   tablet`) for full backend consistency
 * Improved: Added fail-safe handling for REST requests to prevent JavaScript errors
   on network issues
 * Performance: Significantly reduced server load for logged-in users and improved
   overall responsiveness
 * Backward-compatible: Existing user_meta data is migrated seamlessly, with fallback
   support during transition
 * No breaking changes — REST API, localStorage keys, and frontend behavior remain
   fully compatible

#### 1.2 – November 12, 2025

 * Added: Support for multiple CSS selectors separated by commas (e.g. `.entry-content,.
   post-content, #main`)
 * Added: Option “Auto-clear saved position at content end” (enabled by default)
 * Improved: Scroll tracking now activates if the reader is inside _any_ of the 
   configured selector areas
 * Improved: Percent calculation prioritizes the selector in scope, falls back to
   whole page when outside all selectors
 * Behavior: When auto-clear is enabled, progress is cleared at the end of the content
   area; when disabled, it falls back to clearing at page end
 * Zero breaking changes — existing settings, localStorage keys, and user_meta structure
   remain compatible

#### 1.1 – November 5, 2025

 * Added: CSS Selector option — plugin now only tracks progress inside the selected
   content area (e.g. `.entry-content`)
 * Added: i18n ready strings for new settings field (English + Vietnamese translations
   included)
 * Improved: Scroll position tracking logic — no longer saves progress when user
   scrolls outside the selected content area (e.g. comments section)
 * Improved: Cleanup behavior — scroll progress is deleted only when reaching end
   of the page, never based on selector range
 * No breaking changes — keeps old localStorage keys and user meta structure
 * Updated: Admin settings page UI/UX (placeholder instead of default selector)

#### 1.0 – May 20, 2025

 * Initial release
 * Saves scroll position using localStorage (guests) and user meta (logged-in users)
 * Auto-scrolls back to last position on load
 * Per-device storage (PC, Mobile, Tablet)
 * Settings page to choose post types
 * Filter `init_plugin_suite_reading_position_delay` to adjust debounce time

## 中繼資料

 *  版本 **1.6.1**
 *  最後更新 **1 個月前**
 *  啟用安裝數 **60+**
 *  WordPress 版本需求 ** 5.5 或更新版本 **
 *  已測試相容的 WordPress 版本 **7.0**
 *  PHP 版本需求 ** 7.4 或更新版本 **
 *  語言
 * [English (US)](https://wordpress.org/plugins/init-reading-position/)
 * 標籤:
 * [reading](https://tw.wordpress.org/plugins/tags/reading/)[reading progress](https://tw.wordpress.org/plugins/tags/reading-progress/)
   [scroll](https://tw.wordpress.org/plugins/tags/scroll/)
 *  [進階檢視](https://tw.wordpress.org/plugins/init-reading-position/advanced/)

## 評分

這個項目尚無任何評論記錄。

[Your review](https://wordpress.org/support/plugin/init-reading-position/reviews/#new-post)

[查看全部使用者評論](https://wordpress.org/support/plugin/init-reading-position/reviews/)

## 參與者

 *   [ Init HTML ](https://profiles.wordpress.org/brokensmile2103-1/)

## 技術支援

使用者可在技術支援論壇提出意見反應或使用問題。

 [檢視技術支援論壇](https://wordpress.org/support/plugin/init-reading-position/)