This plugin hasn’t been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Read and Understood


Read-and-Understood is a solution to the “I didn’t get the memo” problem.

The Read and Understood (RnU) WordPress plugin offers readers the opportunity to record
an acknowledgement that they have read a specific posting.

You can visit us at:

One common use of RnU is by employers to record that employees have read postings in a
specific, private category such as ‘internal’ which may only be seen by authorized,
logged-in users. By doing so, the employee may assume responsibility for understanding
the content and following any instructions, procedures, or policies contained in it.

These acknowledgements may then be accessed by administrators via a CSV file containing
records created in a given date range. The records are exported using an Export button
on the plugin’s setting page. In addition to exportation, the records are accessible
through any technique used to access a typical MySql database such as PHPadmin, linked
tables, or custom programming.

The acknowledgements may also be purged (deleted) using the PURGE button also found
on the plugin’s setting page.

Optionally, the plugin may be configured to accept acknowledgements from users who are not
logged-in. In that case, the user may enter any username desired provided that it meets an
administrator specified format as defined by a regular expression. The default format for
such usernames, if allowed, is 1-10 capital letters.

An Export file is a comma-separated value (CSV) text file which is generated from the
administrative Settings Page.

There is header column that contains the post_title of any acknowledgements found within the
specified date range.

Each row contains the RNU_USERNAME which may represent:

   1) The WP username of the logged in reader who made one or more acknowledgments
   2) If so configured, the username entered by a person who is NOT logged in
   3) If "all Users" is checked to export, the WP username with no acknowledgements

Each row contains the RNU_USER_ID which may represent:

   1) The user_id of the logged-in user who acknowledged the posting(s).
   2) A zero "0", signifying that no person was logged in when the post was acknowledged
   3) The user_id of person who acknowledged NO postings (and t.he ALL USERS option was selected)

Each row may contain an email address which corresponds to the non-zero RNU_USER_ID, regardless
of wether any acknowledgments were made.

Also in each row, there may be a date/time in a cell in a column headed by a post_title.
That date/time corresponds to when the user (row) acknowledged that post (column).

Note that username may NOT necessarily correspond to a unique user and may be repeated.
In fact, if so configured, a person who is not logged in may enter the username of any person.
For this reason, the User_id is also given in each row; which, if zero, means that the
acknowledgment was made by a person not logged in who entered that username.


  • The Read and Understood administration settings screen.
  • The Read and Understood button at the end of a posting
  • Example of exported CSV file opened in eXcel


  1. Upload the plugin read-and-understood files to the /wp-content/plugins/ directory
  2. Activate the read-and-understood plugin through the ‘Plugins’ menu in WordPress.
  3. Configure: Use the Settings link on the WP Admin page and look for the Read and Understood menu
    a. Choose a category. Only posts with this category may be acknowledged.
    b. Optionally allow users to acknowledged postings in that category without having a login
    If you chose that option, you may also restrict the format of the usernames
    If you know what a regular expression is, you may configure your own format for usernames
    The default allows for a 1 to 10 character username using capital letters only.


Does RnU work with custom post types?

No, it does not.

At the heart of RNU, there is a function called append_post_notification
and there is a line in there that says “if($post->post_type == ‘post’) {“

The intent is so that the Read-and-understood button doesn’t show up on “regular” pages of the web site.
Otherwise, visitors to the website might see the Read-and-Understood acknowledgement button on every page.

The post types are:
Post (Post Type: ‘post’)
Page (Post Type: ‘page’)
Attachment (Post Type: ‘attachment’)
Revision (Post Type: ‘revision’)
Navigation menu (Post Type: ‘nav_menu_item’)

The program logic could be changed to be something of the nature of “is anything but (the 4 other types)”,
in which case, the RnU acknowledgment button would appear on pages of custom post types.

However, there may be people who are using the plugin who take advantage of the fact that the RnU button shows
up only on posts of type ‘post’ and that it does NOT show up on custom post types.

Any enhancement along these lines would want to make the post-types user-selectable.

Are there any known issues?

Sometimes, using Chrome and perhaps in other browsers, the header row of the CSV file appears blank when automatically
opened using Microsoft eXcel 2010. Hitting export again shows the download with the headers.


Needs more work

This plugin would be great, but I feel its half finished if that. Lacks a lot of features that would make this plugin usable.

Read all 5 reviews

Contributors & Developers

“Read and Understood” is open source software. The following people have contributed to this plugin.


Translate “Read and Understood” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Added functionality originally intended for Version 1.4
  • Changed format of exported CSV file. It now has one column per post.
  • Optionally, allows export of CSV in “old” format (option to be retired 11/1/2015)
  • Puts date/time in cell if the user name (row) has read the post (column).
  • Optionally, exports WordPress Users even if they had not acknowledged a post in the time frame.
  • Reordered functions, leaning towards alphabetical.


  • Temporarily backs out Version 1.4
  • Created new version to do so in case authorse had automatically upgraded to broken V 1.4


  • Broken: Users reported “Headers already sent …” error
  • Changed format of exported CSV file. It now has one column per post.
  • Optionally, allows export of CSV in “old” format (option to be retired 11/1/2015)
  • Puts date/time in cell if the user name (row) has read the post (column).
  • Optionally, exports WordPress Users even if they had not acknowledged a post in the time frame.
  • Reordered functions, leaning towards alphabetical.


  • Looks for POST table using WPDB prefix, rather than assumed “wp_” (thanks to jwbowers for reporting this)
  • Also, uninstall.php is now used.


  • Corrected instance of _( with __( as reported in Support forum


  • Corrected display of number of records to be purged on confirmation button
  • Corrected number of records purged message
  • Replaced incomplete copy of jquery.js with 1.7.2
  • Turned off WP_DEBUG for production.
  • Created css/images to house jquery-ui images
  • Moved rnu_uninstall outside of class
  • Exploits, but does not require JavaScript.
  • Moved JavaScript to external file in /js folder
  • First draft of test plan included in /test folder
  • Ready for Translation, including JavaScript files


  • Corrected the description of the login required checkbox by removing “not”
  • Placed many more string literals in __(…) for future translation


  • Removed remote reference to jquery-ui.css and included local copy