Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To show returning visitors which WordPress posts they have not read, use a per-visitor unread-post marker such as the Mark New Posts plugin. It tracks read state with cookies and can label unread posts; a standard Latest Posts block only lists recent content, while sticky posts pin selected announcements for everyone.

Choose the approach that matches what you need

Option Per-visitor unread tracking Setup and state Best fit
Mark New Posts plugin Yes. Highlights unread posts for each visitor. Plugin setup; uses cookies and does not require authorization. Most sites that want a ready-made “New” marker.
Custom code with WPCode Yes, using a last-visit cookie and publication timestamps. Requires adding PHP and CSS snippets and checking theme/plugin compatibility. Site owners who need control over the badge and its placement.
Latest Posts block No. It shows recent posts, not each visitor’s read state. Built into WordPress; select the number of posts and display options. A simple, automatically updated recent-post list.
Sticky posts No. The same selected posts are pinned for all visitors. Mark a post sticky; it remains pinned while that setting is enabled. One or two important announcements that should stay prominent.

Use the Mark New Posts plugin

The WordPress.com directory describes Mark New Posts as a way to highlight unread posts with cookies and without authorization. Its marker options include a “New” text label and an orange circle, and administrators can choose when a post counts as read: when it is opened, when it is listed, or after any page is opened. The WordPress.org listing also describes controls for how many days a marker remains and whether existing posts appear new to first-time visitors.

  1. In your WordPress dashboard, open Plugins and select Add New Plugin.
  2. Search for Mark New Posts, then verify the plugin listing and current compatibility details before installing. Plugin versions and compatibility can change.
  3. Install and activate the plugin, then open its settings from the dashboard. The exact menu location and labels can vary by plugin version.
  4. Choose a marker style and decide when a visitor’s post becomes read. For a clear “what’s new since I last visited” experience, marking a post read when it is opened avoids clearing other unread labels simply because the visitor viewed a listing or another page.
  5. Set the marker duration and decide whether first-time visitors should see existing posts as new. Preview the result on a listing page and on an individual post.

The plugin also documents the theme functions mnp_is_new_post() and mnp_new_posts_count() for themes that need to check whether a post is new or retrieve the count of new posts. Use those only if your theme implementation calls for them.

Build a custom badge with WPCode

A custom implementation is an alternative when you want to control the marker’s HTML and styling. WPBeginner’s July 15, 2025 tutorial describes a PHP function that reads a lastvisit cookie, compares it with each post’s publication timestamp, and appends a <span class="new-article">New</span> badge when the post is newer. A separate CSS snippet styles the badge.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Follow the tutorial’s WPCode setup to add the PHP function that compares each post’s publication time with the visitor’s last-visit value.
  2. Add its CSS styling for the new-article class, adjusting the appearance to remain noticeable without distracting from post titles.
  3. Configure the read-state behavior so opening one post marks that post read, rather than clearing every badge. This preserves labels on other posts the visitor has not opened.
  4. Test logged-in and logged-out views, post listings, individual posts, and the site’s caching behavior. Cookie-based state can be affected by browser settings, cache configuration, and other plugins.

Custom code gives you more control, but it also leaves responsibility for testing and maintenance with the site owner. If your theme or another plugin changes how post titles are rendered, confirm that the badge still appears in the intended location.

Use WordPress’s built-in recent-post options when unread status is unnecessary

Latest Posts block

WordPress documentation says, “The latest posts block displays your most recent posts, making it easy for your readers to see what’s new on your blog.” The block can show a selected number of posts, excerpts or full content, author and date metadata, featured images, and sorting choices. It does not document per-visitor unread tracking, so it cannot tell one visitor which posts they have already opened.

Sticky posts

Sticky posts are pinned above other posts while they remain marked sticky, according to WordPress.com support. They make a chosen update easy to find, but every visitor sees the same pinned post; this is an editorial prominence tool rather than a read/unread system.

Choose a sensible marker duration and read rule

A practical starting point from WPBeginner’s tutorial is to keep a post marked new for about seven days or until the visitor opens it. Treat that as a configurable starting point, not a proven universal optimum: the right window depends on how often you publish and how frequently readers return. A site posting several times each day may need a shorter window than one publishing weekly.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Mark read on opening: Keeps other unread posts marked after a visitor reads one post.
  • Mark read when listed: Can clear a marker before a visitor actually reads the post, so it is less suitable when “unread” means unopened.
  • Mark read after any page opens: May remove markers broadly rather than tracking each post independently; check the plugin’s behavior against your intended meaning of “read.”
  • Keep the badge modest: A short text label or subtle color treatment is easier to scan than a persistent animation.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Account for cookies, logins, and caching

Cookie-based tracking follows a browser, not necessarily a person. A visitor who changes browsers or clears cookies may not retain the same read state. On a membership site, comparing publication dates with a stored last-login value can tie the decision to the account instead, avoiding loss of state when someone changes browsers. That approach requires account-aware implementation and should be tested with the site’s authentication and caching setup.

Whichever method you choose, test as a returning visitor in a clean browser session and check how the marker behaves after opening one post, revisiting the listing, and returning after the selected time window. A cache that serves the same generated listing to everyone may interfere with a marker intended to vary by visitor.

What the available evidence can and cannot tell you

The plugin and WordPress feature descriptions establish how these options are intended to work, but they do not establish an engagement lift, conversion improvement, or universally best marker duration. Choose based on the read-state behavior and maintenance burden your site needs, then evaluate the result with your own audience rather than assuming a badge will improve performance.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.