{"id":316574,"date":"2026-06-01T08:47:46","date_gmt":"2026-06-01T08:47:46","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ghost-link\/"},"modified":"2026-06-17T10:16:12","modified_gmt":"2026-06-17T10:16:12","slug":"erdo-draft-links","status":"publish","type":"plugin","link":"https:\/\/ca.wordpress.org\/plugins\/erdo-draft-links\/","author":23436214,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Erdo Draft Links","header_author":"Erdinc Bulat","header_description":"Share draft posts with non-logged-in users via a secure, temporary link \u2014 no login required.","assets_banners_color":"ffffff","last_updated":"2026-06-17 10:16:12","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/erdo-draft-links\/","header_author_uri":"https:\/\/erdincbulat.com","rating":5,"author_block_rating":0,"active_installs":10,"downloads":164,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"erdincbulat","date":"2026-06-01 08:47:23"},"1.1.0":{"tag":"1.1.0","author":"erdincbulat","date":"2026-06-17 10:16:12"}},"upgrade_notice":{"1.1.0":"<p>New: visitors can leave feedback on draft previews, and the Links Manager has a one-click copy for draft links. Fix: page builder content now renders correctly on preview links, the sidebar no longer shows stale links, and the feedback widget look is now consistent across themes.<\/p>","1.0.1":"<p>Minor code quality fix; no functional changes.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3556422,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3556422,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3556422,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3556422,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3562626,"resolution":"1","location":"assets","locale":"","width":1919,"height":911},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3562626,"resolution":"2","location":"assets","locale":"","width":1919,"height":487},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3562626,"resolution":"3","location":"assets","locale":"","width":1914,"height":874}},"screenshots":{"1":"Erdo Draft Links panel in the Block Editor sidebar \u2014 generate, copy, and manage your link.","2":"Erdo Draft Links meta box in the Classic Editor \u2014 same functionality, same REST API.","3":"Draft post viewed via Erdo Draft Links by a non-logged-in visitor."}},"plugin_section":[],"plugin_tags":[266805,4665,259181,2475,267515],"plugin_category":[56,58],"plugin_contributors":[253916],"plugin_business_model":[],"class_list":["post-316574","plugin","type-plugin","status-publish","hentry","plugin_tags-client-preview","plugin_tags-draft","plugin_tags-draft-sharing","plugin_tags-preview","plugin_tags-wordpress-draft","plugin_category-social-and-sharing","plugin_category-user-management","plugin_contributors-erdincbulat","plugin_committers-erdincbulat"],"banners":{"banner":"https:\/\/ps.w.org\/erdo-draft-links\/assets\/banner-772x250.png?rev=3556422","banner_2x":"https:\/\/ps.w.org\/erdo-draft-links\/assets\/banner-1544x500.png?rev=3556422","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/erdo-draft-links\/assets\/icon-128x128.png?rev=3556422","icon_2x":"https:\/\/ps.w.org\/erdo-draft-links\/assets\/icon-256x256.png?rev=3556422","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/erdo-draft-links\/assets\/screenshot-1.png?rev=3562626","caption":"Erdo Draft Links panel in the Block Editor sidebar \u2014 generate, copy, and manage your link."},{"src":"https:\/\/ps.w.org\/erdo-draft-links\/assets\/screenshot-2.png?rev=3562626","caption":"Erdo Draft Links meta box in the Classic Editor \u2014 same functionality, same REST API."},{"src":"https:\/\/ps.w.org\/erdo-draft-links\/assets\/screenshot-3.png?rev=3562626","caption":"Draft post viewed via Erdo Draft Links by a non-logged-in visitor."}],"raw_content":"<!--section=description-->\n<p><strong>Erdo Draft Links<\/strong> works like Google Docs' \"Anyone with the link can view\" \u2014 but for WordPress. Generate a secure link for any draft, private, or published post or page and share it with clients, reviewers, or collaborators. They can read the content without needing a WordPress account, without a password, and without you ever changing the post status.<\/p>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Open any post or page in the editor (Block Editor or Classic Editor).<\/li>\n<li>Click <strong>\"Generate Draft Link\"<\/strong> in the sidebar panel or meta box.<\/li>\n<li>Choose an expiry: 24 hours, 48 hours, 7 days, or never.<\/li>\n<li>Share the link. Recipients can view the content \u2014 no login needed.<\/li>\n<\/ol>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Works with both the <strong>Block Editor (Gutenberg)<\/strong> and the <strong>Classic Editor<\/strong><\/li>\n<li>Supports <strong>posts<\/strong>, <strong>pages<\/strong>, and any custom post type via a filter<\/li>\n<li>Secure <strong>32-character cryptographic tokens<\/strong> \u2014 brute-force resistant<\/li>\n<li>Configurable expiry: 24 hours, 48 hours, 7 days, or no expiry<\/li>\n<li><strong>View count<\/strong> tracking per link<\/li>\n<li>Visitors can leave <strong>name + feedback<\/strong> on the preview \u2014 collected in a \"Feedback\" tab in the admin and emailed to you<\/li>\n<li><strong>Revoke or regenerate<\/strong> any link at any time<\/li>\n<li>Tokens are stored <strong>hashed<\/strong> in the database \u2014 raw tokens are never stored after the redirect<\/li>\n<li>Two-step flow: token URL \u2192 cookie \u2192 clean permalink (token never appears in browser history)<\/li>\n<li>No external API calls, no phone-home, no subscriptions<\/li>\n<li>Translation-ready (English default, Turkish included)<\/li>\n<\/ul>\n\n<h4>Developer Notes<\/h4>\n\n<p>Developers can add support for custom post types using the <code>erdo_draft_links_supported_post_types<\/code> filter:<\/p>\n\n<pre><code>add_filter( 'erdo_draft_links_supported_post_types', function( $types ) {\n    $types[] = 'product';\n    return $types;\n} );\n<\/code><\/pre>\n\n<h4>Source Code<\/h4>\n\n<p>The full source code including build tools is included in the plugin's <code>assets\/js\/src\/<\/code> directory.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>erdo-draft-links<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Open any post or page and find the <strong>Erdo Draft Links<\/strong> panel in the editor sidebar or meta box.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20share%20a%20wordpress%20draft%20with%20a%20client%20without%20giving%20them%20login%20access%3F\"><h3>How do I share a WordPress draft with a client without giving them login access?<\/h3><\/dt>\n<dd><p>Install Erdo Draft Links, open the draft in the editor, and click <strong>\"Generate Draft Link\"<\/strong> in the sidebar panel. Copy the link and send it to your client. They can view the full draft in their browser \u2014 no WordPress account, no login page, no password required.<\/p><\/dd>\n<dt id=\"how%20do%20i%20let%20someone%20preview%20a%20wordpress%20post%20before%20it%20is%20published%3F\"><h3>How do I let someone preview a WordPress post before it is published?<\/h3><\/dt>\n<dd><p>Use Erdo Draft Links. Generate a secure preview link directly from the post editor and share it. The recipient sees the post exactly as it will appear when published \u2014 including your theme, layout, and images \u2014 without you having to publish it first.<\/p><\/dd>\n<dt id=\"can%20i%20share%20a%20wordpress%20draft%20with%20multiple%20people%3F\"><h3>Can I share a WordPress draft with multiple people?<\/h3><\/dt>\n<dd><p>Yes. The generated link works for anyone who has it \u2014 you can share the same link with your entire team or multiple clients simultaneously. Each visit is counted in the view tracker so you know how many times the link has been accessed.<\/p><\/dd>\n<dt id=\"how%20long%20does%20the%20draft%20link%20stay%20active%3F\"><h3>How long does the draft link stay active?<\/h3><\/dt>\n<dd><p>You choose the expiry when generating the link: 24 hours, 48 hours, 7 days, or no expiry. You can also revoke or regenerate the link manually at any time from the editor or the Links Manager admin page.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20woocommerce%20products%20or%20other%20custom%20post%20types%3F\"><h3>Does this work with WooCommerce products or other custom post types?<\/h3><\/dt>\n<dd><p>Yes. By default Erdo Draft Links supports posts and pages. Add WooCommerce products or any other post type using the <code>erdo_draft_links_supported_post_types<\/code> filter (see Developer Notes in the Description).<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20custom%20post%20types%3F\"><h3>Does this work with custom post types?<\/h3><\/dt>\n<dd><p>Yes. By default Erdo Draft Links supports posts and pages. Add more post types using the <code>erdo_draft_links_supported_post_types<\/code> filter.<\/p><\/dd>\n<dt id=\"is%20the%20shared%20link%20secure%3F\"><h3>Is the shared link secure?<\/h3><\/dt>\n<dd><p>Yes. Tokens are 32 characters of cryptographic randomness generated by WordPress's built-in <code>wp_generate_password<\/code>. The raw token appears in the URL only once \u2014 subsequent visits use a signed HttpOnly cookie. Tokens are stored as SHA-256 HMAC hashes in the database.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20link%20expires%3F\"><h3>What happens when a link expires?<\/h3><\/dt>\n<dd><p>The recipient sees a clear message: \"This draft link has expired and is no longer accessible.\" The post remains a draft \u2014 nothing is published.<\/p><\/dd>\n<dt id=\"can%20i%20have%20multiple%20active%20links%20for%20the%20same%20post%3F\"><h3>Can I have multiple active links for the same post?<\/h3><\/dt>\n<dd><p>Currently one active link per post. Regenerating creates a new token and resets the view count.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20password-protected%20posts%3F\"><h3>Does this work with password-protected posts?<\/h3><\/dt>\n<dd><p>No. Erdo Draft Links is designed for draft and private posts. Password-protected posts use WordPress's own mechanism.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20affect%20site%20performance%3F\"><h3>Does this plugin affect site performance?<\/h3><\/dt>\n<dd><p>Erdo Draft Links only runs on requests that include a <code>?erdo_token=<\/code> parameter or a valid session cookie. Normal site traffic is not affected.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Visitors can leave name + feedback on a shared draft preview; submissions appear under the new \"Feedback\" tab in the Erdo Draft Links admin page and are emailed to the site admin.<\/li>\n<li>New: The Links Manager table now has a \"Link\" column with a hidden-by-default reveal button and one-click copy for the generated draft link.<\/li>\n<li>Fix: Page builder content (Elementor and others) now renders correctly on shared draft preview links for non-logged-in visitors.<\/li>\n<li>Fix: The \"View Link\" row action was renamed to \"View Page\" (it opens the post, not the draft link) to avoid confusion with the new \"Link\" column.<\/li>\n<li>Fix: The Block Editor sidebar no longer shows a stale draft link after it has been revoked or regenerated elsewhere.<\/li>\n<li>Fix: Caching plugins (e.g. LiteSpeed Cache) no longer serve stale draft previews or feedback status to visitors after a link is revoked or feedback status changes.<\/li>\n<li>Fix: The feedback widget's appearance (colors, sizes, fonts, spacing) is now fully isolated from the active theme so it looks the same on every site.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: Replace deprecated <code>current_time('timestamp')<\/code> with <code>time()<\/code> for correct UTC handling.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Share draft posts with anyone via a secure, temporary link \u2014 no WordPress login required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/316574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=316574"}],"author":[{"embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/erdincbulat"}],"wp:attachment":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=316574"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=316574"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=316574"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=316574"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=316574"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=316574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}