{"id":291165,"date":"2026-03-31T15:38:30","date_gmt":"2026-03-31T15:38:30","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/mdi-better-revision-history\/"},"modified":"2026-03-31T15:44:53","modified_gmt":"2026-03-31T15:44:53","slug":"mdi-better-revision-history","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/mdi-better-revision-history\/","author":17476159,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"6.9.4","requires":"5.7","requires_php":"7.4","requires_plugins":null,"header_name":"Better Revision History","header_author":"Medium Interactive","header_description":"Enhanced revision history for posts, pages, and custom post types, with full ACF field tracking (flat fields and repeaters auto-detected per post type).","assets_banners_color":"4e6171","last_updated":"2026-03-31 15:44:53","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/mediuminteractive.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":122,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"mediuminteractive","date":"2026-03-31 15:38:10"},"1.0.1":{"tag":"1.0.1","author":"mediuminteractive","date":"2026-03-31 15:44:53"}},"upgrade_notice":{"1.0.0":"<p>Initial release \u2014 no upgrade steps required.<\/p>","1.0.1":"<p>Update plugin name<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3495769,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3495769,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3495769,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2211,8534,2010,259114,6243],"plugin_category":[59],"plugin_contributors":[177069],"plugin_business_model":[],"class_list":["post-291165","plugin","type-plugin","status-publish","hentry","plugin_tags-acf","plugin_tags-audit-log","plugin_tags-custom-fields","plugin_tags-revision-history","plugin_tags-revisions","plugin_category-utilities-and-tools","plugin_contributors-mediuminteractive","plugin_committers-mediuminteractive"],"banners":{"banner":"https:\/\/ps.w.org\/mdi-better-revision-history\/assets\/banner-772x250.png?rev=3495769","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/mdi-better-revision-history\/assets\/icon-128x128.png?rev=3495769","icon_2x":"https:\/\/ps.w.org\/mdi-better-revision-history\/assets\/icon-256x256.png?rev=3495769","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>MDI Better Revision History<\/strong> replaces the default revision comparison screen with a clean, timeline-style meta box right inside the post editor. Every time a post is saved, the plugin records exactly what changed \u2014 field by field \u2014 and displays a clear before \u2192 after comparison.<\/p>\n\n<p>It works out of the box for standard Posts and Pages, and is fully extensible to custom post types. If Advanced Custom Fields (ACF) is active, the plugin automatically detects which field groups, flat fields, and repeater sub-fields are registered for each post type \u2014 no manual configuration required.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Auto-detection of ACF flat fields<\/strong> per post type \u2014 no hardcoded field lists<\/li>\n<li><strong>Auto-detection of ACF repeater fields and sub-fields<\/strong> per post type<\/li>\n<li><strong>Repeater row diffing<\/strong> \u2014 shows which rows were Added, Updated, or Removed<\/li>\n<li><strong>Grouped revision timeline<\/strong> \u2014 multiple saves within the same timestamp are merged into one entry<\/li>\n<li><strong>Author &amp; timestamp<\/strong> on every revision entry<\/li>\n<li><strong>Settings page<\/strong> under <em>Settings \u2192 MDI Revision History<\/em> to enable or disable tracking per post type<\/li>\n<li>Posts and Pages can be toggled freely; custom post type integration is available on request<\/li>\n<li>Graceful fallback \u2014 works even without ACF by scanning all non-internal post meta keys<\/li>\n<li>Lightweight \u2014 no JavaScript, no external dependencies, no database tables<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<p>Once activated, a <strong>Revision History<\/strong> meta box appears at the bottom of any enabled post type's edit screen. Each saved revision is compared to the one before it. Changed fields are shown side by side: the old value highlighted in red on the left, the new value in green on the right.<\/p>\n\n<p>For ACF repeater fields, the plugin tracks individual row-level changes and labels them clearly (e.g. <em>Sc Film Crew \u2014 Row 2 Updated<\/em>).<\/p>\n\n<h4>ACF Integration<\/h4>\n\n<p>When Advanced Custom Fields is active, the plugin queries ACF's own field group registry (<code>acf_get_field_groups<\/code>) to discover which fields apply to the current post type. This means:<\/p>\n\n<ul>\n<li>No hardcoded field arrays to maintain<\/li>\n<li>Works automatically when you add, rename, or remove ACF fields<\/li>\n<li>Supports both flat fields (text, select, date picker, checkbox, etc.) and repeater fields with any sub-field structure<\/li>\n<\/ul>\n\n<p>If ACF is not active, the plugin falls back to comparing all non-internal (<code>_<\/code>-prefixed) post meta keys.<\/p>\n\n<h4>Custom Post Type Integration<\/h4>\n\n<p>Posts and Pages are available directly in the settings. For custom post types, the plugin detects them automatically and lists them on the settings page with a note to contact Medium Interactive for tailored integration.<\/p>\n\n<p><a href=\"https:\/\/mediuminteractive.com\/contact\">Contact Medium Interactive \u2192<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>mdi-better-revision-history<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>Settings \u2192 MDI Revision History<\/strong> to enable revision tracking for Posts, Pages, or custom post types.<\/li>\n<li>Open any enabled post or page \u2014 the <strong>Revision History<\/strong> meta box will appear once there is at least one revision.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20the%20built-in%20wordpress%20revision%20system%3F\"><h3>Does this replace the built-in WordPress revision system?<\/h3><\/dt>\n<dd><p>No. It adds to it. WordPress continues to store revisions as normal. This plugin simply provides a much more readable meta box for viewing what changed between saves.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20advanced%20custom%20fields%3F\"><h3>Does it work without Advanced Custom Fields?<\/h3><\/dt>\n<dd><p>Yes. Without ACF active, the plugin falls back to comparing all non-internal post meta keys automatically.<\/p><\/dd>\n<dt id=\"can%20i%20enable%20it%20for%20my%20custom%20post%20type%3F\"><h3>Can I enable it for my custom post type?<\/h3><\/dt>\n<dd><p>Custom post types are detected automatically and listed on the settings page. Because field structures vary greatly per project, enabling them for full ACF tracking is available as a custom integration. <a href=\"https:\/\/mediuminteractive.com\/contact\">Contact us<\/a> for details.<\/p><\/dd>\n<dt id=\"why%20can%20i%20not%20see%20any%20revisions%3F\"><h3>Why can I not see any revisions?<\/h3><\/dt>\n<dd><p>WordPress must have revisions enabled. Check that <code>define( 'WP_POST_REVISIONS', false )<\/code> is not set in your <code>wp-config.php<\/code>. Also note the meta box only appears once at least one revision exists for that post.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20down%20the%20admin%3F\"><h3>Does it slow down the admin?<\/h3><\/dt>\n<dd><p>No. The plugin only runs on post-edit screens for enabled post types, and only reads existing revision data \u2014 it does not add any extra save hooks or background processing.<\/p><\/dd>\n<dt id=\"is%20it%20translation-ready%3F\"><h3>Is it translation-ready?<\/h3><\/dt>\n<dd><p>Yes. All user-facing strings use the <code>mdi-better-revision-history<\/code> text domain.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Settings page with per-post-type enable\/disable.<\/li>\n<li>Auto-detection of ACF flat fields and repeater fields per post type.<\/li>\n<li>Grouped revision timeline with author, timestamp, and before\/after field comparison.<\/li>\n<li>Graceful fallback for sites without ACF.<\/li>\n<\/ul>","raw_excerpt":"Enhanced, human readable revision history for posts, pages, and custom post types.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/291165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=291165"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mediuminteractive"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=291165"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=291165"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=291165"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=291165"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=291165"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=291165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}