New Plugin: Post update pushes a copy as a revision

Your question specifies that you are looking for ‘suggestions’ so this answer is in that category rather than in the ‘working code’ category.

I am going to start by saying that I don’t know if this is a good idea. You are going to multiply the size of your database many times over. Now that is off my chest, if you are going to proceed here are my thoughts.

Don’t write new posts for your ‘revisions’. You will end up with every one of them in the RSS feeds, the post, index, the backend panels, etc. It would be a mess, and you’d have to put in a lot of work to hide them.

WordPress already has revisions, and all of the issues above have already been solved in core. Use them to your advantage.

Tell WordPress to keep all of your revisions.

define( 'WP_POST_REVISIONS', -1);

That is supposed to be the default but I’d set it just to be sure, in case a theme or plugin decides to think for you. Using the existing revisions will also alleviate the problem of increasing your database size. Unless you have turned off revisions, you already have this stuff in the database./

Now you need to work out how to display the revision.

wp_get_post_revisions($post_id) (assuming $post_id is set to the revision’s parent post) should get you your revisions, which you can then use to create a list or a full post display.

For ‘single’ post displays you should be able to pass your single.php a ?rev=<post_id> parameter or even a ?rev=<revision_number> since WordPress saves post_name for revisions as <parent_post_id>-revision-<revision_number> with -<revision_number> not present for the first revision.

Those are my “comments and suggestions” as requested.