{"id":369342,"date":"2026-09-17T18:25:18","date_gmt":"2026-09-17T18:25:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pdf-document-versions\/"},"modified":"2026-10-29T10:19:08","modified_gmt":"2026-10-29T10:19:08","slug":"versilink","status":"publish","type":"plugin","link":"https:\/\/en-nz.wordpress.org\/plugins\/versilink\/","author":23566752,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.0","stable_tag":"0.1.0","tested":"7.1.4","requires":"5.0","requires_php":"7.2","requires_plugins":null,"header_name":"Versilink - Replace PDFs Without Breaking Links","header_author":"","header_description":"Turn a Media Library file into a Document with a permanent link, version history and rollback, so links you already shared keep working after you replace the file.","assets_banners_color":"a2b0d5","last_updated":"2026-10-29 10:19:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":195,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"mykytadudariev","date":"2026-10-29 10:19:08","revision":3772624}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3700794,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3700794,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3700794,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3700794,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3700794,"resolution":"1","location":"assets","locale":"","width":1544,"height":965},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3700794,"resolution":"2","location":"assets","locale":"","width":1544,"height":1076},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3700794,"resolution":"3","location":"assets","locale":"","width":1544,"height":965},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3700794,"resolution":"4","location":"assets","locale":"","width":1544,"height":965}},"screenshots":{"1":"Creating a Document from the attachment edit screen.","2":"Version history with notes, downloads and restore.","3":"The Documents list with each Document's permanent link.","4":"The permanent link prefix setting."}},"plugin_section":[],"plugin_tags":[285278,1764,289443,289442,254137],"plugin_category":[50,59],"plugin_contributors":[289033,281342],"plugin_business_model":[],"class_list":["post-369342","plugin","type-plugin","status-publish","hentry","plugin_tags-document-versioning","plugin_tags-pdf","plugin_tags-permanent-link","plugin_tags-replace-pdf","plugin_tags-version-history","plugin_category-media","plugin_category-utilities-and-tools","plugin_contributors-measuredcode","plugin_contributors-mykytadudariev","plugin_committers-mykytadudariev"],"banners":{"banner":"https:\/\/ps.w.org\/versilink\/assets\/banner-772x250.png?rev=3700794","banner_2x":"https:\/\/ps.w.org\/versilink\/assets\/banner-1544x500.png?rev=3700794","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/versilink\/assets\/icon-128x128.png?rev=3700794","icon_2x":"https:\/\/ps.w.org\/versilink\/assets\/icon-256x256.png?rev=3700794","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/versilink\/assets\/screenshot-1.png?rev=3700794","caption":"Creating a Document from the attachment edit screen."},{"src":"https:\/\/ps.w.org\/versilink\/assets\/screenshot-2.png?rev=3700794","caption":"Version history with notes, downloads and restore."},{"src":"https:\/\/ps.w.org\/versilink\/assets\/screenshot-3.png?rev=3700794","caption":"The Documents list with each Document's permanent link."},{"src":"https:\/\/ps.w.org\/versilink\/assets\/screenshot-4.png?rev=3700794","caption":"The permanent link prefix setting."}],"raw_content":"<!--section=description-->\n<p>When you update a price list, catalog or PDF guide, the links you already sent by email, in ads or on social media still point to the old copy. Uploading the new PDF gives it a new URL, and overwriting the file by hand loses the previous version. This plugin turns an existing Media Library file into a <strong>Document<\/strong>. Each new version you upload replaces the file at its current URL, so the links you already shared open the new content without changing anything, and earlier versions stay in the version history.<\/p>\n\n<p>It is aimed at PDF price lists and guides, but works with any file type WordPress lets you upload, including DOCX and XLSX.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Create a Document from any Media Library file.<\/li>\n<li>Replace the file in place: its existing URL serves each new version.<\/li>\n<li>Version history with an optional note per version. Users who manage the Document can download previous versions and restore (roll back to) any of them.<\/li>\n<li>Previous versions are kept in a separate uploads folder under random file names and do not appear in the Media Library.<\/li>\n<li>A short permanent link (<code>\/docs\/your-document<\/code>, prefix configurable) that always points to the current file. The plugin warns when the prefix clashes with an existing page, post type or taxonomy.<\/li>\n<li>Media Library files that are Documents are marked, and other files get a \"Create Document\" action.<\/li>\n<\/ul>\n\n<p><strong>A note on caching<\/strong><\/p>\n\n<p>If your site uses a cache or a CDN, clear it after uploading a new version. Otherwise some visitors may still get the old file for a while.<\/p>\n\n<p><strong>Privacy<\/strong><\/p>\n\n<p>The current file is public, like any file in your Media Library. Use Versilink for documents you share openly, such as price lists and guides, not for private files.<\/p>\n\n<p>Old versions are stored under random file names that cannot be guessed. On Apache they are also blocked by an <code>.htaccess<\/code> file; nginx ignores that file.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/<\/code>, or install it through the Plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>In the Media Library, use the \"Create Document\" action on a file, or open the new \"Documents\" screen to manage Documents and their permanent link prefix.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20update%20a%20pdf%20without%20changing%20its%20url%3F\"><h3>How do I update a PDF without changing its URL?<\/h3><\/dt>\n<dd><p>In the Media Library, use the \"Create Document\" action on the PDF, then upload the new PDF as a new version of that Document. The new file is written to the same URL, so every link you already shared opens it. The previous file stays in the version history.<\/p><\/dd>\n<dt id=\"can%20i%20go%20back%20to%20an%20earlier%20version%3F\"><h3>Can I go back to an earlier version?<\/h3><\/dt>\n<dd><p>Yes. In the Document's version history, restore any previous version. It becomes the current file at the same URL, saved as a new version whose note says which version was restored.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20the%20file%27s%20original%20media%20library%20url%3F\"><h3>What happens to the file's original Media Library URL?<\/h3><\/dt>\n<dd><p>It keeps working. Uploading a new version writes the new content to the same physical file, so any link to the original URL (and the Document's own permanent link) serves the current version.<\/p><\/dd>\n<dt id=\"what%20if%20i%20upload%20a%20file%20of%20a%20different%20type%2C%20like%20a%20docx%20replacing%20a%20pdf%3F\"><h3>What if I upload a file of a different type, like a DOCX replacing a PDF?<\/h3><\/dt>\n<dd><p>The Document's current file moves to a new URL in the same folder, and the old URL is frozen: it keeps serving the last file of the old type instead of updating further. The plugin shows a warning when this happens and lists the frozen URL on the Document.<\/p><\/dd>\n<dt id=\"is%20there%20a%20file%20size%20limit%3F\"><h3>Is there a file size limit?<\/h3><\/dt>\n<dd><p>New versions use the same upload limit as the Media Library, which is set by your host. The limit is shown next to the upload field.<\/p><\/dd>\n<dt id=\"does%20deleting%20a%20document%20delete%20the%20file%3F\"><h3>Does deleting a Document delete the file?<\/h3><\/dt>\n<dd><p>No. Deleting a Document on its screen removes its version history and stored previous versions, but the Media Library file stays untouched. Documents cannot be moved to Trash, because that would break their permanent link. Permanently deleting the Media Library file, on the other hand, deletes the Document and its history too; the plugin warns about this before you confirm.<\/p><\/dd>\n<dt id=\"why%20is%20the%20permanent%20link%20a%20redirect%3F\"><h3>Why is the permanent link a redirect?<\/h3><\/dt>\n<dd><p>So it always opens the current file. We use a temporary (302) redirect because browsers remember a permanent (301) one and could keep opening an old file.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20deactivate%20or%20uninstall%20the%20plugin%3F\"><h3>What happens if I deactivate or uninstall the plugin?<\/h3><\/dt>\n<dd><p>Deactivated: permanent links stop working until you activate the plugin again.<\/p>\n\n<p>Uninstalled: Documents, version history, settings and old versions are deleted. Your Media Library files stay, with the latest version.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Update a PDF or any Media Library file and keep the same URL: links you already shared open the new file, with version history and restore.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-nz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/369342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-nz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-nz.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-nz.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=369342"}],"author":[{"embeddable":true,"href":"https:\/\/en-nz.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mykytadudariev"}],"wp:attachment":[{"href":"https:\/\/en-nz.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=369342"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-nz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=369342"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-nz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=369342"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-nz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=369342"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-nz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=369342"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-nz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=369342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}