{"id":12628,"date":"2011-04-30T22:35:22","date_gmt":"2011-04-30T22:35:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/wp-document-revisions\/"},"modified":"2026-07-30T00:17:02","modified_gmt":"2026-07-30T00:17:02","slug":"wp-document-revisions","status":"publish","type":"plugin","link":"https:\/\/kk.wordpress.org\/plugins\/wp-document-revisions\/","author":148845,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"5.4.0","stable_tag":"5.4.0","tested":"7.0.4","requires":"5.9","requires_php":"8.0","requires_plugins":null,"header_name":"WP Document Revisions","header_author":"Ben Balter","header_description":"","assets_banners_color":"c0c5c9","last_updated":"2026-07-30 00:17:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"http:\/\/ben.balter.com\/2011\/08\/29\/wp-document-revisions-document-management-version-control-wordpress\/","header_author_uri":"https:\/\/ben.balter.com","rating":3.7,"author_block_rating":0,"active_installs":2000,"downloads":185218,"num_ratings":23,"support_threads":1,"support_threads_resolved":1,"author_block_count":0,"sections":["installation","changelog","description"],"tags":{"0.1":{"tag":"0.1","author":"benbalter","date":"2011-09-03 21:30:47"},"0.5":{"tag":"0.5","author":"benbalter","date":"2011-07-15 13:21:58"},"0.6":{"tag":"0.6","author":"benbalter","date":"2011-08-23 19:54:24"},"1.0":{"tag":"1.0","author":"benbalter","date":"2011-09-06 12:48:45"},"1.0.1":{"tag":"1.0.1","author":"benbalter","date":"2011-09-11 04:59:34"},"1.0.2":{"tag":"1.0.2","author":"benbalter","date":"2011-09-14 14:24:00"},"1.0.3":{"tag":"1.0.3","author":"benbalter","date":"2011-09-25 20:04:11"},"1.0.4":{"tag":"1.0.4","author":"benbalter","date":"2011-10-17 14:09:13"},"1.0.5":{"tag":"1.0.5","author":"benbalter","date":"2011-10-18 13:35:43"},"1.1":{"tag":"1.1","author":"benbalter","date":"2011-10-24 14:24:16"},"1.2":{"tag":"1.2","author":"benbalter","date":"2011-12-22 04:43:10"},"1.2.1":{"tag":"1.2.1","author":"benbalter","date":"2012-01-03 15:19:23"},"1.2.2":{"tag":"1.2.2","author":"benbalter","date":"2012-01-28 20:54:51"},"1.2.3":{"tag":"1.2.3","author":"benbalter","date":"2012-03-06 19:59:44"},"1.2.4":{"tag":"1.2.4","author":"benbalter","date":"2012-03-25 19:16:11"},"1.3":{"tag":"1.3","author":"benbalter","date":"2012-04-28 23:08:14"},"1.3.1":{"tag":"1.3.1","author":"benbalter","date":"2012-06-03 18:27:54"},"1.3.2":{"tag":"1.3.2","author":"benbalter","date":"2012-07-07 18:46:21"},"1.3.3":{"tag":"1.3.3","author":"benbalter","date":"2012-07-09 15:14:22"},"1.3.4":{"tag":"1.3.4","author":"benbalter","date":"2012-12-07 22:33:02"},"1.3.5":{"tag":"1.3.5","author":"benbalter","date":"2013-02-03 16:42:32"},"1.3.6":{"tag":"1.3.6","author":"benbalter","date":"2013-07-03 14:05:52"},"2.0.0":{"tag":"2.0.0","author":"benbalter","date":"2014-08-02 17:14:02"},"2.2.0":{"tag":"2.2.0","author":"benbalter","date":"2017-05-17 18:48:05"},"3.0.0":{"tag":"3.0.0","author":"benbalter","date":"2017-08-26 17:53:58"},"3.0.1":{"tag":"3.0.1","author":"benbalter","date":"2017-08-28 19:59:41"},"3.1.0":{"tag":"3.1.0","author":"benbalter","date":"2018-02-01 16:16:32"},"3.1.1":{"tag":"3.1.1","author":"benbalter","date":"2018-02-01 16:36:19"},"3.1.2":{"tag":"3.1.2","author":"benbalter","date":"2018-02-26 16:30:43"},"3.2.0":{"tag":"3.2.0","author":"benbalter","date":"2019-01-09 23:04:21"},"3.2.1":{"tag":"3.2.1","author":"benbalter","date":"2019-01-14 17:29:22"},"3.2.2":{"tag":"3.2.2","author":"benbalter","date":"2019-04-23 13:58:54"},"3.2.4":{"tag":"3.2.4","author":"benbalter","date":"2019-11-27 18:59:15"},"3.3.0":{"tag":"3.3.0","author":"benbalter","date":"2021-06-03 21:33:44"},"3.3.1":{"tag":"3.3.1","author":"benbalter","date":"2021-06-11 23:08:21"},"3.4.0":{"tag":"3.4.0","author":"benbalter","date":"2022-02-24 14:47:37"},"3.5.0":{"tag":"3.5.0","author":"benbalter","date":"2023-02-28 18:14:52"},"3.6.0":{"tag":"3.6.0","author":"benbalter","date":"2024-03-19 21:29:08"},"3.6.1":{"tag":"3.6.1","author":"benbalter","date":"2024-06-12 16:16:23"},"3.7.0":{"tag":"3.7.0","author":"benbalter","date":"2025-08-16 00:21:15"},"3.7.1":{"tag":"3.7.1","author":"benbalter","date":"2025-08-16 00:34:59"},"3.7.2":{"tag":"3.7.2","author":"benbalter","date":"2025-08-16 00:45:36"},"3.8.0":{"tag":"3.8.0","author":"benbalter","date":"2025-12-26 19:35:59"},"3.8.1":{"tag":"3.8.1","author":"benbalter","date":"2025-12-26 19:52:06"},"4.0.0":{"tag":"4.0.0","author":"benbalter","date":"2026-04-28 22:05:10"},"4.0.1":{"tag":"4.0.1","author":"benbalter","date":"2026-04-28 22:12:28"},"4.0.2":{"tag":"4.0.2","author":"benbalter","date":"2026-04-28 22:18:13"},"4.0.3":{"tag":"4.0.3","author":"benbalter","date":"2026-04-28 22:29:12"},"4.0.4":{"tag":"4.0.4","author":"benbalter","date":"2026-04-30 02:31:18"},"4.0.5":{"tag":"4.0.5","author":"benbalter","date":"2026-05-10 23:44:56"},"4.0.6":{"tag":"4.0.6","author":"benbalter","date":"2026-05-10 23:53:16"},"4.0.7":{"tag":"4.0.7","author":"benbalter","date":"2026-05-13 23:32:23"},"5.0.0":{"tag":"5.0.0","author":"benbalter","date":"2026-05-24 22:43:20"},"5.1.0":{"tag":"5.1.0","author":"benbalter","date":"2026-06-19 16:37:36"},"5.1.1":{"tag":"5.1.1","author":"benbalter","date":"2026-06-20 14:18:32"},"5.1.2":{"tag":"5.1.2","author":"benbalter","date":"2026-06-22 19:43:38"},"5.1.3":{"tag":"5.1.3","author":"benbalter","date":"2026-07-19 20:50:20"},"5.2.0":{"tag":"5.2.0","author":"benbalter","date":"2026-07-27 19:30:28"},"5.3.0":{"tag":"5.3.0","author":"benbalter","date":"2026-07-27 19:36:09"},"5.4.0":{"tag":"5.4.0","author":"benbalter","date":"2026-07-30 00:17:02"}},"upgrade_notice":[],"ratings":{"1":4,"2":2,"3":1,"4":5,"5":11},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3578966,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3578966,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3578966,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3578966,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3578907,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250},"banner.svg":{"filename":"banner.svg","revision":3578966,"resolution":false,"location":"assets","locale":false}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3627781,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/edit.php?post_type=document\",\"preferredVersions\":{\"php\":\"8.3\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"wp-document-revisions\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php require '\\\/wordpress\\\/wp-load.php'; $user_id = wp_create_user('editor', 'password', 'editor@localhost'); (new WP_User($user_id))->set_role('editor');\"},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire '\\\/wordpress\\\/wp-load.php';\\n\\n$editor = get_user_by( 'login', 'editor' );\\n$author = $editor ? (int) $editor->ID : 1;\\n\\n\\\/\\\/ Ensure the default workflow states exist (admin_init has not fired in this context).\\nif ( ! get_terms( array( 'taxonomy' => 'workflow_state', 'hide_empty' => false, 'fields' => 'ids' ) ) ) {\\n\\tforeach ( array( 'In Progress', 'Initial Draft', 'Under Review', 'Final' ) as $state ) {\\n\\t\\twp_insert_term( $state, 'workflow_state' );\\n\\t}\\n}\\n\\n\\\/\\\/ Adds one revision to a document: uploads a file version and bumps the content.\\n$add_revision = function ( $doc_id, $filename, $body, $summary ) {\\n\\t$upload = wp_upload_bits( $filename, null, $body );\\n\\tif ( ! empty( $upload['error'] ) ) {\\n\\t\\treturn;\\n\\t}\\n\\t$type      = wp_check_filetype( $filename );\\n\\t$attach_id = wp_insert_attachment(\\n\\t\\tarray(\\n\\t\\t\\t'guid'           => $upload['url'],\\n\\t\\t\\t'post_mime_type' => $type['type'] ? $type['type'] : 'text\\\/plain',\\n\\t\\t\\t'post_title'     => pathinfo( $filename, PATHINFO_FILENAME ),\\n\\t\\t\\t'post_status'    => 'inherit',\\n\\t\\t\\t'post_parent'    => $doc_id,\\n\\t\\t),\\n\\t\\t$upload['file'],\\n\\t\\t$doc_id\\n\\t);\\n\\tif ( ! $attach_id || is_wp_error( $attach_id ) ) {\\n\\t\\treturn;\\n\\t}\\n\\tupdate_post_meta( $doc_id, '_document_attachment_id', $attach_id );\\n\\twp_update_post(\\n\\t\\tarray(\\n\\t\\t\\t'ID'           => $doc_id,\\n\\t\\t\\t'post_content' => '<!-- WPDR ' . $attach_id . ' --> ' . $summary,\\n\\t\\t)\\n\\t);\\n};\\n\\n\\\/\\\/ Sample documents: title, workflow state, then successive revisions.\\n$samples = array(\\n\\tarray(\\n\\t\\t'Q3 Marketing Plan',\\n\\t\\t'Under Review',\\n\\t\\tarray(\\n\\t\\t\\tarray( 'q3-marketing-plan.txt', 'Q3 Marketing Plan. Channels: search, social, email.', 'Initial draft' ),\\n\\t\\t\\tarray( 'q3-marketing-plan.txt', 'Q3 Marketing Plan. Channels: search, social, email. Budget: 50k.', 'Added budget figures' ),\\n\\t\\t\\tarray( 'q3-marketing-plan.txt', 'Q3 Marketing Plan. Channels: search, social, email. Budget: 50k. Timeline finalized.', 'Incorporated review feedback' ),\\n\\t\\t),\\n\\t),\\n\\tarray(\\n\\t\\t'Employee Handbook',\\n\\t\\t'Final',\\n\\t\\tarray(\\n\\t\\t\\tarray( 'employee-handbook.txt', 'Employee Handbook. Section 1: Welcome.', 'First draft' ),\\n\\t\\t\\tarray( 'employee-handbook.txt', 'Employee Handbook. Section 1: Welcome. Section 2: Benefits.', 'Added benefits section' ),\\n\\t\\t),\\n\\t),\\n\\tarray(\\n\\t\\t'Product Requirements',\\n\\t\\t'In Progress',\\n\\t\\tarray(\\n\\t\\t\\tarray( 'product-requirements.txt', 'Product Requirements. Goal: ship v1.', 'Initial outline' ),\\n\\t\\t\\tarray( 'product-requirements.txt', 'Product Requirements. Goal: ship v1. User stories added.', 'Added user stories' ),\\n\\t\\t),\\n\\t),\\n);\\n\\nforeach ( $samples as $sample ) {\\n\\t$doc_id = wp_insert_post(\\n\\t\\tarray(\\n\\t\\t\\t'post_type'    => 'document',\\n\\t\\t\\t'post_status'  => 'publish',\\n\\t\\t\\t'post_title'   => $sample[0],\\n\\t\\t\\t'post_author'  => $author,\\n\\t\\t\\t'post_content' => '',\\n\\t\\t)\\n\\t);\\n\\tif ( ! $doc_id || is_wp_error( $doc_id ) ) {\\n\\t\\tcontinue;\\n\\t}\\n\\twp_set_object_terms( $doc_id, $sample[1], 'workflow_state' );\\n\\tforeach ( $sample[2] as $revision ) {\\n\\t\\t$add_revision( $doc_id, $revision[0], $revision[1], $revision[2] );\\n\\t}\\n}\\n\"},{\"step\":\"login\",\"username\":\"editor\",\"password\":\"password\"}]}"}},"all_blocks":{"wp-document-revisions\/documents-widget":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"wp-document-revisions\/documents-widget","version":"3.9.0","title":"Latest Documents","category":"wpdr-category","icon":"admin-page","description":"Display a list of your most recent documents.","textdomain":"wp-document-revisions","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","attributes":{"header":{"type":"string"},"numberposts":{"type":"number","default":5},"post_stat_publish":{"type":"boolean","default":true},"post_stat_private":{"type":"boolean","default":true},"post_stat_draft":{"type":"boolean","default":false},"show_thumb":{"type":"boolean","default":false},"show_descr":{"type":"boolean","default":true},"show_author":{"type":"boolean","default":true},"show_pdf":{"type":"boolean","default":false},"new_tab":{"type":"boolean","default":false},"align":{"type":"string"},"backgroundColor":{"type":"string"},"linkColor":{"type":"string"},"textColor":{"type":"string"},"gradient":{"type":"string"},"fontSize":{"type":"string"},"style":{"type":"object"}},"supports":{"align":true,"color":{"gradients":true,"link":true},"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true}}},"wp-document-revisions\/revisions-shortcode":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"wp-document-revisions\/revisions-shortcode","version":"3.9.0","title":"Document Revisions","category":"wpdr-category","icon":"list-view","description":"Display a list of revisions for your document.","textdomain":"wp-document-revisions","editorScript":"file:.\/index.js","attributes":{"id":{"type":"number","default":1},"numberposts":{"type":"number","default":5},"summary":{"type":"boolean","default":false},"show_pdf":{"type":"boolean","default":false},"new_tab":{"type":"boolean","default":true},"align":{"type":"string"},"backgroundColor":{"type":"string"},"linkColor":{"type":"string"},"textColor":{"type":"string"},"gradient":{"type":"string"},"fontSize":{"type":"string"},"style":{"type":"object"}},"supports":{"align":true,"color":{"gradients":true,"link":true},"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true}}},"wp-document-revisions\/document-preview":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"wp-document-revisions\/document-preview","version":"3.9.0","title":"Document Preview","category":"wpdr-category","icon":"media-document","description":"Embed an inline preview of a document's latest revision.","textdomain":"wp-document-revisions","editorScript":"file:.\/index.js","attributes":{"id":{"type":"number","default":0},"height":{"type":"number","default":600},"show_title":{"type":"boolean","default":false},"show_download":{"type":"boolean","default":true},"align":{"type":"string"},"backgroundColor":{"type":"string"},"linkColor":{"type":"string"},"textColor":{"type":"string"},"gradient":{"type":"string"},"fontSize":{"type":"string"},"style":{"type":"object"}},"supports":{"align":true,"color":{"gradients":true,"link":true},"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true}}},"wp-document-revisions\/documents-shortcode":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"wp-document-revisions\/documents-shortcode","version":"3.9.0","title":"Documents List","category":"wpdr-category","icon":"editor-ul","description":"Display a list of documents.","textdomain":"wp-document-revisions","editorScript":"file:.\/index.js","attributes":{"header":{"type":"string","default":""},"taxonomy_0":{"type":"string","default":""},"term_0":{"type":"number","default":0},"taxonomy_1":{"type":"string","default":""},"term_1":{"type":"number","default":0},"taxonomy_2":{"type":"string","default":""},"term_2":{"type":"number","default":0},"numberposts":{"type":"number","default":5},"orderby":{"type":"string"},"order":{"type":"string","default":"ASC"},"show_edit":{"type":"string","default":""},"show_thumb":{"type":"boolean","default":false},"show_descr":{"type":"boolean","default":true},"show_pdf":{"type":"boolean","default":false},"new_tab":{"type":"boolean","default":true},"freeform":{"type":"string","default":""},"align":{"type":"string"},"backgroundColor":{"type":"string"},"linkColor":{"type":"string"},"textColor":{"type":"string"},"gradient":{"type":"string"},"fontSize":{"type":"string"},"style":{"type":"object"}},"supports":{"align":true,"color":{"gradients":true,"link":true},"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true,"lineHeight":true}}}},"tagged_versions":["0.1","0.5","0.6","1.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.1","1.2","1.2.1","1.2.2","1.2.3","1.2.4","1.3","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","2.0.0","2.2.0","3.0.0","3.0.1","3.1.0","3.1.1","3.1.2","3.2.0","3.2.1","3.2.2","3.2.4","3.3.0","3.3.1","3.4.0","3.5.0","3.6.0","3.6.1","3.7.0","3.7.1","3.7.2","3.8.0","3.8.1","4.0.0","4.0.1","4.0.2","4.0.3","4.0.4","4.0.5","4.0.6","4.0.7","5.0.0","5.1.0","5.1.1","5.1.2","5.1.3","5.2.0","5.3.0","5.4.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3579852,"resolution":"1","location":"assets","locale":"","width":2880,"height":1512},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3579852,"resolution":"2","location":"assets","locale":"","width":2880,"height":1512},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3579852,"resolution":"3","location":"assets","locale":"","width":2880,"height":1512}},"screenshots":{"1":"Every document keeps a complete, audited revision history \u2014 who changed what and when, each with a summary and one-click restore.","2":"Manage all your documents in one place \u2014 see each document's owner, workflow state, and who currently has it checked out, and filter by state or owner.","3":"Model your team's review process with fully customizable workflow states."}},"plugin_section":[262246],"plugin_tags":[6389,12813,9054,6243,24313],"plugin_category":[50],"plugin_contributors":[78911,179774],"plugin_business_model":[],"class_list":["post-12628","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-collaboration","plugin_tags-document-management","plugin_tags-documents","plugin_tags-revisions","plugin_tags-version-control","plugin_category-media","plugin_contributors-benbalter","plugin_contributors-nwjames","plugin_committers-benbalter"],"banners":{"banner":"https:\/\/ps.w.org\/wp-document-revisions\/assets\/banner-772x250.png?rev=3578907","banner_2x":"https:\/\/ps.w.org\/wp-document-revisions\/assets\/banner-1544x500.png?rev=3578966","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/wp-document-revisions\/assets\/icon.svg?rev=3578966","icon":"https:\/\/ps.w.org\/wp-document-revisions\/assets\/icon.svg?rev=3578966","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wp-document-revisions\/assets\/screenshot-1.png?rev=3579852","caption":"Every document keeps a complete, audited revision history \u2014 who changed what and when, each with a summary and one-click restore."},{"src":"https:\/\/ps.w.org\/wp-document-revisions\/assets\/screenshot-2.png?rev=3579852","caption":"Manage all your documents in one place \u2014 see each document's owner, workflow state, and who currently has it checked out, and filter by state or owner."},{"src":"https:\/\/ps.w.org\/wp-document-revisions\/assets\/screenshot-3.png?rev=3579852","caption":"Model your team's review process with fully customizable workflow states."}],"raw_content":"<!--section=installation-->\n<h4>\ud83d\ude80 Automatic Install (Recommended)<\/h4>\n\n<ol>\n<li><strong>Log into WordPress Admin<\/strong> - Login to your WordPress site as an Administrator, or if you haven't already, complete the <a href=\"https:\/\/wordpress.org\/support\/article\/how-to-install-wordpress\/\">WordPress installation<\/a><\/li>\n<li><strong>Go to Plugins<\/strong> - Navigate to <strong>Plugins &gt; Add New<\/strong> from the left menu<\/li>\n<li><strong>Search<\/strong> - Search for \"WP Document Revisions\"<\/li>\n<li><strong>Install<\/strong> - Click <strong>\"Install Now\"<\/strong> next to WP Document Revisions<\/li>\n<li><strong>Activate<\/strong> - Click <strong>\"Activate\"<\/strong> to enable the plugin<\/li>\n<\/ol>\n\n<h4>\ud83d\udce6 Manual Install<\/h4>\n\n<ol>\n<li><strong>Download<\/strong> - Get the latest version from <a href=\"https:\/\/wordpress.org\/plugins\/wp-document-revisions\/\">WordPress.org<\/a> or <a href=\"https:\/\/github.com\/wp-document-revisions\/wp-document-revisions\/releases\/latest\">GitHub Releases<\/a><\/li>\n<li><strong>Upload<\/strong> - Unzip the file and upload the \"wp-document-revisions\" folder to your <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li><strong>Activate<\/strong> - Log into WordPress admin, go to <strong>Plugins<\/strong>, and activate \"WP Document Revisions\"<\/li>\n<\/ol>\n\n<h4>\ud83d\udcbb Developer Install<\/h4>\n\n<p>For development or contributing:<\/p>\n\n<pre><code>`bash\n<\/code><\/pre>\n\n<p>git clone https:\/\/github.com\/wp-document-revisions\/wp-document-revisions.git\ncd wp-document-revisions\ncomposer install --no-dev\n    `<\/p>\n\n<h4>\u2699\ufe0f Requirements<\/h4>\n\n<ul>\n<li><strong>WordPress:<\/strong> 5.0 or higher<\/li>\n<li><strong>PHP:<\/strong> 7.4 or higher<\/li>\n<li><strong>File Permissions:<\/strong> WordPress must be able to write to the uploads directory<\/li>\n<\/ul>\n\n<h4>\ud83c\udfaf Next Steps<\/h4>\n\n<p>After installation, you'll find a new <strong>Documents<\/strong> menu in your WordPress admin. Start by:<\/p>\n\n<ol>\n<li><strong>Creating your first document<\/strong> - Go to Documents &gt; Add New<\/li>\n<li><strong>Setting up workflow states<\/strong> (optional) - Go to Documents &gt; Workflow States<\/li>\n<li><strong>Configuring permissions<\/strong> - Review Settings &gt; Document Revisions<\/li>\n<\/ol>\n\n<p>Need help? Check our <a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/frequently-asked-questions\/\">FAQ<\/a> or <a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/SUPPORT\/\">get support<\/a>.<\/p>\n\n<!--section=changelog-->\n<p>Numbers in brackets show the issue number in https:\/\/github.com\/wp-document-revisions\/wp-document-revisions\/issues\/<\/p>\n\n<h4>5.4.0<\/h4>\n\n<ul>\n<li>Add an inline document preview: the new <code>[document_preview]<\/code> shortcode and matching <strong>Document Preview<\/strong> block embed a document's latest revision directly in a post or page (PDFs and images render inline; other file types offer a download link). The preview is served through the document's permalink, so it always shows the current revision and respects the document's existing access control. (#634)<\/li>\n<li>Add opt-in email notifications (Settings \u2192 Media) that alert a configurable recipient list, plus the document's author, when a document changes workflow state or gains a new revision. Disabled by default; the person making the change is never notified of their own change; fully customizable via filters. Supersedes the former code-cookbook recipe by making state-change notifications a built-in feature.<\/li>\n<li>Fix a fatal <code>TypeError<\/code> when serving or resolving a document's attached file on newer WordPress: the <code>get_attached_file<\/code> filter now accepts the attachment ID as either an integer or a numeric string (WordPress core passes a string in some paths), casting it internally. Previously the strict <code>int<\/code> type hint could abort the request.<\/li>\n<li>Fix Abilities API registration on WordPress 6.9+: the plugin's ability category was registered without the now-required <code>description<\/code>, which caused the category \u2014 and therefore all four document abilities \u2014 to silently fail to register. The category now includes a description and the abilities register as intended.<\/li>\n<li>Expose the three read-only Abilities API abilities (<code>check-document-access<\/code>, <code>get-document-info<\/code>, <code>get-document-revisions<\/code>) to AI agents over the Model Context Protocol via the WordPress MCP Adapter \u2014 no bundled MCP server required. The mutating <code>override-document-lock<\/code> ability is intentionally excluded, keeping the agent-facing surface read-only, and every call continues to enforce per-document read permissions.<\/li>\n<\/ul>\n\n<h4>5.3.0<\/h4>\n\n<ul>\n<li>The WordPress.org \"Live Preview\" now opens with sample documents that already carry revision history and workflow states, so the preview demonstrates version control and workflow at a glance instead of showing an empty list. (#632)<\/li>\n<li>Add a first-run prompt on the Documents screen that points new users (and Live Preview visitors) to add their first document, replacing the blank empty-state table. (#632)<\/li>\n<li>Occasionally invite established users to leave a WordPress.org review \u2014 shown only after real, successful use, dismissible, and never repeated once dismissed. (#632)<\/li>\n<li>Documentation: block editor (Gutenberg) support is now described as supported and opt-in rather than experimental, and the readme leads with the plugin's full-text search and AI-generated revision summary capabilities. (#632)<\/li>\n<\/ul>\n\n<h4>5.2.0<\/h4>\n\n<p>For complete changelog, see <a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/changelog\/\">GitHub<\/a><\/p>\n\n<!--section=description-->\n<p>Document management and version control for WordPress. Collaborate on files, track every revision, and auto-generate change summaries with AI.<\/p>\n\n<h3>What is WP Document Revisions?<\/h3>\n\n<p><a href=\"https:\/\/wordpress.org\/plugins\/wp-document-revisions\/\">WP Document Revisions<\/a> is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Document_management_system\">document management<\/a> and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Revision_control\">version control<\/a> plugin.\u00a0Built for time-sensitive and mission-critical projects, teams can collaboratively edit files of any format -- text documents, spreadsheets, images, sheet music... anything -- all the while, seamlessly tracking the document's progress as it moves through your organization's existing workflow.<\/p>\n\n<h4>WP Document Revisions is three things<\/h4>\n\n<ol>\n<li><strong>\ud83d\udcc1 Document Management System (DMS)<\/strong> - Track, store, and organize files of any format<\/li>\n<li><strong>\ud83d\udc65 Collaboration Tool<\/strong> - Empower teams to collaboratively draft, edit, and refine documents<\/li>\n<li><strong>\ud83d\udd12 File Hosting Solution<\/strong> - Publish and securely deliver files to teams, clients, or the public<\/li>\n<\/ol>\n\n<h4>\u2728 Modern and AI-ready<\/h4>\n\n<p>WP Document Revisions keeps pace with modern WordPress:<\/p>\n\n<ul>\n<li><strong>\ud83d\udd0d Full-text search inside your files<\/strong> \u2014 native text extraction from PDF, DOCX, and ODT documents (pluggable for more formats) makes document <em>contents<\/em> searchable, not just their titles.<\/li>\n<li><strong>\ud83e\udd16 AI-generated revision summaries<\/strong> \u2014 powered by the <a href=\"https:\/\/make.wordpress.org\/core\/2026\/03\/24\/introducing-the-ai-client-in-wordpress-7-0\/\">WordPress 7.0 AI Client<\/a>, each new revision can be summarized automatically from a diff against the prior version and pre-filled into the revision log for your review (opt-in, with per-document and sitewide opt-outs).<\/li>\n<li><strong>\ud83e\uddf1 Block editor support<\/strong> \u2014 an opt-in Gutenberg editing experience with a document sidebar panel for uploads, revision summaries, and lock status.<\/li>\n<li><strong>\ud83d\udd0c REST API &amp; WP-CLI<\/strong> \u2014 manage documents headlessly and backfill the search\/AI cache across your whole library from the command line.<\/li>\n<\/ul>\n\n<p>See <a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/features\/\"><strong>the full list of features<\/strong><\/a> for more information.<\/p>\n\n<h3>\ud83d\udcda Documentation<\/h3>\n\n<p><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\">Complete Documentation Site<\/a><\/strong> - Your one-stop resource for everything about WP Document Revisions.<\/p>\n\n<h4>\ud83c\udfaf Quick Start Guides<\/h4>\n\n<ul>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/installation\/\">Installation<\/a><\/strong> - Get up and running in minutes<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/features\/\">Features and Overview<\/a><\/strong> - Discover what WP Document Revisions can do<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/screenshots\/\">Screenshots<\/a><\/strong> - See the plugin in action<\/li>\n<\/ul>\n\n<h4>\ud83d\udcd6 User Documentation<\/h4>\n\n<ul>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/frequently-asked-questions\/\">Frequently Asked Questions<\/a><\/strong> - Common questions answered<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/block-editor\/\">Block Editor Support<\/a><\/strong> - Opt-in Gutenberg editing for documents<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/actions\/\">Plugin Actions<\/a><\/strong> - Available WordPress actions<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/filters\/\">Plugin Filters<\/a><\/strong> - Available WordPress filters<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/shortcodes\/\">Plugin Shortcodes and Widget<\/a><\/strong> - Display documents on your site<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/useful-plugins-and-tools\/\">Useful Plugins and Tools<\/a><\/strong> - Extend functionality<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/cookbook\/README\/\">Cookbook<\/a><\/strong> - Integration guides and recipes<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/translations\/\">Translations<\/a><\/strong> - Multi-language support<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/links\/\">Links<\/a><\/strong> - Additional resources<\/li>\n<\/ul>\n\n<h4>\ud83c\udd98 Support &amp; Community<\/h4>\n\n<ul>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/SUPPORT\/\">Where to get Support or Report an Issue<\/a><\/strong> - Get help when you need it<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/CONTRIBUTING\/\">How to Contribute<\/a><\/strong> - Join our community<\/li>\n<li><strong><a href=\"https:\/\/groups.google.com\/forum\/#!forum\/wp-document-revisions\">Join the Mailing List<\/a><\/strong> - Stay updated<\/li>\n<\/ul>\n\n<h3>Features<\/h3>\n\n\n\n<h4>Overview<\/h4>\n\n<p><strong>Powerful\u00a0Collaboration Tools<\/strong> - <em>With great power does not have to come great complexity.<\/em> Based on a simple\u00a0philosophy\u00a0of putting powerful but intuitive tools in the hands of managers and content creators, WP Document Revisions leverages many of the essential WordPress features that,\u00a0for more than eight years,\u00a0have been tested and proven across countless industries\u200a\u2014\u200aposts, attachments, revisions, taxonomies, authentication, and permalinks\u200a\u2014\u200ato make collaborating on the creation and publication of documents a natural endeavor.\u00a0Think of it as an <a href=\"http:\/\/ben.balter.com\/2011\/04\/04\/when-all-you-have-is-a-pair-of-bolt-cutters\/\">open-source and more intuitive version<\/a> of the popular Microsoft\u00a0collaboration\u00a0suite, <a href=\"http:\/\/sharepoint.microsoft.com\/en-us\/Pages\/default.aspx\">Sharepoint.<\/a><\/p>\n\n<p><strong>Document History<\/strong> - At each step of the authoring process, WP Document Revisions gives you an instant snapshot of your team's progress and the document's history. It even gives you the option to revert back to a previous revision\u200a\u2014\u200aso don't fret if you make a mistake\u200a\u2014\u200aor\u00a0receive\u00a0updates on changes to the document right in your favorite feed reader.<\/p>\n\n<p><strong>Access Control<\/strong> - Each document is given a\u00a0persistent\u00a0URL (e.g., yourcompany.com\/documents\/2011\/08\/TPS-Report.doc) which can be private (securely\u00a0delivered only to members of your organization), password protected (available only to those you select such as clients or contractors), or public (published and hosted for the world to see). If you catch a typo and upload a new version, that URL will continue to point to the latest version, regardless of how many changes you make.<\/p>\n\n<p><strong>Enterprise Security<\/strong> - Worried about storing propriety or sensitive information? WP Document Revisions was built from the first line of code with government- and enterprise-grade security in mind.\u00a0Each file is masked behind an anonymous 128-bit <a href=\"http:\/\/en.wikipedia.org\/wiki\/MD5\">MD5 hash<\/a> as soon as it touches the server, and\u00a0requests for files are transparently routed through WordPress's time-tested URL rewriting, authentication, and permission systems (which can even <a href=\"http:\/\/wordpress.org\/plugins\/active-directory-integration\/\">integrate with existing enterprise active directory<\/a> or <a href=\"http:\/\/wordpress.org\/extend\/plugins\/simple-ldap-login\/\">LDAP servers<\/a>). Need more security? WP Document Revisions allows you to store documents in a folder above the <code>htdocs<\/code> or <code>public_html<\/code> <a href=\"http:\/\/httpd.apache.org\/docs\/2.0\/mod\/core.html#documentroot\">web root<\/a>, further ensuring that only those you authorize have access to your work.<\/p>\n\n<p><strong>Customization<\/strong>\u00a0- WP Document Revisions recognizes that no two teams are\u00a0identical,\u00a0and as a result, molds to your firm's needs, not the other way around. Need to track\u00a0additional\u00a0information associated with a document?\u00a0Departments, editors, issues, sections, even arbitrary key-value\u00a0pairs\u00a0\u2014 whatever you can throw at it, it can handle. Development and customization costs are further minimized by its extensive plugin API, and the <a href=\"http:\/\/themergency.com\/generators\/wordpress-custom-taxonomy\/\">WordPress Custom Taxonomy Generator<\/a> makes it easy for even the\u00a0uninitiated\u00a0to add custom taxonomies to documents. Need an audit trail to track check-ins and check-outs? User-level permissions based on the document's state or another custom taxonomy? Support for third-party encryption? Check out the <a href=\"https:\/\/github.com\/wp-document-revisions\/wp-document-revisions-Code-Cookbook\">WP Document Revisions Code Cookbook<\/a> for sample code. Looking for even more advanced control of your workflow? WP Document Revisions will detect the popular workflow plugin <a href=\"http:\/\/editflow.org\">Edit Flow<\/a>, if installed, and will automatically pull <a href=\"http:\/\/ben.balter.com\/2011\/10\/24\/advanced-workflow-management-tools-for-wp-document-revisions\/\">Edit Flow\u2019s advanced workflow management tools<\/a> into WP Document Revisions. Simply put, virtually every aspect of the plugin's functionality\u00a0from workflow states to user-level permissions\u00a0can be fully customized to your team's unique needs.<\/p>\n\n<p><strong>Future Proof<\/strong> - Switching costs a concern? WP Document Revisions is built with tomorrow's uncertainty in mind. Equally at home in an in-house server room as it is in the cloud, moving individual files or entire document repositories in and out of WP Document Revisions is a breeze (history and all). And since the software is open-source, you can easily add tools to automate the process of moving to or integrating with future third-party systems.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Support for any file type (docs, spreadsheets, images, PDFs\u200a\u2014\u200aanything!)<\/li>\n<li>Securely stores unlimited revisions of your business's essential files<\/li>\n<li>Provides a full file history in the form of a revision log,\u00a0accessible\u00a0via RSS<\/li>\n<li>Helps you track and organize documents as they move through your organization's existing workflow<\/li>\n<li>Each file gets a permanent, authenticated URL that always points to the latest version<\/li>\n<li>Each revision gets its own unique url (e.g.,TPS-Report-revision-3.doc)\u00a0accessible\u00a0only to those you deem<\/li>\n<li>Files are intuitively checked out and locked to prevent revisions from\u00a0colliding<\/li>\n<li>Toggle documents between public, private, and password protected with a single mouse click<\/li>\n<li>Runs in-house or in the cloud<\/li>\n<li>Secure: filenames are hashed on upload and files are only accessible through WordPress's proven authentication system<\/li>\n<li>Can move document upload folder to location outside of web root to further ensure government- and enterprise-grade security<\/li>\n<li>Documents and Revisions shortcodes, Recently Revised Documents widget<\/li>\n<li>Multisite and Windows (XAMPP) support<\/li>\n<li>Multiple language support including French, Spanish and German (easily translated to your language)<\/li>\n<li>Integration with <a href=\"https:\/\/editflow.org\">Edit Flow<\/a>, PublishPress or PublishPress Statuses.<\/li>\n<li>Opt-in <a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/block-editor\/\">Block Editor (Gutenberg) support<\/a> with document sidebar panel<\/li>\n<li>REST API security hardening: attachment data sanitized for non-editors, attachment ownership validation<\/li>\n<li>WordPress Abilities API integration (WP 6.9+) for AI agents and the command palette, with read-only abilities exposed over the Model Context Protocol via the <a href=\"https:\/\/github.com\/WordPress\/mcp-adapter\">WordPress MCP Adapter<\/a><\/li>\n<li>Native text extraction from PDF, DOCX, and ODT files (pluggable for additional formats), cached per-attachment for search and AI use<\/li>\n<li>AI-generated revision summaries via the <a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/https:\/\/make.wordpress.org\/core\/2026\/03\/24\/introducing-the-ai-client-in-wordpress-7-0\/\">WordPress 7.0 AI Client<\/a>, computed from a unified diff of the new revision against the prior one and pre-filled into the revision log for editor review. See the <a href=\"cookbook\/text-extraction-and-ai-summaries\/\">Text Extraction &amp; AI cookbook entry<\/a> for customization recipes<\/li>\n<li>WP-CLI <code>document-revisions extract-text<\/code> command to backfill the extraction cache across an existing library, with <code>--all<\/code>\/<code>--missing<\/code>\/<code>--id<\/code>\/<code>--extractor<\/code>\/<code>--force<\/code>\/<code>--dry-run<\/code> selectors<\/li>\n<li>Per-document and sitewide opt-outs for text extraction and AI pre-fill \u2014 extraction respects <code>WPDR_TEXT_EXTRACTION<\/code>, AI pre-fill respects <code>WPDR_AI_SUMMARY_PREFILL<\/code> and the core <code>WP_AI_SUPPORT<\/code> constant<\/li>\n<li>Clean uninstall: options, user meta, and capabilities removed on plugin deletion<\/li>\n<li>Deactivation hook flushes rewrite rules for clean deactivation<\/li>\n<li>Recently Revised Documents Widget, shortcodes, and templating functions for front-end integration<\/li>\n<li>Opt-in email notifications when a document changes workflow state or gains a new revision, with a configurable recipient list (see <a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/notifications\/\">Document Notifications<\/a>)<\/li>\n<\/ul>\n\n<h4>Features Available via the [Code Cookbook](https:\/\/github.com\/wp-document-revisions\/wp-document-revisions-Code-Cookbook)<\/h4>\n\n<ul>\n<li><strong>Audit Trail<\/strong> - creates check in \/ check out audit trail for all documents<\/li>\n<li><strong>Taxonomy-based Permissions<\/strong> - allows setting user-level permissions based on a custom taxonomy such as department<\/li>\n<li><strong>Third Party Encryption<\/strong> - example of how to integrate at rest encryption using third-party tools<\/li>\n<li><strong>Rename Documents<\/strong> - changes all references to \"Documents\" in the interface to any label of your choosing<\/li>\n<li><strong>Bulk Import<\/strong> - how to batch import a directory (or other list) of files as documents<\/li>\n<li><strong>Filetype Taxonomy<\/strong> - Adds support to filter by filetype<\/li>\n<li><strong>Track Changes<\/strong> - Auto-generates and appends revision summaries for changes to taxonomies, title, and visibility<\/li>\n<li><strong>Change Tracker<\/strong> - Auto-generates and appends revision summaries for changes to taxonomies, title, and visibility<\/li>\n<li><strong>WPML Support<\/strong> - Integration with WPML<\/li>\n<\/ul>\n\n<h3>Links<\/h3>\n\n<ul>\n<li><strong><a href=\"https:\/\/github.com\/wp-document-revisions\/wp-document-revisions\/\">Source Code<\/a><\/strong> (GitHub)<\/li>\n<li><strong><a href=\"https:\/\/github.com\/wp-document-revisions\/wp-document-revisions\/releases\/latest\">Latest Release<\/a><\/strong> - Download the newest version<\/li>\n<li><strong><a href=\"https:\/\/wordpress.org\/plugins\/wp-document-revisions\/\">WordPress.org Plugin Page<\/a><\/strong> - Official plugin listing<\/li>\n<li><strong><a href=\"https:\/\/github.com\/wp-document-revisions\/wp-document-revisions\/tree\/develop\">Development Version<\/a><\/strong> (<a href=\"https:\/\/github.com\/wp-document-revisions\/wp-document-revisions\/actions\/workflows\/ci.yml\">CI Status<\/a>)<\/li>\n<li><strong><a href=\"https:\/\/github.com\/wp-document-revisions\/wp-document-revisions-Code-Cookbook\">Code Cookbook<\/a><\/strong> - Code examples and customizations<\/li>\n<li><strong><a href=\"https:\/\/crowdin.com\/project\/wordpress-document-revisions\">Translations<\/a><\/strong> (Crowdin)<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/SUPPORT\/\">Where to get Support or Report an Issue<\/a><\/strong> - Get help when you need it<\/li>\n<li><strong><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/CONTRIBUTING\/\">How to Contribute<\/a><\/strong> - Join our community<\/li>\n<\/ul>\n\n<h3>Document Notifications<\/h3>\n\n<p>WP Document Revisions can email interested people when a document moves through your workflow \u2014 when it <strong>changes workflow state<\/strong> (for example, moved to <em>Under Review<\/em> or <em>Approved<\/em>) or when a <strong>new revision<\/strong> is saved. This turns workflow states from passive labels into an active review loop: the reviewer actually hears about it.<\/p>\n\n<p>Notifications are <strong>opt-in and disabled by default<\/strong>, so enabling the plugin (or upgrading) never starts sending mail on its own.<\/p>\n\n<h3>Enabling notifications<\/h3>\n\n<p>Notifications are configured under <strong>Settings \u2192 Media<\/strong>, in the <strong>Document Notifications<\/strong> section:<\/p>\n\n<ul>\n<li><strong>Email notifications when documents change<\/strong> \u2014 the master switch. Off by default; nothing is sent until you turn it on.<\/li>\n<li><strong>Notify these email addresses<\/strong> \u2014 a site-wide recipient list (one address per line, or comma-separated).<\/li>\n<li><strong>Notify when a document changes workflow state<\/strong> \u2014 on by default (only takes effect once the master switch is on).<\/li>\n<li><strong>Notify when a new revision of a document is saved<\/strong> \u2014 off by default.<\/li>\n<\/ul>\n\n<h3>Who gets notified<\/h3>\n\n<p>For each event, the recipients are:<\/p>\n\n<ul>\n<li>everyone on the site-wide recipient list, <strong>plus<\/strong><\/li>\n<li>the document's author,<\/li>\n<\/ul>\n\n<p>with two rules always applied:<\/p>\n\n<ul>\n<li><strong>the person who made the change is never notified of their own change<\/strong>, and<\/li>\n<li>duplicate and invalid addresses are removed.<\/li>\n<\/ul>\n\n<p>Each recipient receives their own copy \u2014 the recipient list is never exposed to the others, and no stray copy is sent to the site administrator.<\/p>\n\n<blockquote>\n  <p><strong>Note on bulk edits:<\/strong> because a notification is sent per document, changing the workflow state of many documents at once (for example, a bulk edit) sends one notification per document. Use the <code>document_notification_recipients<\/code> filter to suppress or reroute mail in that situation if needed.<\/p>\n<\/blockquote>\n\n<h3>Customizing with filters<\/h3>\n\n<p>Every part of the behavior is filterable. See <a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/filters\/\">Filters<\/a> for full signatures. In brief:<\/p>\n\n<ul>\n<li><code>document_notify_enabled<\/code>, <code>document_notify_on_state_change<\/code>, <code>document_notify_on_new_revision<\/code> \u2014 force-enable or force-disable the master switch and each event.<\/li>\n<li><code>document_notification_recipients<\/code> \u2014 receives <code>( array $emails, int $doc_id, string $event, int $actor_id )<\/code>. This is the seam for advanced routing: notify prior editors, or route by workflow state (e.g. send <em>Under Review<\/em> transitions to a review team).<\/li>\n<li><code>document_notification_subject<\/code>, <code>document_notification_message<\/code> \u2014 customize the email subject and body.<\/li>\n<li><code>document_notification_headers<\/code> \u2014 add email headers (e.g. a <code>From:<\/code> or <code>Reply-To:<\/code>).<\/li>\n<\/ul>\n\n<h4>Example: route \"Under Review\" to a review team<\/h4>\n\n<pre><code>`php\n<\/code><\/pre>\n\n<p>add_filter(\n    'document_notification_recipients',\n    function ( $emails, $doc_id, $event, $actor_id ) {\n        if ( 'state_change' !== $event ) {\n            return $emails;\n        }\n        $states = wp_get_object_terms( $doc_id, 'workflow_state', array( 'fields' =&gt; 'names' ) );\n        if ( in_array( 'Under Review', $states, true ) ) {\n            $emails[] = 'review-team@example.com';\n        }\n        return $emails;\n    },\n    10,\n    4\n);\n    <code>&lt;h3&gt;Delivery&lt;\/h3&gt;\nNotifications are sent through WordPress's standard<\/code>wp_mail()`. On sites with high mail volume or a slow mail server, install a transactional-email\/SMTP plugin so delivery does not add latency to saving a document.<\/p>\n\n<h3>Translations<\/h3>\n\n<p>Interested in translating WP Document Revisions? You can do so <a href=\"https:\/\/crowdin.com\/project\/wordpress-document-revisions\">via Crowdin<\/a>, or by submitting a pull request.<\/p>\n\n<ul>\n<li>French - <a href=\"http:\/\/omnimaki.com\/\">Hubert CAMPAN<\/a><\/li>\n<li>Spanish - <a href=\"https:\/\/www.ibidemgroup.com\">IBIDEM GROUP<\/a>, <a href=\"http:\/\/www.tradiart.com\/\">TradiArt<\/a>, and <a href=\"http:\/\/www.labitacoradeltigre.com\">elarequi<\/a><\/li>\n<li>Norwegian - Daniel Haugen<\/li>\n<li>German -<a href=\"http:\/\/en.wp.obenland.it\/\">Konstantin Obenland<\/a><\/li>\n<li>Chinese - Tim Ren<\/li>\n<li>Swedish - Daniel Kroon, <a href=\"http:\/\/www.examinare.biz\/\">Examinare AB<\/a>, Sweden.<\/li>\n<li>Czech - Hynek \u0160\u0165av\u00edk<\/li>\n<li>Italian - @guterboit<\/li>\n<li>Russian - Evgeny Vlasov<\/li>\n<li>Dutch - @tijscruysen<\/li>\n<\/ul>\n\n<h3>Useful plugins and tools<\/h3>\n\n<h4>Permissions management<\/h4>\n\n<ul>\n<li><p><a href=\"https:\/\/wordpress.org\/plugins\/members\/\">Members - Membership &amp; User Role Editor Plugin<\/a><\/p>\n\n<p>(Previously called Members)<\/p><\/li>\n<\/ul>\n\n<h4>Taxonomy management<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/simple-taxonomy-refreshed\/\">Simple Taxonomy Refreshed<\/a><\/li>\n<\/ul>\n\n<h4>Email notification and distribution<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/email-notice-wp-document-revisions\/\">Email Notice for WP Document Revisions<\/a><\/li>\n<\/ul>\n\n<h4>Document workflow management<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/edit-flow\/\">Edit Flow<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/publishpress-statuses\/\">PublishPress Statuses<\/a><\/li>\n<li><a href=\"https:\/\/wp-document-revisions.github.io\/wp-document-revisions\/https:\/\/wordpress.org\/plugins\/publishpress-revisions\/\">PublishPress Revisions<\/a> - See the <a href=\"cookbook\/publishpress-revisions-integration\/\">integration guide<\/a> for scheduling document revisions<\/li>\n<\/ul>","raw_excerpt":"Document management and version control for WordPress. Collaborate on files, track every revision, and auto-generate change summaries with AI.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/12628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kk.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kk.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=12628"}],"author":[{"embeddable":true,"href":"https:\/\/kk.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/benbalter"}],"wp:attachment":[{"href":"https:\/\/kk.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=12628"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=12628"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=12628"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=12628"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=12628"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=12628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}