For a truly full solution you need to have all the users to have an account (or create one when marking as read) and you associate in the DB the user with the posts that he read and then style each link appropriately. To implement this you can look for inspiration in plugins that add a review or other like/ranking functionality. The problem with this approach is that users need to have some other incentive to login otherwise they will probably not use the functionality.
The less robust option (but easier to implement) is to store the list of the posts read in long term cookie, and style the links based on the values in the cookie. The problem with this approach is that the cookies are local to a specific device and a user might end up with fragmented “reading list” between all the devices that he uses
Related Posts:
- Passing current cookies in wp_remote_get to get Draft Post Preview
- Two posts are loaded instead of one?
- Find the post an attachment is attached to
- Skipping first 3 posts in wp query
- Verify if tag is used on posts
- getting video dimensions
- Display posts for a single post format
- How can you make sure authors’ posts are longer than 250 words?
- Post from front-end only by logged in users, form posts as “posted by:
- Overview with latest edited posts and pages
- WordPress Child Category Display All Posts
- deleting terms programmatically
- Sanitizing `wp_editor();` Values for Database, Edit, and Display
- Side by side blog posts that are tied together
- Changing my permalink structure – will new layout conflict with existing page?
- posts_per_page doesnt work
- Sorting posts according to the term they belong to
- if I create ‘front-page.php’, then how do I link to post index?
- Will post_exists work for draft posts?
- How can I get a post field value using javascript?
- Count total number across post types
- Check to see if post is live before displaying the content
- slideshow is not showing in a post call with ajax
- Ajax posts filter by date, comments, top views, top likes
- Copying and pasting emoji in a wordpress post
- How to automatically apply a category based on the post title?
- How to disable edit post option 12 hours after post publication for contributors?
- Get latest posts from WordPress site without header, menu and sidebar
- How can I schedule a PAGE to go live at a future date/time?
- Counter of posts ever posted – even deleted ones
- How to delete all the content of a wordpress site without deleting the Post and pages?
- Getting post content without the navigation
- Most liked page not displaying posts
- WordPress’ ALL post count info on its dashboard does not match phpMyAdmin’s ALL post count!
- Update a users role based on number of posts published
- Style Differently Edited Posts
- How can I make a post that belongs to a category or have specific tags, display different from the other single posts?
- 404 on paginated blog pages
- Blog page pagination is not working after using the offset argument
- Search results posts_orderby and ID
- WordPress Automatic Filename Changer
- How to add tags (custom taxonomy) to post class css?
- How to save meta checkbox WordPress
- Sidebar show posts by current category also in single post
- Category Redirects to homepage [closed]
- SQL Command for restoring trashed comments
- Loop don’t work within single.php page
- Upload attachment from external site
- WordPress.com post editor replacement
- WordPress Menu options in the Admin: Posts for the dropdowns
- What is $post->pre_post_content exactly?
- Custom permalink for each post
- Related Posts: Changing Function For Posts Per Page
- Import custom database into wp and keep the post id
- Retrieve a specific post’s featured image and show on a different page
- How to split authors?
- Display Related Posts by Category in Random
- WordPress wp_editor to post and edit
- How to display Post title By ID and its Thumb Contents
- Jumbled writing under a post
- Is there a way to define the $post var outside the loop?
- How do I keep raw HTML in my RSS feed and not lose my paragraph breaks?
- Hook save_post_cpt not triggered when custom fields are modified
- Show only posts with titles/permalinks that do not contain certain words
- Featured Images most often doesnt appear
- index.php not getting blog posts anymore
- Why is WordPress showing a blank excerpt for just one of my posts?
- Is there a way to know when a page has been updated and do some action only once?
- Get category slug of the Parent category of a Product
- How to limit wordpress the_excerpt() dynamically
- Reuse old post ID for new post after deleting post
- Contact Form 7 Shortcode not recognized inside another shortcode
- WordPress Pods Custom Post Type – separate Media Upload folder for each custom Post Types
- Put page on Archived statut after end of publication date
- Excluding tag Link from html tags in Post content
- Blog Post slider not working
- Display new posts categories in separated divs
- Add in the url attachment loop the wp_link_pages of the post
- Couldn’t view individual post that were in my website
- Point to a page when there is no results
- Add row after three columns
- update post category in a new table on frequent change of category
- Edit Posts Page but not category specific pages?
- Show posts between two Custom Fields date
- How to display an icon when a new post is published and then remove it when a specific time past?
- How can add metabox for post of specific category before save post and after save post [duplicate]
- Posts page template: How can I edit the markup for this?
- Pagination working locally but not on live site
- Displaying different posts Via wp_list_categories()
- Which hooks are essential for post templates?
- Should new posts already have tags?
- Error 404 blog/page/2/
- WordPress limit post that subscriber can create
- Is there any point to using wp_unique_post_slug?
- Do I need to create a multisite for querying posts from multiple WordPress sites?
- Show Next/Previous without Link
- Hindi content automatically converting to unreadable language?
- I can’t edit my posts
- Filters do not work when there are multiple (one works)
- WordPress Ajax load doesn’t work