We'll create fresh WordPress site with Post Forking installed. You have 20 minutes to test the plugin after that site we'll be deleted.
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.
When a user without the edit_post
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 publish_post
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.
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:
post_content
field, including posts, pages, and custom post typesThis 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 contributing your time to help improve the project.
For more information, or to contribute to this documentation, please visit the Post Forking project wiki.
[Photo courtesy babomike]
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.
post_content
(e.g., taxonomies, post meta)post_type
so metaboxes, etc. appear** Warning: geek content! **
Forking a post creates a copy of the most recent version of the post as a “fork” custom post type. Certain fields (e.g., post_content
, post_title
) 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 includes/revisions.php
for more information as to why we store the previous revision).
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 publish_fork
capability, the user would submit the fork for review (similar to submitting a Pull Request in GitHub parlance) using the normal WordPress moderation system.
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.
A fork can have three post statuses:
Note: No user should have the edit_published_fork
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.
There are various resources available, depending on the type of help you’re looking for: