Mô tả
Init Reading Position nâng cao trải nghiệm đọc bằng cách ghi nhớ người truy cập đã đọc đến đâu trong một bài viết.
Khi họ quay lại, nó sẽ tự động cuộn về nơi họ đã dừng lại.
Hoàn hảo cho:
- Bài viết dài
- Hướng dẫn
- Tiểu thuyết mạng hoặc manga
- Bất kỳ nội dung nào mà người đọc thường dừng lại và quay lại sau
Plugin này là một phần của Init Plugin Suite — bộ sưu tập các công cụ WordPress tối giản, nhanh, và hướng tới lập trình viên.
Kho GitHub: https://github.com/brokensmile2103/init-reading-position
Tính năng
- Lưu vị trí cuộn bằng localStorage (khách) hoặc một bảng cơ sở dữ liệu riêng (người dùng đã đăng nhập)
- Đồng bộ thông minh theo thiết bị: ghi nhớ vị trí riêng biệt cho PC, Di động, và Máy tính bảng
- Tự động cuộn về khi tải trang
- Nhẹ, không jQuery, không cồng kềnh
- Dễ mở rộng qua filter
- Trang cài đặt tùy chọn để kiểm soát loại bài viết nào được bật
- Tự động dọn dẹp dữ liệu mồ côi khi một bài viết hoặc tài khoản người dùng bị xóa vĩnh viễn
- Tính năng dọn dẹp tùy chọn, tắt theo mặc định, để loại bỏ các vị trí đọc bị bỏ dở hoặc quá cũ trên các site lớn, hoạt động lâu dài
Giấy phép
Plugin này được cấp phép theo GPLv2 hoặc phiên bản mới hơn.
Bạn có toàn quyền sử dụng, chỉnh sửa, và phân phối lại theo cùng giấy phép.
Ảnh màn hình

