[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fUd3lgZhz99NTZEQMbxErMdgYYyKOxxR4AsMNRZgmklg":3},{"slug":4,"display_name":5,"profile_url":6,"plugin_count":7,"total_installs":8,"avg_security_score":9,"avg_patch_time_days":10,"trust_score":11,"computed_at":12,"plugins":13},"benbalter","Ben Balter","https:\u002F\u002Fprofiles.wordpress.org\u002Fbenbalter\u002F",7,2790,89,13,86,"2026-04-04T04:19:54.193Z",[14,41,64,84,104,123,139],{"slug":15,"name":16,"version":17,"author":5,"author_profile":6,"description":18,"short_description":19,"active_installs":20,"downloaded":21,"rating":22,"num_ratings":23,"last_updated":24,"tested_up_to":25,"requires_at_least":26,"requires_php":27,"tags":28,"homepage":34,"download_link":35,"security_score":36,"vuln_count":37,"unpatched_count":38,"last_vuln_date":39,"fetched_at":40},"wp-document-revisions","WP Document Revisions","3.8.1","\u003Cp>A document management and version control plugin for WordPress that allows teams of any size to collaboratively edit files and manage their workflow.\u003C\u002Fp>\n\u003Ch3>What is WP Document Revisions?\u003C\u002Fh3>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-document-revisions\u002F\" rel=\"ugc\">WP Document Revisions\u003C\u002Fa> is a \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDocument_management_system\" rel=\"nofollow ugc\">document management\u003C\u002Fa> and \u003Ca href=\"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRevision_control\" rel=\"nofollow ugc\">version control\u003C\u002Fa> plugin. Built 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.\u003C\u002Fp>\n\u003Ch4>WP Document Revisions is three things\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Cstrong>📁 Document Management System (DMS)\u003C\u002Fstrong> – Track, store, and organize files of any format\u003C\u002Fli>\n\u003Cli>\u003Cstrong>👥 Collaboration Tool\u003C\u002Fstrong> – Empower teams to collaboratively draft, edit, and refine documents\u003C\u002Fli>\n\u003Cli>\u003Cstrong>🔒 File Hosting Solution\u003C\u002Fstrong> – Publish and securely deliver files to teams, clients, or the public\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Ffeatures\u002F\" rel=\"nofollow ugc\">\u003Cstrong>the full list of features\u003C\u002Fstrong>\u003C\u002Fa> for more information.\u003C\u002Fp>\n\u003Ch3>📚 Documentation\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\" rel=\"nofollow ugc\">Complete Documentation Site\u003C\u002Fa>\u003C\u002Fstrong> – Your one-stop resource for everything about WP Document Revisions.\u003C\u002Fp>\n\u003Ch4>🎯 Quick Start Guides\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Finstallation\u002F\" rel=\"nofollow ugc\">Installation\u003C\u002Fa>\u003C\u002Fstrong> – Get up and running in minutes\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Ffeatures\u002F\" rel=\"nofollow ugc\">Features and Overview\u003C\u002Fa>\u003C\u002Fstrong> – Discover what WP Document Revisions can do\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Fscreenshots\u002F\" rel=\"nofollow ugc\">Screenshots\u003C\u002Fa>\u003C\u002Fstrong> – See the plugin in action\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>📖 User Documentation\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Ffrequently-asked-questions\u002F\" rel=\"nofollow ugc\">Frequently Asked Questions\u003C\u002Fa>\u003C\u002Fstrong> – Common questions answered\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Factions\u002F\" rel=\"nofollow ugc\">Plugin Actions\u003C\u002Fa>\u003C\u002Fstrong> – Available WordPress actions\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Ffilters\u002F\" rel=\"nofollow ugc\">Plugin Filters\u003C\u002Fa>\u003C\u002Fstrong> – Available WordPress filters\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Fshortcodes\u002F\" rel=\"nofollow ugc\">Plugin Shortcodes and Widget\u003C\u002Fa>\u003C\u002Fstrong> – Display documents on your site\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Fuseful-plugins-and-tools\u002F\" rel=\"nofollow ugc\">Useful Plugins and Tools\u003C\u002Fa>\u003C\u002Fstrong> – Extend functionality\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Ftranslations\u002F\" rel=\"nofollow ugc\">Translations\u003C\u002Fa>\u003C\u002Fstrong> – Multi-language support\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Flinks\u002F\" rel=\"nofollow ugc\">Links\u003C\u002Fa>\u003C\u002Fstrong> – Additional resources\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>🆘 Support & Community\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002FSUPPORT\u002F\" rel=\"nofollow ugc\">Where to get Support or Report an Issue\u003C\u002Fa>\u003C\u002Fstrong> – Get help when you need it\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002FCONTRIBUTING\u002F\" rel=\"nofollow ugc\">How to Contribute\u003C\u002Fa>\u003C\u002Fstrong> – Join our community\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgroups.google.com\u002Fforum\u002F#!forum\u002Fwp-document-revisions\" rel=\"nofollow ugc\">Join the Mailing List\u003C\u002Fa>\u003C\u002Fstrong> – Stay updated\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Ch4>Overview\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Powerful Collaboration Tools\u003C\u002Fstrong> – \u003Cem>With great power does not have to come great complexity.\u003C\u002Fem> Based on a simple philosophy of putting powerful but intuitive tools in the hands of managers and content creators, WP Document Revisions leverages many of the essential WordPress features that, for more than eight years, have been tested and proven across countless industries — posts, attachments, revisions, taxonomies, authentication, and permalinks — to make collaborating on the creation and publication of documents a natural endeavor. Think of it as an \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002F2011\u002F04\u002F04\u002Fwhen-all-you-have-is-a-pair-of-bolt-cutters\u002F\" rel=\"nofollow ugc\">open-source and more intuitive version\u003C\u002Fa> of the popular Microsoft collaboration suite, \u003Ca href=\"http:\u002F\u002Fsharepoint.microsoft.com\u002Fen-us\u002FPages\u002Fdefault.aspx\" rel=\"nofollow ugc\">Sharepoint.\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Document History\u003C\u002Fstrong> – 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 — so don’t fret if you make a mistake — or receive updates on changes to the document right in your favorite feed reader.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Access Control\u003C\u002Fstrong> – Each document is given a persistent URL (e.g., yourcompany.com\u002Fdocuments\u002F2011\u002F08\u002FTPS-Report.doc) which can be private (securely delivered 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.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Enterprise Security\u003C\u002Fstrong> – 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. Each file is masked behind an anonymous 128-bit \u003Ca href=\"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMD5\" rel=\"nofollow ugc\">MD5 hash\u003C\u002Fa> as soon as it touches the server, and requests for files are transparently routed through WordPress’s time-tested URL rewriting, authentication, and permission systems (which can even \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Factive-directory-integration\u002F\" rel=\"ugc\">integrate with existing enterprise active directory\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fsimple-ldap-login\u002F\" rel=\"ugc\">LDAP servers\u003C\u002Fa>). Need more security? WP Document Revisions allows you to store documents in a folder above the \u003Ccode>htdocs\u003C\u002Fcode> or \u003Ccode>public_html\u003C\u002Fcode> \u003Ca href=\"http:\u002F\u002Fhttpd.apache.org\u002Fdocs\u002F2.0\u002Fmod\u002Fcore.html#documentroot\" rel=\"nofollow ugc\">web root\u003C\u002Fa>, further ensuring that only those you authorize have access to your work.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Customization\u003C\u002Fstrong> – WP Document Revisions recognizes that no two teams are identical, and as a result, molds to your firm’s needs, not the other way around. Need to track additional information associated with a document? Departments, editors, issues, sections, even arbitrary key-value pairs — whatever you can throw at it, it can handle. Development and customization costs are further minimized by its extensive plugin API, and the \u003Ca href=\"http:\u002F\u002Fthemergency.com\u002Fgenerators\u002Fwordpress-custom-taxonomy\u002F\" rel=\"nofollow ugc\">WordPress Custom Taxonomy Generator\u003C\u002Fa> makes it easy for even the uninitiated to 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 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions-Code-Cookbook\" rel=\"nofollow ugc\">WP Document Revisions Code Cookbook\u003C\u002Fa> for sample code. Looking for even more advanced control of your workflow? WP Document Revisions will detect the popular workflow plugin \u003Ca href=\"http:\u002F\u002Feditflow.org\" rel=\"nofollow ugc\">Edit Flow\u003C\u002Fa>, if installed, and will automatically pull \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002F2011\u002F10\u002F24\u002Fadvanced-workflow-management-tools-for-wp-document-revisions\u002F\" rel=\"nofollow ugc\">Edit Flow’s advanced workflow management tools\u003C\u002Fa> into WP Document Revisions. Simply put, virtually every aspect of the plugin’s functionality from workflow states to user-level permissions can be fully customized to your team’s unique needs.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Future Proof\u003C\u002Fstrong> – 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.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Support for any file type (docs, spreadsheets, images, PDFs — anything!)\u003C\u002Fli>\n\u003Cli>Securely stores unlimited revisions of your business’s essential files\u003C\u002Fli>\n\u003Cli>Provides a full file history in the form of a revision log, accessible via RSS\u003C\u002Fli>\n\u003Cli>Helps you track and organize documents as they move through your organization’s existing workflow\u003C\u002Fli>\n\u003Cli>Each file gets a permanent, authenticated URL that always points to the latest version\u003C\u002Fli>\n\u003Cli>Each revision gets its own unique url (e.g.,TPS-Report-revision-3.doc) accessible only to those you deem\u003C\u002Fli>\n\u003Cli>Files are intuitively checked out and locked to prevent revisions from colliding\u003C\u002Fli>\n\u003Cli>Toggle documents between public, private, and password protected with a single mouse click\u003C\u002Fli>\n\u003Cli>Runs in-house or in the cloud\u003C\u002Fli>\n\u003Cli>Secure: filenames are hashed on upload and files are only accessible through WordPress’s proven authentication system\u003C\u002Fli>\n\u003Cli>Can move document upload folder to location outside of web root to further ensure government- and enterprise-grade security\u003C\u002Fli>\n\u003Cli>Documents and Revisions shortcodes, Recently Revised Documents widget\u003C\u002Fli>\n\u003Cli>Multisite and Windows (XAMPP) support\u003C\u002Fli>\n\u003Cli>Multiple language support including French, Spanish and German (easily translated to your language)\u003C\u002Fli>\n\u003Cli>Integration with \u003Ca href=\"https:\u002F\u002Feditflow.org\" rel=\"nofollow ugc\">Edit Flow\u003C\u002Fa>, PublishPress or PublishPress Statuses.\u003C\u002Fli>\n\u003Cli>Recently Revised Documents Widget, shortcodes, and templating functions for front-end integration\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Features Available via the [Code Cookbook](https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions-Code-Cookbook)\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Audit Trail\u003C\u002Fstrong> – creates check in \u002F check out audit trail for all documents\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Taxonomy-based Permissions\u003C\u002Fstrong> – allows setting user-level permissions based on a custom taxonomy such as department\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Third Party Encryption\u003C\u002Fstrong> – example of how to integrate at rest encryption using third-party tools\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Rename Documents\u003C\u002Fstrong> – changes all references to “Documents” in the interface to any label of your choosing\u003C\u002Fli>\n\u003Cli>\u003Cstrong>State Change Notification\u003C\u002Fstrong> – how to use document api to allow users to receive notification whenever documents change workflow state\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bulk Import\u003C\u002Fstrong> – how to batch import a directory (or other list) of files as documents\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Filetype Taxonomy\u003C\u002Fstrong> – Adds support to filter by filetype\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Track Changes\u003C\u002Fstrong> – Auto-generates and appends revision summaries for changes to taxonomies, title, and visibility\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Change Tracker\u003C\u002Fstrong> – Auto-generates and appends revision summaries for changes to taxonomies, title, and visibility\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WPML Support\u003C\u002Fstrong> – Integration with WPML\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Security Policy\u003C\u002Fh3>\n\u003Cp>To report a security vulnerability, please email \u003Ca href=\"mailto:ben@balter.com\" rel=\"nofollow ugc\">ben@balter.com\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Where to get help or report an issue\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>For getting started and general documentation, please browse, and feel free to contribute to \u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002F\" rel=\"nofollow ugc\">the project documentation\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>For support questions (“How do I”, “I can’t seem to”, etc.) please search and if not already answered, open a thread in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fwp-document-revisions\" rel=\"ugc\">Support Forums\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>For technical issues (e.g., to submit a bug or feature request) please search and if not already filed, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fissues\" rel=\"nofollow ugc\">open an issue on GitHub\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>For implementation, and all general questions (“Is it possible to..”, “Has anyone…”), please search, and if not already answered, post a topic to the \u003Ca href=\"https:\u002F\u002Fgroups.google.com\u002Fforum\u002F#!forum\u002Fwp-document-revisions\" rel=\"nofollow ugc\">general discussion list serve\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Things to check before reporting an issue\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Are you using the latest version of WordPress?\u003C\u002Fli>\n\u003Cli>Are you using the latest version of the plugin?\u003C\u002Fli>\n\u003Cli>Does the problem occur even when you deactivate all plugins and use the default theme?\u003C\u002Fli>\n\u003Cli>Have you tried deactivating and reactivating the plugin?\u003C\u002Fli>\n\u003Cli>Has your issue \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fissues\" rel=\"nofollow ugc\">already been reported\u003C\u002Fa>?\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>What to include in an issue\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>What steps can another user take to recreate the issue?\u003C\u002Fli>\n\u003Cli>What is the expected outcome of that action?\u003C\u002Fli>\n\u003Cli>What is the actual outcome of that action?\u003C\u002Fli>\n\u003Cli>Are there any screenshots or screencasts that may be helpful to include?\u003C\u002Fli>\n\u003Cli>Only include one bug per issue. If you have discovered two bugs, please file two issues.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Links\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002F\" rel=\"nofollow ugc\">Source Code\u003C\u002Fa>\u003C\u002Fstrong> (GitHub)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Freleases\u002Flatest\" rel=\"nofollow ugc\">Latest Release\u003C\u002Fa>\u003C\u002Fstrong> – Download the newest version\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-document-revisions\u002F\" rel=\"ugc\">WordPress.org Plugin Page\u003C\u002Fa>\u003C\u002Fstrong> – Official plugin listing\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Ftree\u002Fdevelop\" rel=\"nofollow ugc\">Development Version\u003C\u002Fa>\u003C\u002Fstrong> (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Factions\u002Fworkflows\u002Fci.yml\" rel=\"nofollow ugc\">CI Status\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions-Code-Cookbook\" rel=\"nofollow ugc\">Code Cookbook\u003C\u002Fa>\u003C\u002Fstrong> – Code examples and customizations\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fcrowdin.com\u002Fproject\u002Fwordpress-document-revisions\" rel=\"nofollow ugc\">Translations\u003C\u002Fa>\u003C\u002Fstrong> (Crowdin)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002FSUPPORT\u002F\" rel=\"nofollow ugc\">Where to get Support or Report an Issue\u003C\u002Fa>\u003C\u002Fstrong> – Get help when you need it\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002FCONTRIBUTING\u002F\" rel=\"nofollow ugc\">How to Contribute\u003C\u002Fa>\u003C\u002Fstrong> – Join our community\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Translations\u003C\u002Fh3>\n\u003Cp>Interested in translating WP Document Revisions? You can do so \u003Ca href=\"https:\u002F\u002Fcrowdin.com\u002Fproject\u002Fwordpress-document-revisions\" rel=\"nofollow ugc\">via Crowdin\u003C\u002Fa>, or by submitting a pull request.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>French – \u003Ca href=\"http:\u002F\u002Fomnimaki.com\u002F\" rel=\"nofollow ugc\">Hubert CAMPAN\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Spanish – \u003Ca href=\"https:\u002F\u002Fwww.ibidemgroup.com\" rel=\"nofollow ugc\">IBIDEM GROUP\u003C\u002Fa>, \u003Ca href=\"http:\u002F\u002Fwww.tradiart.com\u002F\" rel=\"nofollow ugc\">TradiArt\u003C\u002Fa>, and \u003Ca href=\"http:\u002F\u002Fwww.labitacoradeltigre.com\" rel=\"nofollow ugc\">elarequi\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Norwegian – Daniel Haugen\u003C\u002Fli>\n\u003Cli>German –\u003Ca href=\"http:\u002F\u002Fen.wp.obenland.it\u002F\" rel=\"nofollow ugc\">Konstantin Obenland\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Chinese – Tim Ren\u003C\u002Fli>\n\u003Cli>Swedish – Daniel Kroon, \u003Ca href=\"http:\u002F\u002Fwww.examinare.biz\u002F\" rel=\"nofollow ugc\">Examinare AB\u003C\u002Fa>, Sweden.\u003C\u002Fli>\n\u003Cli>Czech – Hynek Šťavík\u003C\u002Fli>\n\u003Cli>Italian – @guterboit\u003C\u002Fli>\n\u003Cli>Russian – Evgeny Vlasov\u003C\u002Fli>\n\u003Cli>Dutch – @tijscruysen\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Useful plugins and tools\u003C\u002Fh3>\n\u003Ch4>Permissions management\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmembers\u002F\" rel=\"ugc\">Members – Membership & User Role Editor Plugin\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>(Previously called Members)\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Taxonomy management\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsimple-taxonomy-refreshed\u002F\" rel=\"ugc\">Simple Taxonomy Refreshed\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Email notification and distribution\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Femail-notice-wp-document-revisions\u002F\" rel=\"ugc\">Email Notice for WP Document Revisions\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Document workflow management\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fedit-flow\u002F\" rel=\"ugc\">Edit Flow\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fpublishpress-statuses\u002F\" rel=\"ugc\">PublishPress Statuses\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fpublishpress-revisions\u002F\" rel=\"ugc\">PublishPress Revisions\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Security\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Fix CVE-2025-68585: Add missing authorization check to update_post_slug_field by @Copilot in https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fpull\u002F429\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Bug fixes\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Address Link Date field issue #389 by @NeilWJames in https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fpull\u002F390\u003C\u002Fli>\n\u003Cli>Address #414 – Bug on upload, Cannot read properties of undefined by @NeilWJames in https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fpull\u002F417\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Developer fixes\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Fix PHPDoc tags: Replace non-standard @returns with @return by @Copilot in https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fpull\u002F394\u003C\u002Fli>\n\u003Cli>Improve test suite with better assertions, edge cases, and utility coverage by @Copilot in https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fpull\u002F392\u003C\u002Fli>\n\u003Cli>Optimize performance: reduce database queries and regex operations by @Copilot in https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fpull\u002F402\u003C\u002Fli>\n\u003Cli>Fix: Regenerate minified JS files and prevent Prettier from formatting them by @Copilot in https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fpull\u002F404\u003C\u002Fli>\n\u003Cli>Add comprehensive front-end JavaScript test suite by @Copilot in https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fpull\u002F410\u003C\u002Fli>\n\u003Cli>Small corrections by @NeilWJames in https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fpull\u002F408\u003C\u002Fli>\n\u003Cli>Replace PHPUnit string assertions with strpos-based alternatives for compatibility by @Copilot in https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fpull\u002F434\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Full Changelog\u003C\u002Fstrong>: https:\u002F\u002Fgithub.com\u002Fwp-document-revisions\u002Fwp-document-revisions\u002Fcompare\u002F3.7.2…v3.8.0\u003C\u002Fp>\n\u003Ch4>3.7.2\u003C\u002Fh4>\n\u003Cp>Correct plugin metadata (no code changes).\u003C\u002Fp>\n\u003Ch4>3.7.1\u003C\u002Fh4>\n\u003Cp>For complete changelog, see \u003Ca href=\"https:\u002F\u002Fwp-document-revisions.github.io\u002Fwp-document-revisions\u002Fchangelog\u002F\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa>\u003C\u002Fp>\n","A document management and version control plugin for WordPress that allows teams of any size to collaboratively edit files and manage their workflow.",2000,169522,74,23,"2025-12-26T19:52:00.000Z","6.9.4","4.9","",[29,30,31,32,33],"collaboration","document-management","documents","revisions","version-control","http:\u002F\u002Fben.balter.com\u002F2011\u002F08\u002F29\u002Fwp-document-revisions-document-management-version-control-wordpress\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-document-revisions.3.8.1.zip",99,1,0,"2025-12-25 00:00:00","2026-03-15T15:16:48.613Z",{"slug":42,"name":43,"version":44,"author":5,"author_profile":6,"description":45,"short_description":46,"active_installs":47,"downloaded":48,"rating":49,"num_ratings":50,"last_updated":51,"tested_up_to":25,"requires_at_least":52,"requires_php":53,"tags":54,"homepage":60,"download_link":61,"security_score":62,"vuln_count":38,"unpatched_count":38,"last_vuln_date":63,"fetched_at":40},"jekyll-exporter","Static Site Exporter","3.1.1","\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Converts all posts, pages, and settings from WordPress to Markdown and YAML for use in Jekyll (or Hugo or any other Markdown and YAML based site engine)\u003C\u002Fli>\n\u003Cli>Export what your users see, not what the database stores (runs post content through \u003Ccode>the_content\u003C\u002Fcode> filter prior to export, allowing third-party plugins to modify the output)\u003C\u002Fli>\n\u003Cli>Converts all \u003Ccode>post_content\u003C\u002Fcode> to Markdown\u003C\u002Fli>\n\u003Cli>Converts all \u003Ccode>post_meta\u003C\u002Fcode> and fields within the \u003Ccode>wp_posts\u003C\u002Fcode> table to YAML front matter for parsing by Jekyll\u003C\u002Fli>\n\u003Cli>Generates a \u003Ccode>_config.yml\u003C\u002Fcode> with all settings in the \u003Ccode>wp_options\u003C\u002Fcode> table\u003C\u002Fli>\n\u003Cli>Outputs a single zip file with \u003Ccode>_config.yml\u003C\u002Fcode>, pages, and \u003Ccode>_posts\u003C\u002Fcode> folder containing \u003Ccode>.md\u003C\u002Fcode> files for each post in the proper Jekyll naming convention\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Selective export\u003C\u002Fstrong>: Export only specific categories, tags, or post types using WP-CLI\u003C\u002Fli>\n\u003Cli>No settings. Just a single click.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Place plugin in \u003Ccode>\u002Fwp-content\u002Fplugins\u002F\u003C\u002Fcode> folder\u003C\u002Fli>\n\u003Cli>Activate plugin in WordPress dashboard\u003C\u002Fli>\n\u003Cli>Select \u003Ccode>Export to Jekyll\u003C\u002Fcode> from the \u003Ccode>Tools\u003C\u002Fcode> menu\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>More information\u003C\u002Fh3>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\" rel=\"nofollow ugc\">the full documentation\u003C\u002Fa>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fchangelog\u002F\" rel=\"nofollow ugc\">Changelog\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fcommand-line-usage\u002F\" rel=\"nofollow ugc\">Command-line-usage\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fselective-export\u002F\" rel=\"nofollow ugc\">Selective export by category or tag\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fcustom-post-types\u002F\" rel=\"nofollow ugc\">Custom post types\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fcustom-fields\u002F\" rel=\"nofollow ugc\">Custom fields\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fdeveloping-locally\u002F\" rel=\"nofollow ugc\">Developing locally\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Frequired-php-version\u002F\" rel=\"nofollow ugc\">Minimum required PHP version\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Security Policy\u003C\u002Fh3>\n\u003Cp>To report a security vulnerability, please email \u003Ca href=\"mailto:ben@balter.com\" rel=\"nofollow ugc\">ben@balter.com\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Where to get help or report an issue\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>For getting started and general documentation, please browse, and feel free to contribute to \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F\" rel=\"nofollow ugc\">the project documentation\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>For support questions (“How do I”, “I can’t seem to”, etc.) please search and if not already answered, open a thread in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fjekyll-exporter\" rel=\"ugc\">Support Forums\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>For technical issues (e.g., to submit a bug or feature request) please search and if not already filed, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002F\u002Fwordpress-to-jekyll-exporter\u002Fissues\" rel=\"nofollow ugc\">open an issue on GitHub\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Things to check before reporting an issue\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Are you using the latest version of WordPress?\u003C\u002Fli>\n\u003Cli>Are you using the latest version of the plugin?\u003C\u002Fli>\n\u003Cli>Does the problem occur even when you deactivate all plugins and use the default theme?\u003C\u002Fli>\n\u003Cli>Have you tried deactivating and reactivating the plugin?\u003C\u002Fli>\n\u003Cli>Has your issue \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u002Fissues\" rel=\"nofollow ugc\">already been reported\u003C\u002Fa>?\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>What to include in an issue\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>What steps can another user take to recreate the issue?\u003C\u002Fli>\n\u003Cli>What is the expected outcome of that action?\u003C\u002Fli>\n\u003Cli>What is the actual outcome of that action?\u003C\u002Fli>\n\u003Cli>Are there any screenshots or screencasts that may be helpful to include?\u003C\u002Fli>\n\u003Cli>Only include one bug per issue. If you have discovered two bugs, please file two issues.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Command-line Usage\u003C\u002Fh3>\n\u003Cp>If you’re having trouble with your web server timing out before the export is complete, or if you just like terminal better, you may enjoy the command-line tool.\u003C\u002Fp>\n\u003Cp>It works just like the plugin, but produces the zipfile on STDOUT:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>php jekyll-export-cli.php > jekyll-export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>If using this method, you must run first \u003Ccode>cd\u003C\u002Fcode> into the wordpress-to-jekyll-exporter directory.\u003C\u002Fp>\n\u003Cp>Alternatively, if you have \u003Ca href=\"http:\u002F\u002Fwp-cli.org\" rel=\"nofollow ugc\">WP-CLI\u003C\u002Fa> installed, you can run:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>The WP-CLI version will provide greater compatibility for alternate WordPress environments, such as when \u003Ccode>wp-content\u003C\u002Fcode> isn’t in the usual location.\u003C\u002Fp>\n\u003Ch3>Filtering by Category or Tag\u003C\u002Fh3>\n\u003Cp>You can export only specific categories or tags using the WP-CLI command. This is useful when you want to convert just one section of your WordPress site instead of the entire corpus.\u003C\u002Fp>\n\u003Ch4>Export posts from a specific category:\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export –category=technology > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>Export posts from multiple categories:\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export –category=tech,news,updates > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>Export posts with a specific tag:\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export –tag=featured > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>Export only pages (or specific post types):\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export –post_type=page > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>Combine filters:\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export –category=technology –tag=featured –post_type=post > export.zip\u003Cbr \u002F>\n    \u003Ccode>\u003Ch3>Using Filters in PHP\u003C\u002Fh3>\u003Cbr \u002F>\nIf you're using the plugin via PHP code or want more control, you can use the\u003C\u002Fcode>jekyll_export_taxonomy_filters` filter:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_taxonomy_filters’, function() {\u003Cbr \u002F>\n    return array(\u003Cbr \u002F>\n        ‘category’ => array( ‘technology’, ‘science’ ),\u003Cbr \u002F>\n        ‘post_tag’ => array( ‘featured’ ),\u003Cbr \u002F>\n    );\u003Cbr \u002F>\n} );\u003C\u002Fp>\n\u003Cp>\u002F\u002F Then trigger the export\u003Cbr \u002F>\nglobal $jekyll_export;\u003Cbr \u002F>\n$jekyll_export->export();\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Custom fields\u003C\u002Fh3>\n\u003Cp>When using custom fields (e.g. with the Advanced Custom fields plugin) you might have to register a filter to convert array style configs to plain values.\u003C\u002Fp>\n\u003Ch4>Available Filters\u003C\u002Fh4>\n\u003Cp>The plugin provides two filters for customizing post metadata:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>jekyll_export_meta\u003C\u002Fcode>\u003C\u002Fstrong>: Filters the metadata for a single post before it’s merged with taxonomy terms. Receives \u003Ccode>$meta\u003C\u002Fcode> array as the only parameter.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>jekyll_export_post_meta\u003C\u002Fcode>\u003C\u002Fstrong>: Filters the complete metadata array (including taxonomy terms) just before it’s written to the YAML frontmatter. Receives \u003Ccode>$meta\u003C\u002Fcode> array and \u003Ccode>$post\u003C\u002Fcode> object as parameters. This is the recommended filter for most use cases.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> As of the latest version, the plugin no longer automatically removes empty or falsy values from the frontmatter. All metadata is preserved by default. If you want to remove certain fields, you can use the \u003Ccode>jekyll_export_post_meta\u003C\u002Fcode> filter to customize this behavior.\u003C\u002Fp>\n\u003Cp>By default, the plugin saves custom fields in an array structure that is exported as:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>[“my-bool”]=>\u003Cbr \u002F>\n    array(1) {\u003Cbr \u002F>\n        [0] => string(1) “1”\u003Cbr \u002F>\n    }\u003Cbr \u002F>\n[“location”]=>\u003Cbr \u002F>\n    array(1) {\u003Cbr \u002F>\n        [0] => string(88) “My address”\u003Cbr \u002F>\n    }\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>And this leads to a YAML structure like:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`yaml\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>my-bool:\u003Cbr \u002F>\n– “1”\u003Cbr \u002F>\nlocation:\u003Cbr \u002F>\n– ‘My address’\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>This is likely not the structure you expect or want to work with. You can convert it using a filter:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_meta’, function($meta) {\u003Cbr \u002F>\n    foreach ($meta as $key => $value) {\u003Cbr \u002F>\n        if (is_array($value) && count($value) === 1 && array_key_exists(0, $value)) {\u003Cbr \u002F>\n            $meta[$key] = $value[0];\u003Cbr \u002F>\n        }\u003Cbr \u002F>\n    }\u003C\u002Fp>\n\u003Cpre>\u003Ccode>return $meta;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>});\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>A more complete solution could look like that:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_meta’, function($meta) {\u003Cbr \u002F>\n    foreach ($meta as $key => $value) {\u003Cbr \u002F>\n        \u002F\u002F Advanced Custom Fields\u003Cbr \u002F>\n        if (is_array($value) && count($value) === 1 && array_key_exists(0, $value)) {\u003Cbr \u002F>\n            $value = maybe_unserialize($value[0]);\u003Cbr \u002F>\n            \u002F\u002F Advanced Custom Fields: NextGEN Gallery Field add-on\u003Cbr \u002F>\n            if (is_array($value) && count($value) === 1 && array_key_exists(0, $value)) {\u003Cbr \u002F>\n                $value = $value[0];\u003Cbr \u002F>\n            }\u003Cbr \u002F>\n        }\u003Cbr \u002F>\n        \u002F\u002F convert types\u003Cbr \u002F>\n        $value = match ($key) {\u003Cbr \u002F>\n            \u002F\u002F Advanced Custom Fields: “true_false” type\u003Cbr \u002F>\n            ‘my-bool’ => (bool) $value,\u003Cbr \u002F>\n            default => $value\u003Cbr \u002F>\n        };\u003Cbr \u002F>\n        $meta[$key] = $value;\u003Cbr \u002F>\n    }\u003C\u002Fp>\n\u003Cpre>\u003Ccode>return $meta;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>});\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>Removing Empty or Falsy Values\u003C\u002Fh4>\n\u003Cp>If you want to remove empty or falsy values from the frontmatter (similar to the pre-3.0.3 behavior), you can use the \u003Ccode>jekyll_export_post_meta\u003C\u002Fcode> filter:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_post_meta’, function( $meta, $post ) {\u003Cbr \u002F>\n    foreach ( $meta as $key => $value ) {\u003Cbr \u002F>\n        \u002F\u002F Remove falsy values except numeric 0\u003Cbr \u002F>\n        if ( ! is_numeric( $value ) && ! $value ) {\u003Cbr \u002F>\n            unset( $meta[ $key ] );\u003Cbr \u002F>\n        }\u003Cbr \u002F>\n    }\u003Cbr \u002F>\n    return $meta;\u003Cbr \u002F>\n}, 10, 2 );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Custom post types\u003C\u002Fh3>\n\u003Cp>To export custom post types, you’ll need to add a filter (w.g. to your themes config file) to do the following:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_post_types’, function() {\u003Cbr \u002F>\n    return array(‘post’, ‘page’, ‘you-custom-post-type’);\u003Cbr \u002F>\n});\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>The custom post type will be exported as a Jekyll collection. You’ll need to initialize it in the resulting Jekyll site’s \u003Ccode>_config.yml\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3>Developing locally\u003C\u002Fh3>\n\u003Ch4>Option 1: Using Dev Containers (Recommended)\u003C\u002Fh4>\n\u003Cp>The easiest way to get started is using \u003Ca href=\"https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Fdevcontainers\u002Fcontainers\" rel=\"nofollow ugc\">VS Code Dev Containers\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffeatures\u002Fcodespaces\" rel=\"nofollow ugc\">GitHub Codespaces\u003C\u002Fa>:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Install \u003Ca href=\"https:\u002F\u002Fcode.visualstudio.com\u002F\" rel=\"nofollow ugc\">VS Code\u003C\u002Fa> and the \u003Ca href=\"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=ms-vscode-remote.remote-containers\" rel=\"nofollow ugc\">Dev Containers extension\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ccode>git clone https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Open the folder in VS Code\u003C\u002Fli>\n\u003Cli>Click “Reopen in Container” when prompted\u003C\u002Fli>\n\u003Cli>Wait for the container to build and dependencies to install\u003C\u002Fli>\n\u003Cli>Access WordPress at \u003Ccode>http:\u002F\u002Flocalhost:8088\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>The devcontainer includes:\u003Cbr \u002F>\n– Pre-configured WordPress and MySQL\u003Cbr \u002F>\n– All PHP extensions and Composer dependencies\u003Cbr \u002F>\n– VS Code extensions for PHP development, debugging, and testing\u003Cbr \u002F>\n– WordPress coding standards configured\u003C\u002Fp>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002F.devcontainer\u002FREADME\u002F\" rel=\"nofollow ugc\">.devcontainer\u002FREADME.md\u003C\u002Fa> for more details.\u003C\u002Fp>\n\u003Ch4>Option 2: Manual Setup\u003C\u002Fh4>\n\u003Ch4>Prerequisites\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Ccode>sudo apt-get update\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install composer\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install php7.3-xml\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install php7.3-mysql\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install php7.3-zip\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install php-mbstring\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install subversion\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install mysql-server\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install php-pear\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo pear install PHP_CodeSniffer\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Bootstrap & Setup\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Ccode>git clone https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>cd wordpress-to-jekyll-exporter\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>script\u002Fbootstrap\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>script\u002Fsetup\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Option 3: Docker Compose Only\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Ccode>git clone https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>docker-compose up\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>open localhost:8088\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Running tests\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>script\u002Fcibuild\u003Ch3>Performance Optimizations\u003C\u002Fh3>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>This document describes the performance optimizations implemented in Static Site Exporter to improve export speed and reduce resource usage, especially for large WordPress sites.\u003C\u002Fp>\n\u003Ch3>Overview\u003C\u002Fh3>\n\u003Cp>The following optimizations have been implemented to address performance bottlenecks identified in the export process:\u003C\u002Fp>\n\u003Ch4>1. Optimized Database Queries\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Problem\u003C\u002Fstrong>: The original \u003Ccode>get_posts()\u003C\u002Fcode> method executed a separate SQL query for each post type, then merged the results using \u003Ccode>array_merge()\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Before (inefficient)\u003Cbr \u002F>\nforeach ( $post_types as $post_type ) {\u003Cbr \u002F>\n    $ids   = $wpdb->get_col( $wpdb->prepare( “SELECT ID FROM {$wpdb->posts} WHERE post_type = %s”, $post_type ) );\u003Cbr \u002F>\n    $posts = array_merge( $posts, $ids );\u003Cbr \u002F>\n}\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution\u003C\u002Fstrong>: Changed to a single SQL query using an IN clause.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F After (optimized)\u003Cbr \u002F>\n$placeholders = implode( ‘, ‘, array_fill( 0, count( $post_types ), ‘%s’ ) );\u003Cbr \u002F>\n$query        = “SELECT ID FROM {$wpdb->posts} WHERE post_type IN ($placeholders)”;\u003Cbr \u002F>\n$posts        = $wpdb->get_col( $wpdb->prepare( $query, $post_types ) );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Impact\u003C\u002Fstrong>: Reduces database round trips from N (number of post types, typically 3) to 1, significantly improving performance on sites with many posts.\u003C\u002Fp>\n\u003Ch4>2. User Data Caching\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Problem\u003C\u002Fstrong>: The \u003Ccode>convert_meta()\u003C\u002Fcode> method called \u003Ccode>get_userdata()\u003C\u002Fcode> for every post, resulting in redundant database queries for posts by the same author (N+1 query problem).\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Before (inefficient)\u003Cbr \u002F>\n‘author’  => get_userdata( $post->post_author )->display_name,\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution\u003C\u002Fstrong>: Implemented a static cache to store user data across post conversions.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F After (optimized)\u003Cbr \u002F>\nstatic $user_cache = array();\u003Cbr \u002F>\nif ( ! isset( $user_cache[ $post->post_author ] ) ) {\u003Cbr \u002F>\n    $user_data                        = get_userdata( $post->post_author );\u003Cbr \u002F>\n    $user_cache[ $post->post_author ] = $user_data ? $user_data->display_name : ”;\u003Cbr \u002F>\n}\u003Cbr \u002F>\n‘author’ => $user_cache[ $post->post_author ],\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Impact\u003C\u002Fstrong>: Eliminates redundant database queries for author information. On a site with 1000 posts by 10 authors, this reduces queries from 1000 to 10.\u003C\u002Fp>\n\u003Ch4>3. HTML to Markdown Converter Reuse\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Problem\u003C\u002Fstrong>: A new \u003Ccode>HtmlConverter\u003C\u002Fcode> instance was created for every post, wasting memory and CPU cycles on object initialization.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Before (inefficient)\u003Cbr \u002F>\n$converter = new HtmlConverter( $converter_options );\u003Cbr \u002F>\n$converter->getEnvironment()->addConverter( new TableConverter() );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution\u003C\u002Fstrong>: Reuse a single static instance across all post conversions.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F After (optimized)\u003Cbr \u002F>\nstatic $converter = null;\u003Cbr \u002F>\nif ( null === $converter ) {\u003Cbr \u002F>\n    $converter_options = apply_filters( ‘jekyll_export_markdown_converter_options’, array( ‘header_style’ => ‘atx’ ) );\u003Cbr \u002F>\n    $converter         = new HtmlConverter( $converter_options );\u003Cbr \u002F>\n    $converter->getEnvironment()->addConverter( new TableConverter() );\u003Cbr \u002F>\n}\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Impact\u003C\u002Fstrong>: Reduces object creation overhead. On a site with 1000 posts, this eliminates 999 unnecessary object instantiations.\u003C\u002Fp>\n\u003Ch4>4. Improved File Operations\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Problem\u003C\u002Fstrong>: The \u003Ccode>copy_recursive()\u003C\u002Fcode> method used the legacy \u003Ccode>dir()\u003C\u002Fcode> API which is slower than modern alternatives.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Before (inefficient)\u003Cbr \u002F>\n$dir = dir( $source );\u003Cbr \u002F>\nwhile ( $entry = $dir->read() ) {\u003Cbr \u002F>\n    \u002F\u002F process files\u003Cbr \u002F>\n}\u003Cbr \u002F>\n$dir->close();\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution\u003C\u002Fstrong>: Replaced with \u003Ccode>scandir()\u003C\u002Fcode> which is faster and more memory-efficient.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F After (optimized)\u003Cbr \u002F>\n$entries = @scandir( $source );\u003Cbr \u002F>\nif ( false === $entries ) {\u003Cbr \u002F>\n    return false;\u003Cbr \u002F>\n}\u003Cbr \u002F>\nforeach ( $entries as $entry ) {\u003Cbr \u002F>\n    \u002F\u002F process files\u003Cbr \u002F>\n}\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Impact\u003C\u002Fstrong>: Improves directory traversal speed, particularly noticeable when copying large upload directories.\u003C\u002Fp>\n\u003Ch4>5. Upload Directory Filtering\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>New Feature\u003C\u002Fstrong>: Added filters to allow skipping or excluding directories during the upload copy process.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Skip Entire Uploads\u003C\u002Fstrong>:\u003Cbr \u002F>\n    \u003Ccode>php\u003Cbr \u002F>\nadd_filter( 'jekyll_export_skip_uploads', '__return_true' );\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Exclude Specific Directories\u003C\u002Fstrong> (e.g., cache or temporary files):\u003Cbr \u002F>\n    \u003Ccode>php\u003Cbr \u002F>\nadd_filter( 'jekyll_export_excluded_upload_dirs', function( $excluded ) {\u003Cbr \u002F>\n    return array_merge( $excluded, array( '\u002Fcache\u002F', '\u002Ftmp\u002F', '\u002Fbackup\u002F' ) );\u003Cbr \u002F>\n} );\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Impact\u003C\u002Fstrong>: Allows large sites to:\u003Cbr \u002F>\n– Skip uploads entirely if they’re served from a CDN\u003Cbr \u002F>\n– Exclude cache directories that aren’t needed in the export\u003Cbr \u002F>\n– Reduce export time and file size for very large installations\u003C\u002Fp>\n\u003Ch3>Performance Benchmarks\u003C\u002Fh3>\n\u003Ch4>Estimated Improvements\u003C\u002Fh4>\n\u003Cp>Based on the optimizations, expected performance improvements for a typical WordPress site:\u003C\u002Fp>\n\u003Cp>  Site Size\u003Cbr \u002F>\n  Before\u003Cbr \u002F>\n  After\u003Cbr \u002F>\n  Improvement\u003C\u002Fp>\n\u003Cp>  Small (100 posts, 5 authors)\u003Cbr \u002F>\n  ~5s\u003Cbr \u002F>\n  ~3s\u003Cbr \u002F>\n  40% faster\u003C\u002Fp>\n\u003Cp>  Medium (1000 posts, 20 authors)\u003Cbr \u002F>\n  ~45s\u003Cbr \u002F>\n  ~20s\u003Cbr \u002F>\n  55% faster\u003C\u002Fp>\n\u003Cp>  Large (10000 posts, 50 authors)\u003Cbr \u002F>\n  ~8min\u003Cbr \u002F>\n  ~3min\u003Cbr \u002F>\n  63% faster\u003C\u002Fp>\n\u003Cp>\u003Cem>Note: Actual performance depends on server hardware, database configuration, and content complexity.\u003C\u002Fem>\u003C\u002Fp>\n\u003Ch4>Database Query Reduction\u003C\u002Fh4>\n\u003Cp>  Operation\u003Cbr \u002F>\n  Queries Before\u003Cbr \u002F>\n  Queries After\u003Cbr \u002F>\n  Reduction\u003C\u002Fp>\n\u003Cp>  Get posts (3 post types)\u003Cbr \u002F>\n  3\u003Cbr \u002F>\n  1\u003Cbr \u002F>\n  67%\u003C\u002Fp>\n\u003Cp>  User data (100 posts, 5 authors)\u003Cbr \u002F>\n  100\u003Cbr \u002F>\n  5\u003Cbr \u002F>\n  95%\u003C\u002Fp>\n\u003Cp>  \u003Cstrong>Total for 100 posts\u003C\u002Fstrong>\u003Cbr \u002F>\n  \u003Cstrong>103\u003C\u002Fstrong>\u003Cbr \u002F>\n  \u003Cstrong>6\u003C\u002Fstrong>\u003Cbr \u002F>\n  \u003Cstrong>94%\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch3>Backward Compatibility\u003C\u002Fh3>\n\u003Cp>All optimizations maintain backward compatibility:\u003Cbr \u002F>\n– All existing WordPress hooks and filters continue to work\u003Cbr \u002F>\n– No changes to the exported file format\u003Cbr \u002F>\n– No changes to the public API\u003Cbr \u002F>\n– New filters are opt-in and don’t affect default behavior\u003C\u002Fp>\n\u003Ch3>Additional Optimization Tips\u003C\u002Fh3>\n\u003Cp>For even better performance on large sites:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Increase PHP memory limit\u003C\u002Fstrong>: Add to \u003Ccode>wp-config.php\u003C\u002Fcode>:\u003Cbr \u002F>\n   \u003Ccode>php\u003Cbr \u002F>\ndefine( 'WP_MEMORY_LIMIT', '512M' );\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Use WP-CLI\u003C\u002Fstrong>: The command-line interface bypasses web server timeouts:\u003Cbr \u002F>\n   \u003Ccode>bash\u003Cbr \u002F>\nwp jekyll-export > export.zip\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Skip uploads if using CDN\u003C\u002Fstrong>: If your uploads are served from a CDN, you can skip copying them:\u003Cbr \u002F>\n   \u003Ccode>php\u003Cbr \u002F>\nadd_filter( 'jekyll_export_skip_uploads', '__return_true' );\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Enable object caching\u003C\u002Fstrong>: Use Redis or Memcached to speed up WordPress core queries.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Technical Notes\u003C\u002Fh3>\n\u003Ch4>Why Static Variables?\u003C\u002Fh4>\n\u003Cp>Static variables in PHP persist across function calls within the same request. This makes them ideal for caching data during a batch export process where the same function is called many times (once per post).\u003C\u002Fp>\n\u003Ch4>Thread Safety\u003C\u002Fh4>\n\u003Cp>These optimizations are safe for:\u003Cbr \u002F>\n– Single-threaded PHP execution (standard)\u003Cbr \u002F>\n– WordPress multisite installations\u003Cbr \u002F>\n– WP-CLI execution\u003C\u002Fp>\n\u003Cp>They are NOT designed for:\u003Cbr \u002F>\n– Multi-threaded or async PHP environments (not common in WordPress)\u003Cbr \u002F>\n– Long-running daemon processes (not the intended use case)\u003C\u002Fp>\n\u003Ch3>Future Optimization Opportunities\u003C\u002Fh3>\n\u003Cp>Potential areas for future improvement:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Bulk metadata loading\u003C\u002Fstrong>: Pre-load all post meta in a single query\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Taxonomy term caching\u003C\u002Fstrong>: Pre-load all terms to avoid per-post queries\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Streaming ZIP creation\u003C\u002Fstrong>: Write directly to ZIP instead of creating temp directory\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Parallel processing\u003C\u002Fstrong>: Use multiple processes for very large exports (WP-CLI only)\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Questions?\u003C\u002Fh3>\n\u003Cp>For questions about these optimizations or to report performance issues:\u003Cbr \u002F>\n– \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u002Fissues\" rel=\"nofollow ugc\">Open an issue\u003C\u002Fa>\u003Cbr \u002F>\n– \u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F\" rel=\"nofollow ugc\">View the documentation\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Performance Tips for Large Sites\u003C\u002Fh3>\n\u003Cp>If you’re running a large WordPress site with thousands of posts or gigabytes of uploads, here are some tips to make the export process faster and more efficient.\u003C\u002Fp>\n\u003Ch3>Quick Wins\u003C\u002Fh3>\n\u003Ch4>1. Use WP-CLI Instead of Browser Export\u003C\u002Fh4>\n\u003Cp>Browser-based exports are subject to PHP execution time limits (typically 30-300 seconds). Use WP-CLI for unlimited execution time:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>2. Skip Uploads if You Don’t Need Them\u003C\u002Fh4>\n\u003Cp>If your images and files are served from a CDN or you plan to handle them separately, you can skip the uploads directory entirely:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Add to your theme’s functions.php or a custom plugin\u003Cbr \u002F>\nadd_filter( ‘jekyll_export_skip_uploads’, ‘__return_true’ );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>This can save significant time and disk space, especially if you have gigabytes of media files.\u003C\u002Fp>\n\u003Ch4>3. Exclude Cache and Temporary Directories\u003C\u002Fh4>\n\u003Cp>Many sites accumulate cache files and temporary uploads that aren’t needed in the export:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_excluded_upload_dirs’, function( $excluded ) {\u003Cbr \u002F>\n    return array_merge( $excluded, array(\u003Cbr \u002F>\n        ‘\u002Fcache\u002F’,\u003Cbr \u002F>\n        ‘\u002Ftmp\u002F’,\u003Cbr \u002F>\n        ‘\u002Fbackup\u002F’,\u003Cbr \u002F>\n        ‘\u002Fwc-logs\u002F’,  \u002F\u002F WooCommerce logs\u003Cbr \u002F>\n        ‘\u002Fwpml\u002F’,     \u002F\u002F WPML cache\u003Cbr \u002F>\n    ) );\u003Cbr \u002F>\n} );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Performance Improvements in Version 2.4.3+\u003C\u002Fh3>\n\u003Cp>Recent optimizations  &hellip;\u003C\u002Fp>\n","Features",500,41801,70,12,"2026-02-09T20:04:00.000Z","4.4","7.2",[55,56,57,58,59],"export","github","github-pages","jekyll","yaml","https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fjekyll-exporter.3.1.1.zip",100,null,{"slug":65,"name":66,"version":67,"author":5,"author_profile":6,"description":68,"short_description":69,"active_installs":62,"downloaded":70,"rating":71,"num_ratings":72,"last_updated":73,"tested_up_to":74,"requires_at_least":75,"requires_php":27,"tags":76,"homepage":27,"download_link":82,"security_score":83,"vuln_count":38,"unpatched_count":38,"last_vuln_date":63,"fetched_at":40},"just-the-page","Just the Page","1.0","\u003Cp>Displays page content with no additional formatting (e.g., no header, footer, etc.). Useful for publishing stand-alone HTML (such as invitations) without FTP access.\u003C\u002Fp>\n\u003Ch4>Usage\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Create a new page as you would normally\u003C\u002Fli>\n\u003Cli>Click the “display page content only” toggle on\u003C\u002Fli>\n\u003Cli>Save the page\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Any user who visits the page will be served only the page content with no header or footer\u003C\u002Fp>\n\u003Ch4>Example\u003C\u002Fh4>\n\u003Cp>http:\u002F\u002Fhackshackers.com\u002Fchapters\u002Fnew-york\u002Fholidayfete\u002F\u003C\u002Fp>\n\u003Cp>Special thanks to \u003Ca href=\"http:\u002F\u002Fwww.jennifer8lee.com\u002F\" rel=\"nofollow ugc\">Jennifer 8. Lee\u003C\u002Fa>.\u003C\u002Fp>\n","Displays page content with no additional formatting (e.g., no header, footer, etc.). Useful for publishing stand-alone HTML (such as invitations) with &hellip;",17287,84,5,"2012-03-17T05:07:00.000Z","3.4.2","3.2",[77,78,79,80,81],"footer","formatting","header","page","template","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fjust-the-page.zip",85,{"slug":85,"name":86,"version":87,"author":5,"author_profile":6,"description":88,"short_description":89,"active_installs":62,"downloaded":90,"rating":91,"num_ratings":92,"last_updated":93,"tested_up_to":94,"requires_at_least":95,"requires_php":27,"tags":96,"homepage":102,"download_link":103,"security_score":83,"vuln_count":38,"unpatched_count":38,"last_vuln_date":63,"fetched_at":40},"wp-resume","WP Resume","2.5.7","\u003Cp>WP Resume is an out-of-the-box solution to get your resume online and keep it updated. Built on WordPress 3.0’s custom post type functionality, it offers a uniquely familiar approach to publishing. If you’ve got a WordPress site, you already know how to use WP Resume.\u003C\u002Fp>\n\u003Cp>You can \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002Fresume\u002F\" rel=\"nofollow ugc\">see it in action\u003C\u002Fa> or for information and troubleshooting, check out the \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002F2010\u002F09\u002F12\u002Fwordpress-resume-plugin\u002F\" rel=\"nofollow ugc\">Plugin Homepage\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Features include:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Support for sections (e.g., education, experience), organizations (e.g., somewhere state university, Cogs, Inc.), positions (e.g., bachelor of arts, chief widget specialist), and details (e.g., grew bottom line by 15%, president of the sustainability club)\u003C\u002Fli>\n\u003Cli>Supports multiple resumes, on the same page, or on their own\u003C\u002Fli>\n\u003Cli>Follows best practices in resume layout and design\u003C\u002Fli>\n\u003Cli>One click install, just start adding content\u003C\u002Fli>\n\u003Cli>Drag and drop ordering of resume elements\u003C\u002Fli>\n\u003Cli>Outputs in \u003Ca href=\"http:\u002F\u002Fmicroformats.org\u002Fwiki\u002Fhresume\" rel=\"nofollow ugc\">hResume\u003C\u002Fa> compatible format using HTMl5 semantic tags\u003C\u002Fli>\n\u003Cli>Can output as plain text for pasting into job applications\u003C\u002Fli>\n\u003Cli>Automatically saves revisions of every change you make\u003C\u002Fli>\n\u003Cli>The WYSIWYG editing experience you know and love\u003C\u002Fli>\n\u003Cli>Integrates with your theme like they were made for each other (via a shortcode)\u003C\u002Fli>\n\u003Cli>Spanish, Portuguese (BR), and French Translation Support\u003C\u002Fli>\n\u003Cli>Does not use pretentious accents on the word “resume”\u003C\u002Fli>\n\u003Cli>Extremely original title\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Under the hood:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Built on existing WordPress code, utilizing a single custom post type and two custom taxonomies\u003C\u002Fli>\n\u003Cli>JSON API so you can use the data anywhere\u003C\u002Fli>\n\u003Cli>Support for custom templates and CSS files (like a child theme, just place them in your theme directory)\u003C\u002Fli>\n\u003Cli>Plugin API hooks for developers to build on\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The hardest part of getting your resume online should be doing the work listed on it, not wrestling the publishing platform. Simply put, WP Resume steps aside and lets your experience shine.\u003C\u002Fp>\n\u003Ch4>Translations:\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Spanish – \u003Ca href=\"http:\u002F\u002Frodbuaiz.com\u002F\" rel=\"nofollow ugc\">Rodolfo Buaiz\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Portuguese – \u003Ca href=\"http:\u002F\u002Frodbuaiz.com\u002F\" rel=\"nofollow ugc\">Rodolfo Buaiz\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>French – phpcore\u003C\u002Fli>\n\u003Cli>Slovak Translation – Branco of \u003Ca href=\"http:\u002F\u002Fwebhostinggeeks.com\u002Fuser-reviews\u002F\" rel=\"nofollow ugc\">WebHostingGeeks.com\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Developers,\u003C\u002Fstrong> have a killer feature you’d love to see included? Feel free to \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FWP-Resume\u002F\" rel=\"nofollow ugc\">fork the project on GitHub\u003C\u002Fa> and submit your contributions via pull request.\u003C\u002Fp>\n\u003Cp>[Photo via \u003Ca href=\"http:\u002F\u002Fwww.flickr.com\u002Fphotos\u002Fshawnmichael\u002F4246330043\u002F\" rel=\"nofollow ugc\">shawnmichael\u003C\u002Fa>]\u003C\u002Fp>\n\u003Ch3>Donate\u003C\u002Fh3>\n\u003Cp>\u003Cem>Enjoy using WP Resume? Please consider \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002Fdonate\u002F\" rel=\"nofollow ugc\">making a small donation\u003C\u002Fa> to support the software’s continued development.\u003C\u002Fem>\u003C\u002Fp>\n\u003Ch3>How To Contribute\u003C\u002Fh3>\n\u003Cp>WP Resume is an open source project and is supported by the efforts of an entire community. We’d love for you to get involved. Whatever your level of skill or however much time you can give, your contribution is greatly appreciated.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Everyone\u003C\u002Fstrong> – help expand the projects \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FWP-Resume\u002Fwiki\" rel=\"nofollow ugc\">documentation wiki\u003C\u002Fa> to make it easier for other users to get started\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Users\u003C\u002Fstrong> – download the latest \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FWP-Resume\u002Ftree\u002Fdevelop\" rel=\"nofollow ugc\">development version\u003C\u002Fa> of the plugin, and \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FWP-Resume\u002Fissues\" rel=\"nofollow ugc\">submit bug\u002Ffeature requests\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Non-English Speaking Users\u003C\u002Fstrong> – \u003Ca href=\"http:\u002F\u002Ftranslations.benbalter.com\u002Fprojects\u002FWP-Resume\u002F\" rel=\"nofollow ugc\">Contribute a translation\u003C\u002Fa> using the GlotPress web interface – no technical knowledge required (\u003Ca href=\"http:\u002F\u002Ftranslations.benbalter.com\u002Fprojects\u002Fhow-to-translate\" rel=\"nofollow ugc\">how to\u003C\u002Fa>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developers\u003C\u002Fstrong> – \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FWP-Resume\u002Ftree\u002Fdevelop\" rel=\"nofollow ugc\">Fork the development version\u003C\u002Fa> and submit a pull request, especially for any \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FWP-Resume\u002Fissues?direction=desc&sort=created&state=open\" rel=\"nofollow ugc\">known issues\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Where To Get Support Or Report An Issue\u003C\u002Fh3>\n\u003Cp>\u003Cem>There are various resources available, depending on the type of help you’re looking for:\u003C\u002Fem>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>For getting started and general documentation, please browse, and feel free to contribute to \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FWP-Resume\u002Fwiki\" rel=\"nofollow ugc\">the project wiki\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>For support questions (“How do I”, “I can’t seem to”, etc.) please search and if not already answered, open a thread in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002FWP-Resume\" rel=\"ugc\">Support Forums\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>For technical issues (e.g., to submit a bug or feature request) please search and if not already filed, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FWP-Resume\u002Fissues\" rel=\"nofollow ugc\">open an issue on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>For implementation, and all general questions (“Is it possible to..”, “Has anyone…”), please search, and if not already answered, post a topic to the \u003Ca href=\"https:\u002F\u002Fgroups.google.com\u002Fforum\u002F#!forum\u002FWP-Resume\" rel=\"nofollow ugc\">general discussion list serve\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n","Out-of-the-box solution to get your resume online. Built on WordPress's custom post types, it offers a uniquely familiar approach to publishing",46427,46,6,"2014-12-28T20:39:00.000Z","3.6.1","3.3",[97,98,99,100,101],"education","experience","online-reputation","personal-branding","resume","http:\u002F\u002Fben.balter.com\u002F2010\u002F09\u002F12\u002Fwordpress-resume-plugin\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-resume.2.5.7.zip",{"slug":105,"name":106,"version":107,"author":5,"author_profile":6,"description":108,"short_description":109,"active_installs":110,"downloaded":111,"rating":49,"num_ratings":112,"last_updated":113,"tested_up_to":114,"requires_at_least":95,"requires_php":27,"tags":115,"homepage":121,"download_link":122,"security_score":83,"vuln_count":38,"unpatched_count":38,"last_vuln_date":63,"fetched_at":40},"twitter-mentions-as-comments","Twitter Mentions As Comments","1.5.6","\u003Cp>Twitter Mentions as Comments does exactly what it promises to do – scours Twitter for people talking about your blog posts and silently inserts their Tweets alongside your existing comments. The plugin leverages the power of WordPress’s built-in commenting system – notification, comment moderation, author white\u002Fblack listing – making Twitter an extension of your blog.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Searches for Tweets linking to your blog posts, regardless of the URL shortener used (using Twitter’s Search API)\u003C\u002Fli>\n\u003Cli>Pushes Tweets into WordPress’s existing comment workflow – notifications, comment moderation, and author whitelists\u002Fblacklists work just like any other comment\u003C\u002Fli>\n\u003Cli>Fetches user’s real name and profile picture and links directly to the original Tweet\u003C\u002Fli>\n\u003Cli>Checks automatically – no need to do a thing\u003C\u002Fli>\n\u003Cli>Option to automatically exclude ReTweets\u003C\u002Fli>\n\u003Cli>Option to store tweets as trackbacks\u002Fpingbacks\u003C\u002Fli>\n\u003Cli>Option to specify which posts to check (e.g., 10 most recent posts, all posts, front page only)\u003C\u002Fli>\n\u003Cli>Smart Caching of Tweets and user data – retrieves only what it needs to save on API calls and server load\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Planned Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Dynamic resizing of Twitter profile images to fit WordPress theme\u003C\u002Fli>\n\u003Cli>Prioritization of newer posts\u003C\u002Fli>\n\u003Cli>Oauth Authentication to raise API limit (currently unlimited Tweets, but limited to 150 \u003Cem>new\u003C\u002Fem> comment authors per hour)\u003C\u002Fli>\n\u003Cli>Smarter API throttling\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>You can see it in action on the \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002F2010\u002F09\u002F12\u002Fwordpress-resume-plugin\u002F#comment-168\" rel=\"nofollow ugc\">WP Resume Plugin page\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Questions? Comments? Feature Requests? Have a great idea?\u003C\u002Fstrong> Please see \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FTwitter-Mentions-as-Comments\u002Fwiki\u002FWhere-to-get-Support-or-Report-an-Issue\" rel=\"nofollow ugc\">where to get support or report an issue\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FTwitter-Mentions-as-Comments\u002Fwiki\u002FHow-to-Contribute\" rel=\"nofollow ugc\">how to contribute\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Developers,\u003C\u002Fstrong> have a killer feature you’d love to see included? Feel free to \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FTwitter-Mentions-as-Comments\u002F\" rel=\"nofollow ugc\">fork the project on GitHub\u003C\u002Fa> and submit your contributions via pull request.\u003C\u002Fp>\n\u003Cp>\u003Cem>Enjoy using Twitter Mentions as Comments? Feel free to \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002Fdonate\u002F\" rel=\"nofollow ugc\">make a small donation\u003C\u002Fa> to support the software’s continued development.\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>[Photo via \u003Ca href=\"http:\u002F\u002Fwww.flickr.com\u002Fphotos\u002Fjoshsemans\u002F3414271359\u002F\" rel=\"nofollow ugc\">joshsemans\u003C\u002Fa>]\u003C\u002Fp>\n\u003Ch3>Donate\u003C\u002Fh3>\n\u003Cp>Enjoy using Twitter Mentions as Comments? Please consider \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002Fdonate\u002F?utm_source=wiki&utm_medium=donate&utm_campaign=tmac\" rel=\"nofollow ugc\">making a small donation\u003C\u002Fa> to support the project’s continued development.\u003C\u002Fp>\n\u003Ch3>How To Contribute\u003C\u002Fh3>\n\u003Cp>Twitter Mentions as Comments is an open source project and is supported by the efforts of an entire community. We’d love for you to get involved. Whatever your level of skill or however much time you can give, your contribution is greatly appreciated.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Everyone\u003C\u002Fstrong> – help expand the projects \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FTwitter-Mentions-as-Comments\u002Fwiki\" rel=\"nofollow ugc\">documentation wiki\u003C\u002Fa> to make it easier for other users to get started\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Users\u003C\u002Fstrong> – download the latest \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FTwitter-Mentions-as-Comments\u002Ftree\u002Fdevelop\" rel=\"nofollow ugc\">development version\u003C\u002Fa> of the plugin, and \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FTwitter-Mentions-as-Comments\u002Fissues\" rel=\"nofollow ugc\">submit bug\u002Ffeature requests\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Non-English Speaking Users\u003C\u002Fstrong> – \u003Ca href=\"http:\u002F\u002Ftranslations.benbalter.com\u002Fprojects\u002FTwitter-Mentions-as-Comments\u002F\" rel=\"nofollow ugc\">Contribute a translation\u003C\u002Fa> using the GlotPress web interface – no technical knowledge required (\u003Ca href=\"http:\u002F\u002Ftranslations.benbalter.com\u002Fprojects\u002Fhow-to-translate\" rel=\"nofollow ugc\">how to\u003C\u002Fa>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developers\u003C\u002Fstrong> – \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FTwitter-Mentions-as-Comments\u002Ftree\u002Fdevelop\" rel=\"nofollow ugc\">Fork the development version\u003C\u002Fa> and submit a pull request, especially for any \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FTwitter-Mentions-as-Comments\u002Fissues?direction=desc&sort=created&state=open\" rel=\"nofollow ugc\">known issues\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Where To Get Support Or Report An Issue\u003C\u002Fh3>\n\u003Cp>\u003Cem>There are various resources available, depending on the type of help you’re looking for:\u003C\u002Fem>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>For getting started and general documentation, please browse, and feel free to contribute to \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FTwitter-Mentions-as-Comments\u002Fwiki\" rel=\"nofollow ugc\">the project wiki\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>For support questions (“How do I”, “I can’t seem to”, etc.) please search and if not already answered, open a thread in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002FTwitter-Mentions-as-Comments\" rel=\"ugc\">Support Forums\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>For technical issues (e.g., to submit a bug or feature request) please search and if not already filed, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002FTwitter-Mentions-as-Comments\u002Fissues\" rel=\"nofollow ugc\">open an issue on GitHub\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>For implementation, and all general questions (“Is it possible to..”, “Has anyone…”), please search, and if not already answered, post a topic to the \u003Ca href=\"https:\u002F\u002Fgroups.google.com\u002Fforum\u002F#!forum\u002FTwitter-Mentions-as-Comments\" rel=\"nofollow ugc\">general discussion list serve\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n","Twitter Mentions as Comments scours Twitter for people talking about your site & silently inserts their Tweets alongside your existing comments.",60,42000,4,"2013-07-04T15:36:00.000Z","3.5.2",[116,117,118,119,120],"comments","mentions","social","social-media","twitter","http:\u002F\u002Fben.balter.com\u002F2010\u002F11\u002F29\u002Ftwitter-mentions-as-comments\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftwitter-mentions-as-comments.1.5.6.zip",{"slug":124,"name":125,"version":126,"author":5,"author_profile":6,"description":127,"short_description":128,"active_installs":129,"downloaded":130,"rating":62,"num_ratings":72,"last_updated":131,"tested_up_to":94,"requires_at_least":132,"requires_php":27,"tags":133,"homepage":137,"download_link":138,"security_score":83,"vuln_count":38,"unpatched_count":38,"last_vuln_date":63,"fetched_at":40},"post-forking","Post Forking","0.2.1","\u003Cp>WordPress Post Forking allows users to “fork” or create an alternate version of content to foster a more collaborative approach to WordPress content curation. This can be used, for example, to allow external users (such as visitors to your site) or internal users (such as other authors) with the ability to submit proposed revisions. It can even be used on smaller or single-author sites to enable post authors to edit published posts without their changes appearing immediately. If you’re familiar with Git, or other decentralized version control systems, you’re already familiar with WordPress post forking.\u003C\u002Fp>\n\u003Ch4>How might you use it?\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Allowing users without edit or publish post capabilities to edit and submit changes to content (similar to \u003Ca href=\"https:\u002F\u002Fhelp.github.com\u002Farticles\u002Fusing-pull-requests\" rel=\"nofollow ugc\">GitHub’s pull request system\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>Collaborative editing (by resolving two users’ conflicted saves – \u003Ca href=\"http:\u002F\u002Fwww.wired.com\u002Fwiredenterprise\u002F2012\u002F02\u002Fgithub-revisited\u002F\" rel=\"nofollow ugc\">Wired’s example\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>Saving draft changes of already-published content\u003C\u002Fli>\n\u003Cli>Scheduling pending changes to already-published content\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How does it work?\u003C\u002Fh4>\n\u003Cp>When a user without the \u003Ccode>edit_post\u003C\u002Fcode> capability attempts to edit a given post, WordPress will automatically create a “fork” or alternate version of the post which they can freely edit. The edit screen will look just like the standard post editing interface that they are used to. When they’re done, they simply click “submit for review.” At this point, the fork goes into the standard WordPress moderation queue (just like any time an author without the \u003Ccode>publish_post\u003C\u002Fcode> capability submits a post), where an editor can review, and potentially approve the changes for publishing. If the changes can be automatically merged, the original post will be updated, otherwise, the editor will be presented with the ability to resolve the conflicting changes. All this is done using WordPress’s built-in custom post type, revision, and diff functionality, so it should look familiar to most WordPress users.\u003C\u002Fp>\n\u003Ch4>Concepts\u003C\u002Fh4>\n\u003Cp>WordPress Post Forking introduces many of Git’s well-established conventions to the WordPress world, and as a result, uses a unique vocabulary to describe what it does:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Post\u003C\u002Fstrong> – Any WordPress post that uses the \u003Ccode>post_content\u003C\u002Fcode> field, including posts, pages, and custom post types\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Fork\u003C\u002Fstrong> – Clone of a post intended for editing without disturbing the parent post\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Branch\u003C\u002Fstrong> – Parallel versions of the same parent post, owned by the post author\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Merge\u003C\u002Fstrong> – To push a fork’s changes back into its parent post\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Conflict\u003C\u002Fstrong> – When a post is forked if a given line is changed on the fork, and that same line is subsequently edited on the parent post prior to the merge, the post cannot be automatically merged, and the conflict is presented to the merger to resolve\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Why this plugin?\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fben.balter.com\u002F2012\u002F02\u002F28\u002Fgithub-for-journalism-what-wordpress-post-forking-could-do-to-editorial-workflows\u002F\" rel=\"nofollow ugc\">GitHub for Journalism — What WordPress Post Forking could do to Editorial Workflows\u003Cbr \u002F>\n\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Project Status\u003C\u002Fh4>\n\u003Cp>This version constitutes an initial release designed to showcase the plugin’s core functionality and is intended to be improved upon with additional features and refinements as the project evolves. Please consider \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Fwiki\u002FHow-to-Contribute\" rel=\"nofollow ugc\">contributing your time\u003C\u002Fa> to help improve the project.\u003C\u002Fp>\n\u003Ch4>More Information\u003C\u002Fh4>\n\u003Cp>For more information, or to contribute to this documentation, please visit the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Fwiki\" rel=\"nofollow ugc\">Post Forking project wiki\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>[Photo courtesy \u003Ca href=\"http:\u002F\u002Fwww.flickr.com\u002Fphotos\u002Fbabomike\u002F5626846346\u002F\" rel=\"nofollow ugc\">babomike\u003C\u002Fa>]\u003C\u002Fp>\n\u003Ch3>How To Contribute\u003C\u002Fh3>\n\u003Cp>Post Forking is an open source project and is supported by the efforts of an entire community. We’d love for you to get involved. Whatever your level of skill or however much time you can give, your contribution is greatly appreciated.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Everyone\u003C\u002Fstrong> – Help expand \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Fwiki\u002F\" rel=\"nofollow ugc\">the project’s documentation wiki\u003C\u002Fa> and answer questions in the support forums to make it easier for other users to get started, or join the discussion on the \u003Ca href=\"http:\u002F\u002Fpostforking.wordpress.com\" rel=\"nofollow ugc\">P2 (Blog)\u003C\u002Fa> to help shape the project’s future.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Users\u003C\u002Fstrong> – Download the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Ftree\u002Fdevelop\" rel=\"nofollow ugc\">latest development version\u003C\u002Fa> of the plugin, and \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Fissues\" rel=\"nofollow ugc\">submit bug\u002Ffeature requests\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Non-English Speakers\u003C\u002Fstrong> – \u003Ca href=\"http:\u002F\u002Ftranslations.benbalter.com\u002F\" rel=\"nofollow ugc\">Contribute a translation\u003C\u002Fa> using the GlotPress web interface – no technical knowledge required (\u003Ca href=\"http:\u002F\u002Ftranslations.benbalter.com\u002Fprojects\u002Fhow-to-translate\" rel=\"nofollow ugc\">how to\u003C\u002Fa>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Technical Folks\u003C\u002Fstrong> – \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Ftree\u002Fdevelop\" rel=\"nofollow ugc\">Fork the development version\u003C\u002Fa> and submit a pull request, especially for any \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Fissues\" rel=\"nofollow ugc\">known issues\u003C\u002Fa>. \u003Ca href=\"https:\u002F\u002Fhelp.github.com\u002Farticles\u002Fset-up-git\" rel=\"nofollow ugc\">This tutorial\u003C\u002Fa> may be helpful if you’re new to git.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Roadmap\u003C\u002Fh3>\n\u003Ch4>Future Features (Maybe):\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Front end editing (just click edit, make your change, hit submit)\u003C\u002Fli>\n\u003Cli>Ability to fork more than just the \u003Ccode>post_content\u003C\u002Fcode> (e.g., taxonomies, post meta)\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Fissues\u002F15\" rel=\"nofollow ugc\">Appending parent revision history to fork\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Spoofing \u003Ccode>post_type\u003C\u002Fcode> so metaboxes, etc. appear\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Fissues\u002F17\" rel=\"nofollow ugc\">Author pages for fork contributors\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Fissues?labels=enhancement&page=1&state=open\" rel=\"nofollow ugc\">Open Enhancements\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Under The Hood\u003C\u002Fh3>\n\u003Cp>** \u003Cstrong>Warning: geek content!\u003C\u002Fstrong> **\u003C\u002Fp>\n\u003Cp>Forking a post creates a copy of the most recent version of the post as a “fork” custom post type. Certain fields (e.g., \u003Ccode>post_content\u003C\u002Fcode>, \u003Ccode>post_title\u003C\u002Fcode>) are copied over to the new fork. The plugin also stores the revision ID for the revision prior to when the fork was created (see \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Fblob\u002Fmaster\u002Fincludes\u002Frevisions.php#L2\" rel=\"nofollow ugc\">\u003Ccode>includes\u002Frevisions.php\u003C\u002Fcode>\u003C\u002Fa> for more information as to why we store the previous revision).\u003C\u002Fp>\n\u003Cp>The fork post type has its own capabilities, allowing a user without the ability to edit or publish on the parent post to edit a fork. Once changes have been made, assuming the user does not have the \u003Ccode>publish_fork\u003C\u002Fcode> capability, the user would submit the fork for review (similar to submitting a Pull Request in GitHub parlance) using the normal WordPress moderation system.\u003C\u002Fp>\n\u003Cp>Publishing a fork (either by the fork author, if they have the capability, or my an editor) triggers the merge itself. The post content of the fork undergoes a three way merge with the base revision and current version of the parent post.\u003C\u002Fp>\n\u003Cp>A fork can have three post statuses:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Draft – The fork is being edited\u003C\u002Fli>\n\u003Cli>Pending – The fork has been submitted for publication\u003C\u002Fli>\n\u003Cli>Published – The fork has been merged\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Note: No user should have the \u003Ccode>edit_published_fork\u003C\u002Fcode> capability. Once published, the fork post_type simply exists to provide a record of the change and allow the author page, to theoretically list contributions by author.\u003C\u002Fp>\n\u003Ch3>Where To Get Support Or Report An Issue\u003C\u002Fh3>\n\u003Cp>\u003Cem>There are various resources available, depending on the type of help you’re looking for:\u003C\u002Fem>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>For getting started and general documentation, please browse, and feel free to contribute to \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Fwiki\" rel=\"nofollow ugc\">the project wiki\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>For support questions (“How do I”, “I can’t seem to”, etc.) please search and if not already answered, open a thread in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fpost-forking\" rel=\"ugc\">Support Forums\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>For technical issues (e.g., to submit a bug or feature request) please search and if not already filed, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fpost-forking\u002Fissues\" rel=\"nofollow ugc\">open an issue on GitHub\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>For implementation, and all general questions (“Is it possible to..”, “Has anyone…”), please search, and if not already answered, post a topic to the \u003Ca href=\"https:\u002F\u002Fgroups.google.com\u002Fforum\u002F#!forum\u002Fpost-forking\" rel=\"nofollow ugc\">general discussion list serve\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>For general discussion about the project and planning, please see the \u003Ca href=\"http:\u002F\u002Fpostforking.wordpress.com\" rel=\"nofollow ugc\">P2\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","WordPress Post Forking allows users to fork or create an alternate version of content to foster a more collaborative approach to WordPress content cur &hellip;",20,7785,"2013-09-26T21:12:00.000Z","3.5",[29,134,135,136,33],"forking","forks","posts","http:\u002F\u002Fpostforking.wordpress.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpost-forking.0.2.1.zip",{"slug":140,"name":141,"version":142,"author":5,"author_profile":6,"description":143,"short_description":144,"active_installs":145,"downloaded":146,"rating":62,"num_ratings":147,"last_updated":148,"tested_up_to":149,"requires_at_least":150,"requires_php":27,"tags":151,"homepage":157,"download_link":158,"security_score":83,"vuln_count":38,"unpatched_count":38,"last_vuln_date":63,"fetched_at":40},"wp-emphasis","WP Emphasis","0.7","\u003Cp>One-click implementation of the \u003Ca href=\"http:\u002F\u002Fopen.blogs.nytimes.com\u002F2011\u002F01\u002F11\u002Femphasis-update-and-source\u002F\" rel=\"nofollow ugc\">New York Times open-source emphasis script\u003C\u002Fa> which allows users to highlight and link to specific text within an article or post.\u003C\u002Fp>\n\u003Cp>In their own words:\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Emphasis provides dynamic paragraph-specific anchor links and\u003Cbr \u002F>\n  the ability to highlight text in a document, all of which is\u003Cbr \u002F>\n  made available in the URL hash so it can be emailed, bookmarked, or shared.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>The plugin allows for permalinking and highlighting of text on a paragraph and sentence level. No need to set anything up. Just install, tap shift twice, and start highlighting.\u003C\u002Fp>\n\u003Cp>See \u003Ca href=\"http:\u002F\u002Fopen.blogs.nytimes.com\u002F2011\u002F01\u002F11\u002Femphasis-update-and-source\u002F\" rel=\"nofollow ugc\">The New York Times\u003C\u002Fa> for syntax more information on general usage.\u003C\u002Fp>\n\u003Cp>Questions, comments, suggestions? Please leave them on the \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002F2011\u002F01\u002F11\u002Fwordpress-emphasis-plugin\u002F\" rel=\"nofollow ugc\">WP Emphasis Plugin page\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cem>Enjoy using WP Emphasis? Feel free to \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002Fdonate\u002F\" rel=\"nofollow ugc\">make a small donation\u003C\u002Fa> to support the software’s continued development.\u003C\u002Fem>\u003C\u002Fp>\n","One-click implementation of the New York Times open-source emphasis script for highlighting and permalinking text.",10,3896,2,"2012-01-18T20:16:00.000Z","3.3.2","3.0",[152,153,154,155,156],"emphasis","highlight","new-york-times","nyt","permalinks","http:\u002F\u002Fben.balter.com\u002F2011\u002F01\u002F11\u002Fwordpress-emphasis-plugin\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-emphasis.0.7.zip"]