
內容簡介
Re:Likes 讓讀者可以對特定的文字進行反應,而不僅僅是對整篇文章進行評價。讀者可以選擇句子、段落或評論的一部分,並標記為喜歡或不喜歡,提升互動性與參與感。
【主要功能】
• 針對特定文字段落進行反應
• 提供熱圖顯示讀者反應熱點
• 支援登入用戶與匿名讀者
• 可自訂顏色與反應控制
• 反應數據不儲存於文章元資料
外掛標籤
開發者團隊
原文外掛簡介
Re:Likes lets readers react to the exact words that stand out to them – not just to a post as a whole.
Readers can select a sentence, paragraph, or part of a comment and mark it with a Like or Dislike. Their reactions stay attached to the selected passage, so they can return later, add new reactions, remove part of an existing reaction, or clear their reactions.
Readers can also switch to an aggregate heatmap that reveals which parts of the content received the strongest response from the wider audience. This makes it possible to see where readers agreed, disagreed, or felt most engaged without interrupting the reading experience.
Re:Likes works with:
Posts and pages.
Public custom post types.
Approved comments.
Multiple selectable content areas on the same page.
Logged-in WordPress users and anonymous readers.
Personal reaction views and aggregate heatmaps.
Reactions are saved as precise text ranges rather than as post metadata. They remain anchored to their passages across common layout changes, including responsive wrapping, resizing, rotation, and font loading.
The plugin includes configurable colors, reaction controls, heatmap appearance, reader features, touch-control placement, content selectors, comment selectors, and theme integration options.
Storage
Re:Likes creates three tables using the site’s WordPress table prefix:
relikes_documents stores selectable-instance revisions.
relikes_subjects stores one current snapshot identity per reader and document.
relikes_runs stores normalized like/dislike offset ranges.
Reaction data is not stored in post meta and no external database is required. Tables and settings are retained on uninstall unless the deletion option is explicitly enabled first.
Identity and privacy
Logged-in identity is always derived by WordPress on the server; a browser-provided user ID is not trusted as authentication. Anonymous readers receive a signed random token. Anonymous identities are pseudonymous and are expired by a daily cleanup task.
IP addresses are used transiently to enforce coarse request limits and are not stored in reaction tables. Anonymous users can create a new identity by clearing browser storage, so rate limiting reduces abuse but cannot guarantee one vote per human.
Theme integration
Default selectors cover common classic and block themes. Custom markup can configure content and comment selectors. When more than one post-content element matches, give each one a stable key and add it to the Allowed instance keys setting, for example:
Re:Likes does not change post typography or layout. Its compact tool row is exposed through .relikes-wp-tools, .relikes-wp-switch, and .relikes-wp-clear for theme overrides. In theme-controlled mode, set --relikes-control-accent, --relikes-control-background, --relikes-control-border, --relikes-control-text, --relikes-control-active-text, --relikes-control-clear, and --relikes-control-radius on .relikes-wp-tools.
Development notes
The JavaScript core remains backend-agnostic. The WordPress adapter supplies its REST URL, routes, document ID, optional logged-in user ID, nonce header, and request behavior when calling Relikes.attach().
The first release uses lazy per-surface heatmap requests rather than a batch endpoint. This keeps the protocol small while avoiding requests for content far outside the viewport.
Source code
The operational Clean Selection and Re:Likes browser cores are minified with Terser. Their complete readable sources are included beside them as assets/js/cleanselection.js and assets/js/relikes.js. Project source and build tooling are published at https://github.com/reinventinglikes/relikes.