.entry-content) để giới hạn nơi theo dõi tiến độ đọc.Cài đặt
- Tải thư mục plugin lên
/wp-content/plugins/hoặc cài đặt qua Plugins Add New. - Kích hoạt plugin.
- Vào Settings Reading Position và chọn loại bài viết nào nên hỗ trợ tính năng này.
Hỏi đáp
-
Plugin có đồng bộ giữa các thiết bị không?
-
Có. Đối với người dùng đã đăng nhập, vị trí cuộn được lưu trong một bảng cơ sở dữ liệu riêng, lưu riêng biệt cho từng loại thiết bị (PC, Di động, Máy tính bảng).
-
Plugin có hoạt động với loại bài viết tùy chỉnh không?
-
Có. Bạn có thể bật nó cho bất kỳ loại bài viết công khai nào trong trang cài đặt plugin.
-
Plugin có làm chậm site của tôi không?
-
Không. Nó chỉ chạy một script JS nhỏ trên các trang đơn được bật và lưu trữ dữ liệu hiệu quả trong một bảng riêng với các truy vấn có chỉ mục.
-
Plugin có tự dọn dẹp khi một bài viết hoặc người dùng bị xóa không?
-
Có. Khi một bài viết bị xóa vĩnh viễn, hoặc một tài khoản người dùng bị xóa vĩnh viễn, mọi vị trí đọc trỏ đến nó sẽ tự động bị xóa ở ngầm — không còn dòng dữ liệu sót lại cho nội dung hay tài khoản không còn tồn tại.
-
Plugin có tự động xóa tiến độ của người đọc không?
-
Không, trừ khi bạn bật nó lên. Có hai tùy chọn dọn dẹp trong Settings Reading Position, cả hai đều tắt theo mặc định:
- Dọn dẹp tiến độ bị bỏ dở — chỉ xóa một vị trí đã lưu khi nó không được động đến trong một thời gian dài (có thể cấu hình, mặc định 365 ngày) và tiến độ trên đó rất thấp (có thể cấu hình, mặc định dưới 10%). Một vị trí có tiến độ cao luôn được giữ lại, dù cũ đến đâu, vì người đọc vẫn có thể quay lại để đọc tiếp.
- Dọn dẹp tài khoản không hoạt động — xóa toàn bộ vị trí đã lưu của một tài khoản khi không có vị trí đọc nào của nó, trên mọi bài viết, được cập nhật trong một thời gian dài (có thể cấu hình, mặc định 730 ngày).
Cả hai đều chạy theo lô nhỏ ở ngầm (qua WP-Cron) nên không bao giờ khóa cơ sở dữ liệu, và cả hai đều dừng ngay lập tức nếu bạn tắt lại.
Đánh giá
Người đóng góp & Lập trình viên
“Init Reading Position – Remember, Return, Continue” là mã nguồn mở. Những người sau đã đóng góp vào plugin này.
Những người đóng góp“Init Reading Position – Remember, Return, Continue” đã được dịch qua 1 ngôn ngữ. Cảm ơn những người tham gia dịch vì đóng góp của họ.
Dịch “Init Reading Position – Remember, Return, Continue” sang ngôn ngữ của bạn.
Muốn tham gia phát triển?
Duyệt code, check out SVN repository, hoặc theo dõi nhật ký phát triển qua RSS.
Nhật ký thay đổi
1.10 – 28 Tháng 9, 2026
- Sửa lỗi: Quá trình chuyển đổi user-meta một lần sử dụng mẫu
LIKEchưa được escape —_là ký tự đại diện (wildcard) trong SQL, do đó các meta key thuộc plugin khác (ví dụ:xinit_rp_settings) có thể bị khớp và xóa nhầm. Các mẫu giờ đây đã được escape bằng$wpdb->esc_like(), giúp MySQL sử dụng indexmeta_keythay vì quét toàn bộ bảng usermeta trong mỗi đợt - Sửa lỗi: Xóa vĩnh viễn bài viết (hoặc người dùng) có số lượng lớn vị trí đã lưu trước đây tải tất cả các hàng liên quan vào bộ nhớ PHP cùng lúc (166 MB cho 300.000 hàng khi thử nghiệm), có thể vượt quá giới hạn bộ nhớ giữa chừng. Các hàng giờ đây được xóa theo từng đợt giới hạn 1.000 hàng (khoảng 1 MB bất kể số lượng); tác vụ dọn dẹp “tài khoản không hoạt động” cũng dùng chung cơ chế này
- Sửa lỗi: Việc đọc dữ liệu hàng loạt có thể trả về dữ liệu không đầy đủ khi cùng một bài viết được yêu cầu trước cho một nhóm thiết bị; bộ nhớ đệm dùng chung của bài viết giờ đây sẽ tự bổ sung các thiết bị còn thiếu thay vì tin tưởng vào dữ liệu được cache đầu tiên
- Sửa lỗi: Trên các trang web sử dụng bộ nhớ đệm đối tượng (persistent object cache), nhịp tín hiệu (heartbeat) chỉ lưu vào cache có thể bị mất khi tải lại trang nếu cache của bài viết đã hết hạn trong phiên đọc kéo dài; vị trí mới hơn trong cache giờ đây được ưu tiên hơn hàng cũ trong CSDL
- Sửa lỗi: Người đọc dừng lại ở gần cuối bài viết liên tục gửi yêu cầu “xóa vị trí” mỗi khi tạm dừng cuộn; giờ đây yêu cầu chỉ gửi một lần cho đến khi tiến trình mới được lưu
- Sửa lỗi: Script phía frontend bị dừng hoàn toàn khi không khả dụng
localStorage(bộ nhớ bị chặn, một số chế độ duyệt web riêng tư), và không hoạt động khi tải sau sự kiệnDOMContentLoaded(ví dụ: do các plugin tối ưu hóa hoãn JavaScript) - Sửa lỗi: Trang cài đặt hiển thị “Bài viết” là đã bật sau khi bỏ chọn tất cả loại bài viết (post types), trong khi phía frontend vẫn xử lý chính xác là đã tắt
- Sửa lỗi: Bật tùy chọn dọn dẹp lần đầu tiên giờ đây sẽ kích hoạt tác vụ ngay lập tức, giống như khi thay đổi ở các lần sau
- Sửa lỗi: Thao tác dọn dẹp “tiến trình bị bỏ dở” giờ đây xóa các vị trí lưu trong cache sau khi xóa các hàng thay vì trước đó, khắc phục rủi ro vị trí đã xóa bị lưu cache lại
- Sửa lỗi: Thao tác gỡ cài đặt giờ đây sẽ xóa thêm tùy chọn nội bộ
irp_index_migration_done - Cải tiến: Việc xóa một vị trí đã lưu không còn chạy các truy vấn dọn dẹp user-meta cũ sau khi quá trình chuyển đổi hoàn tất
- Cải tiến: Các truy vấn đọc CSDL chỉ chọn các cột cần dùng; việc kiểm tra hoàn tất chuyển đổi dữ liệu sử dụng
LIMIT 1thay vì đếm toàn bộ các hàng còn lại - Cải tiến: Mã nguồn tuân thủ Tiêu chuẩn viết code của WordPress (WordPress Coding Standards)
- Không có thay đổi gây lỗi (breaking changes) — hooks, filters, REST API, cấu trúc CSDL, khóa cache và khóa localStorage đều giữ nguyên
1.9 – 10 tháng 9, 2026
- Đã thêm: Vị trí đọc giờ tự động bị xóa khi bài viết hoặc tài khoản người dùng của nó bị xóa vĩnh viễn — trước đây các dòng này bị bỏ lại vô thời hạn, âm thầm trỏ đến nội dung hoặc tài khoản không còn tồn tại
- Đã thêm: Cài đặt tùy chọn “Dọn dẹp tiến độ bị bỏ dở” (tắt theo mặc định) — định kỳ xóa một vị trí đã lưu chỉ khi nó vừa cũ hơn một số ngày có thể cấu hình (mặc định 365) vừa có tiến độ dưới một phần trăm có thể cấu hình (mặc định 10%); các vị trí có tiến độ đáng kể không bao giờ bị động đến, dù cũ đến đâu
- Đã thêm: Cài đặt tùy chọn “Dọn dẹp tài khoản không hoạt động” (tắt theo mặc định) — định kỳ xóa mọi vị trí đã lưu thuộc về một tài khoản khi không có vị trí đọc nào của nó, trên bất kỳ bài viết nào, được cập nhật trong một số ngày có thể cấu hình (mặc định 730)
- Cải thiện: Cả hai tác vụ dọn dẹp đều chạy theo lô nhỏ tự giới hạn tốc độ qua WP-Cron, duyệt bảng theo khóa chính (hoặc theo tiền tố chỉ mục
user_post_devicehiện có) — không cần chỉ mục cơ sở dữ liệu mới, không có truy vấn chạy lâu, và không ảnh hưởng đến các site để cả hai tùy chọn ở trạng thái tắt - Cải thiện: Bật một tùy chọn dọn dẹp từ trang cài đặt giờ khởi động tác vụ tương ứng ngay lập tức thay vì chờ lần kiểm tra đã lên lịch tiếp theo
- Không có thay đổi phá vỡ tương thích — REST API, schema cơ sở dữ liệu, khóa localStorage, và hành vi frontend vẫn tương thích hoàn toàn; cả hai tùy chọn dọn dẹp mới đều được phát hành ở trạng thái tắt và không thay đổi gì trừ khi được bật rõ ràng
1.8 – 2 tháng 8, 2026
- Đã sửa lỗi: Script frontend trước đây có thể không được enqueue trên mọi trang của site bất cứ khi nào tùy chọn kiểm soát loại bài viết được bật chưa từng được lưu (bản cài mới, hoặc các site mà quản trị viên chưa từng mở Cài đặt) — một giá trị mặc định không khớp khiến danh sách loại bài viết được bật trở thành rỗng thay vì giá trị mặc định
postdự kiến - Đã sửa lỗi: Việc lưu vị trí đọc trước đây có thể âm thầm thất bại không liên tục (“lúc được lúc không”) — script trước đây đánh dấu một vị trí là đã đồng bộ ngay khi yêu cầu lưu được gửi, mà không chờ xác nhận từ máy chủ; kết hợp với việc giới hạn tần suất phía máy chủ trên các site có object cache bền vững (Redis/Memcached), một số lượt lưu bị âm thầm mất trong khi script tin rằng chúng đã thành công, dẫn đến vị trí tiếp tục cũ hoặc sai
- Đã thêm: Lượt lưu cuối cùng gửi khi một tab bị ẩn/đóng giờ bỏ qua giới hạn tần suất phía máy chủ và luôn ghi trực tiếp vào cơ sở dữ liệu — đây là cơ hội cuối cùng để lưu tiến độ chưa lưu, nên nó không còn bị âm thầm giới hạn tốc độ hay trì hoãn nữa
- Cải thiện: Các yêu cầu lưu đến REST API giờ trả về trạng thái
throttledrõ ràng thay vì “success” giả khi bị giới hạn tần suất, để script có thể thử lại đúng cách thay vì cho rằng vị trí đã được lưu - Đã thêm: Trên các site có object cache bền vững, các lượt lưu heartbeat (đồng bộ mạng lưới an toàn định kỳ được gửi khi người đọc tiếp tục cuộn về phía trước, khác với việc đọc lại thực sự đảo chiều hoặc lượt lưu cuối cùng) giờ được ghi vào bộ nhớ đệm thay vì cơ sở dữ liệu. Điều này giảm đáng kể tải ghi cơ sở dữ liệu liên tục trên các site đồng thời cao — ví dụ một theme manga/webtoon với hàng chục nghìn người dùng đã đăng nhập đang đọc cùng lúc — trong khi tải lại trang vẫn tiếp tục từ đúng vị trí, vì việc đọc ưu tiên bộ nhớ đệm. Tiến độ luôn được nâng cấp thành một lượt ghi cơ sở dữ liệu thực, bền vững ở lần checkpoint có ý nghĩa tiếp theo (đảo chiều đọc lại hoặc đóng tab). Các site không có object cache bền vững không bị ảnh hưởng và tiếp tục ghi trực tiếp vào cơ sở dữ liệu, như trước
- Đã thêm: Khoảng thời gian heartbeat (mặc định 30 giây) giờ có thể tùy chỉnh qua
init_plugin_suite_reading_position_heartbeat, cho phép các site nhiều lưu lượng truy cập nới rộng nhịp mạng lưới an toàn để giảm thêm khối lượng yêu cầu vào giờ cao điểm mà không cần chỉnh sửa tệp plugin - Không có thay đổi phá vỡ tương thích — REST API, schema cơ sở dữ liệu, khóa localStorage, và hành vi frontend vẫn tương thích hoàn toàn
1.7 – 1 tháng 8, 2026
- Đã thêm: Engine đồng bộ dựa trên hành vi thay thế bộ đếm giờ cố định 5 giây — giờ script chỉ liên hệ với máy chủ ở các checkpoint có ý nghĩa (một lượt đảo chiều đi lên thực sự khi đọc lại, một heartbeat thỉnh thoảng khi liên tục đọc tiếp về phía trước, hoặc ngay trước khi tab bị ẩn/đóng), giảm đáng kể số yêu cầu mạng cho trường hợp phổ biến là người đọc cuộn thẳng qua một bài viết
- Cải thiện: Vị trí cuộn xa nhất từng đạt được mới là thứ được lưu, không phải vị trí hiện tại — việc cuộn ngược lên để đọc lại một đoạn không bao giờ làm lùi lại điểm lưu/tiếp tục, cho cả người dùng đã đăng nhập lẫn khách (localStorage)
- Cải thiện: Trình lắng nghe cuộn và thay đổi kích thước giờ được đăng ký ở chế độ passive — trình duyệt không còn chờ trình xử lý trước khi cuộn, loại bỏ một nguồn gây giật trên các trang cuộn nhiều
- Cải thiện: Chiều cao cuộn toàn trang giờ được lưu đệm cùng với ranh giới phần tử phạm vi thay vì được đọc ở mỗi lần cuộn debounce — tránh việc đọc buộc tính lại bố cục lặp lại; được làm mới khi thay đổi kích thước và một lần sau khi tải xong toàn trang
- Đã thêm: Lưu cuối cùng cố gắng hết sức khi ẩn/đóng tab (
pagehide/visibilitychange) dùngnavigator.sendBeaconkhi có sẵn — vị trí đã biết cuối cùng không còn bị mất khi người đọc đóng tab giữa hai checkpoint đồng bộ - Cải thiện: Việc tra cứu vị trí đọc giờ bỏ qua hoàn toàn dự phòng user_meta cũ khi việc di chuyển dữ liệu user_meta cơ sở dữ liệu được xác nhận hoàn tất — loại bỏ 1-2 lượt tra cứu không cần thiết cho mỗi yêu cầu chưa lưu đệm trên phần lớn các site
- Cải thiện: Đã loại bỏ chỉ mục cơ sở dữ liệu
user_iddư thừa — nó trùng lặp tiền tố bên trái của khóa duy nhấtuser_post_devicehiện có, nên loại bỏ nó giảm chi phí bảo trì chỉ mục không cần thiết ở mỗi lượt ghi mà không ảnh hưởng đến hiệu năng đọc. Các site hiện có sẽ được dọn dẹp tự động và an toàn, đúng một lần, khi nâng cấp - Không có thay đổi phá vỡ tương thích — REST API, schema cơ sở dữ liệu (ngoại trừ việc loại bỏ chỉ mục dư thừa ở trên), khóa localStorage, và hành vi frontend vẫn tương thích hoàn toàn
1.6 – 23 tháng 4, 2026
- Cải thiện: Việc lấy vị trí đọc giờ được xử lý qua một truy vấn hàng loạt duy nhất thay vì nhiều lượt tra cứu theo từng thiết bị — giảm truy vấn cơ sở dữ liệu và cải thiện hiệu năng cho người dùng đã đăng nhập
- Đã thêm: Lớp bộ nhớ đệm hàng loạt cho vị trí đọc đa thiết bị với khóa bộ nhớ đệm xác định (
pc_mobile_tablet) — đảm bảo trúng bộ nhớ đệm nhất quán và đơn giản hóa logic vô hiệu hóa - Cải thiện: Việc vô hiệu hóa bộ nhớ đệm giờ xóa cả mục bộ nhớ đệm đơn thiết bị lẫn hàng loạt — ngăn dữ liệu cũ khi người dùng tiếp tục đọc qua nhiều phiên
- Cải thiện: Luồng dữ liệu được tái cấu trúc để trả về mọi vị trí thiết bị (
pc,mobile,tablet) trong một payload duy nhất — frontend giờ chọn đúng khe thiết bị một cách động - Đã sửa lỗi: Việc tạo khóa bộ nhớ đệm không nhất quán (khóa dựa trên md5 trước đây) có thể dẫn đến các mục bộ nhớ đệm cũ hoặc không bị vô hiệu hóa
- Đã sửa lỗi: Cảnh báo PHP tiềm ẩn khi
savedPositionskhông được xác định cho người dùng khách — giờ luôn được khởi tạo với giá trị mặc định - Cải thiện: Dọn dẹp mã nội bộ và tối ưu nhỏ để dễ bảo trì và nhất quán hơn
- Không có thay đổi phá vỡ tương thích — REST API, schema cơ sở dữ liệu, khóa localStorage, và hành vi frontend vẫn tương thích hoàn toàn
1.5 – 23 tháng 4, 2026
- Cải thiện: Việc phát hiện thiết bị giờ được xử lý hoàn toàn bằng JavaScript — PHP không còn dò UA phía máy chủ, loại bỏ sự không khớp giữa thiết bị phát hiện lúc tải trang so với lúc lưu
- Cải thiện: Việc tra cứu vị trí cuộn đã lưu giờ thử cả ba khe thiết bị (pc, mobile, tablet) theo thứ tự, nên vị trí đúng luôn được khôi phục bất kể người dùng lần cuối dùng thiết bị nào
- Cải thiện: Ranh giới phần tử phạm vi (
absTop,absBottom) giờ được lưu đệm sau DOMContentLoaded và làm mới khi thay đổi kích thước cửa sổ —getBoundingClientRect()không còn được gọi ở mỗi sự kiện cuộn - Cải thiện: Giới hạn tần suất REST API đã chuyển từ dựa trên transient sang dựa trên
wp_cache— loại bỏ việc ghi transient vàowp_optionstrên các site nhiều lưu lượng truy cập; hoạt động tốt nhất với object cache (Redis/Memcached), giảm cấp mượt mà nếu không có - Đã sửa lỗi:
autoClearOnEndkhông có bộ chọn CSS được cấu hình trước đây không bao giờ kích hoạt việc xóa cuối nội dung; giờ chuyển đúng cách sang phát hiện cuối trang trong trường hợp đó - Không có thay đổi phá vỡ tương thích — REST API, khóa localStorage, và mọi cài đặt hiện có vẫn tương thích hoàn toàn
1.4 – 21 tháng 4, 2026
- Tái cấu trúc: Việc di chuyển dữ liệu giờ chạy qua một sự kiện WP-Cron tự lên lịch thay vì admin_init
- Đã thêm: Tự động lên lịch lại mỗi 30 giây cho đến khi việc di chuyển dữ liệu hoàn tất
- Cải thiện: Đã loại bỏ sự phụ thuộc vào các yêu cầu quản trị cho việc xử lý ngầm
- Cải thiện: Đã thêm khóa để ngăn các lượt di chuyển dữ liệu chồng chéo
- Không có thay đổi phá vỡ tương thích
1.3 – 21 tháng 4, 2026
- Đã thêm: Chuyển từ lưu trữ user_meta sang một bảng cơ sở dữ liệu tùy chỉnh riêng cho vị trí đọc
- Đã thêm: Tự động di chuyển dữ liệu từ user_meta hiện có sang cấu trúc cơ sở dữ liệu mới (chạy an toàn ở ngầm)
- Đã thêm: Schema cơ sở dữ liệu được tối ưu với các khóa duy nhất (user_id, post_id, device) cho thao tác upsert hiệu quả
- Cải thiện: Hiệu năng đọc/ghi nhanh hơn và khả năng mở rộng tốt hơn cho các site lớn
- Cải thiện: Đã giảm tần suất yêu cầu API bằng cách thêm lớp giới hạn tốc độ bên trên debounce hiện có
- Cải thiện: Việc phát hiện thiết bị giờ dùng giá trị chữ thường đã chuẩn hóa (
pc,mobile,tablet) để nhất quán hoàn toàn phía backend - Cải thiện: Đã thêm xử lý an toàn cho các yêu cầu REST để tránh lỗi JavaScript khi có vấn đề mạng
- Hiệu năng: Đã giảm đáng kể tải máy chủ cho người dùng đã đăng nhập và cải thiện độ phản hồi tổng thể
- Tương thích ngược: Dữ liệu user_meta hiện có được di chuyển liền mạch, với hỗ trợ dự phòng trong quá trình chuyển đổi
- Không có thay đổi phá vỡ tương thích — REST API, khóa localStorage, và hành vi frontend vẫn tương thích hoàn toàn
1.2 – 12 tháng 11, 2025
- Đã thêm: Hỗ trợ nhiều bộ chọn CSS cách nhau bằng dấu phẩy (ví dụ
.entry-content, .post-content, #main) - Đã thêm: Tùy chọn “Tự động xóa vị trí đã lưu ở cuối nội dung” (bật theo mặc định)
- Cải thiện: Việc theo dõi cuộn giờ kích hoạt nếu người đọc ở trong bất kỳ khu vực bộ chọn nào đã cấu hình
- Cải thiện: Việc tính phần trăm ưu tiên bộ chọn trong phạm vi, chuyển sang toàn trang khi ở ngoài mọi bộ chọn
- Hành vi: Khi tự động xóa được bật, tiến độ được xóa ở cuối khu vực nội dung; khi tắt, nó chuyển sang xóa ở cuối trang
- Không có thay đổi phá vỡ tương thích — cài đặt hiện có, khóa localStorage, và cấu trúc user_meta vẫn tương thích
1.1 – 5 tháng 11, 2025
- Đã thêm: Tùy chọn Bộ chọn CSS — plugin giờ chỉ theo dõi tiến độ bên trong khu vực nội dung đã chọn (ví dụ
.entry-content) - Đã thêm: Chuỗi sẵn sàng i18n cho trường cài đặt mới (kèm bản dịch tiếng Anh + tiếng Việt)
- Cải thiện: Logic theo dõi vị trí cuộn — không còn lưu tiến độ khi người dùng cuộn ra ngoài khu vực nội dung đã chọn (ví dụ phần bình luận)
- Cải thiện: Hành vi dọn dẹp — tiến độ cuộn chỉ bị xóa khi đến cuối trang, không bao giờ dựa trên phạm vi bộ chọn
- Không có thay đổi phá vỡ tương thích — giữ nguyên khóa localStorage cũ và cấu trúc user meta
- Cập nhật: Giao diện/trải nghiệm trang cài đặt quản trị (chữ gợi ý thay vì bộ chọn mặc định)
1.0 – 20 tháng 5, 2025
- Phát hành lần đầu
- Lưu vị trí cuộn bằng localStorage (khách) và user meta (người dùng đã đăng nhập)
- Tự động cuộn về vị trí cuối cùng khi tải trang
- Lưu trữ theo từng thiết bị (PC, Di động, Máy tính bảng)
- Trang cài đặt để chọn loại bài viết
- Filter
init_plugin_suite_reading_position_delayđể điều chỉnh thời gian debounce
