{"id":115357,"date":"2019-12-25T20:25:07","date_gmt":"2019-12-25T20:25:07","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/easy-symlinks\/"},"modified":"2026-05-11T19:35:24","modified_gmt":"2026-05-11T19:35:24","slug":"easy-symlinks","status":"publish","type":"plugin","link":"https:\/\/sv.wordpress.org\/plugins\/easy-symlinks\/","author":13623412,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.0.0","stable_tag":"2.0.0","tested":"6.8.5","requires":"4.9","requires_php":"7.4","requires_plugins":null,"header_name":"Easy Symlinks","header_author":"Carl Alberto","header_description":"Easy symlinking tool in WP. This can only track symlinks created within the application and excludes symlinks created from the filesystem and command line.","assets_banners_color":"242424","last_updated":"2026-05-11 19:35:24","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/carlalberto.code.blog\/","header_plugin_uri":"http:\/\/wordpress.org\/plugins\/easy-symlinks","header_author_uri":"https:\/\/carlalberto.code.blog\/","rating":5,"author_block_rating":0,"active_installs":70,"downloads":4344,"num_ratings":3,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"carl-alberto","date":"2019-12-25 20:24:45"},"1.0.1":{"tag":"1.0.1","author":"carl-alberto","date":"2020-01-08 06:26:28"},"1.0.2":{"tag":"1.0.2","author":"carl-alberto","date":"2021-10-09 17:36:01"},"1.0.3":{"tag":"1.0.3","author":"carl-alberto","date":"2022-10-24 13:19:11"},"1.0.4":{"tag":"1.0.4","author":"carl-alberto","date":"2026-05-11 09:11:35"},"1.0.5":{"tag":"1.0.5","author":"carl-alberto","date":"2026-05-11 10:29:57"},"2.0.0":{"tag":"2.0.0","author":"carl-alberto","date":"2026-05-11 19:35:24"}},"upgrade_notice":{"2.0.0":"<p>Major update: Presets tab for one-click Wordfence symlinks, duplicate detection, database cleanup option, modernized UI. WordPress 6.8 compatible. No breaking changes.<\/p>","1.0.5":"<p>Compatibility update for WordPress 6.8. Modernized admin UI, duplicate symlink detection, database cleanup option, and multiple bug fixes. No breaking changes.<\/p>","1.0.3":"<p>Compatibility update for WordPress 6.0.3. No breaking changes.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":3},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3528560,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3528560,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3528560,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3528560,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3528560,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250},"banner.svg":{"filename":"banner.svg","revision":3528560,"resolution":false,"location":"assets","locale":false}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","2.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3529143,"resolution":"1","location":"assets","locale":"","width":1058,"height":713},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3529143,"resolution":"2","location":"assets","locale":"","width":1063,"height":709},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3529143,"resolution":"3","location":"assets","locale":"","width":1069,"height":713},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3529143,"resolution":"4","location":"assets","locale":"","width":1067,"height":710},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3529143,"resolution":"5","location":"assets","locale":"","width":1065,"height":718}},"screenshots":{"1":"The Add Symlinks tab \u2014 enter a target directory and link path to create a new symlink.","2":"The Presets tab showing auto-detected Wordfence plugin with symlink paths and status indicators.","3":"The Settings tab with the \"Delete data on uninstall\" option for database cleanup.","4":"The Delete Symlinks tab with a dropdown list of active symlinks to remove.","5":"The Remove Presets tab showing applied Wordfence symlinks with status and one-click removal."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[4932,8860,15228,180109,262552],"plugin_category":[],"plugin_contributors":[130323],"plugin_business_model":[],"class_list":["post-115357","plugin","type-plugin","status-publish","hentry","plugin_tags-developer-tools","plugin_tags-file-management","plugin_tags-pantheon","plugin_tags-symlink","plugin_tags-symlinks","plugin_contributors-carl-alberto","plugin_committers-carl-alberto"],"banners":{"banner":"https:\/\/ps.w.org\/easy-symlinks\/assets\/banner-772x250.png?rev=3528560","banner_2x":"https:\/\/ps.w.org\/easy-symlinks\/assets\/banner-1544x500.png?rev=3528560","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/easy-symlinks\/assets\/icon.svg?rev=3528560","icon":"https:\/\/ps.w.org\/easy-symlinks\/assets\/icon.svg?rev=3528560","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/easy-symlinks\/assets\/screenshot-1.jpg?rev=3529143","caption":"The Add Symlinks tab \u2014 enter a target directory and link path to create a new symlink."},{"src":"https:\/\/ps.w.org\/easy-symlinks\/assets\/screenshot-2.jpg?rev=3529143","caption":"The Presets tab showing auto-detected Wordfence plugin with symlink paths and status indicators."},{"src":"https:\/\/ps.w.org\/easy-symlinks\/assets\/screenshot-3.jpg?rev=3529143","caption":"The Settings tab with the \"Delete data on uninstall\" option for database cleanup."},{"src":"https:\/\/ps.w.org\/easy-symlinks\/assets\/screenshot-4.jpg?rev=3529143","caption":"The Delete Symlinks tab with a dropdown list of active symlinks to remove."},{"src":"https:\/\/ps.w.org\/easy-symlinks\/assets\/screenshot-5.jpg?rev=3529143","caption":"The Remove Presets tab showing applied Wordfence symlinks with status and one-click removal."}],"raw_content":"<!--section=description-->\n<p>Easy Symlinks lets you create and manage symbolic links (symlinks) directly from the WordPress admin dashboard \u2014 no command line required.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Create symlinks by specifying a target directory and link path<\/li>\n<li>Delete symlinks individually through a simple dropdown interface<\/li>\n<li>Automatic environment detection for Pantheon hosting (Dev, Test, Live, Multidev)<\/li>\n<li>Filesystem writability checks \u2014 prevents symlink creation in read-only environments<\/li>\n<li>Displays existing symlinks and their targets<\/li>\n<li>Tracks only symlinks created through the plugin<\/li>\n<li>Duplicate symlink detection \u2014 prevents creating symlinks that already exist<\/li>\n<li>Preset symlinks \u2014 auto-detects plugins like Wordfence and offers one-click symlink setup<\/li>\n<li>Optional database cleanup on plugin uninstall via Settings tab<\/li>\n<\/ul>\n\n<p><strong>How to use:<\/strong><\/p>\n\n<p>Navigate to <strong>Settings &gt; Easy Symlinks<\/strong> in your WordPress admin dashboard. The \"Presets\" tab auto-detects installed plugins that need symlinks (e.g., Wordfence on Pantheon). Use the \"Add Symlinks\" tab to create custom symlinks, the \"Delete Symlinks\" tab to remove them, and the \"Settings\" tab to configure plugin options.<\/p>\n\n<p>For common symlink configurations on Pantheon, refer to the <a href=\"https:\/\/wordpress.org\/support\/topic\/list-of-common-symlinks-in-pantheon\">list of common symlinks<\/a>.<\/p>\n\n<p><strong>Important notes:<\/strong><\/p>\n\n<ul>\n<li>This plugin only tracks symlinks created within the application. Symlinks created from the filesystem or command line are not tracked.<\/li>\n<li>Best used in Pantheon Dev or Multidev environments in SFTP mode.<\/li>\n<li>Symlink creation is disabled in read-only environments (e.g., Pantheon Test and Live).<\/li>\n<\/ul>\n\n<!--section=installation-->\n<h4>Automatic installation<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins &gt; Add New<\/strong> in your WordPress admin dashboard<\/li>\n<li>Search for \"Easy Symlinks\"<\/li>\n<li>Click <strong>Install Now<\/strong> and then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<h4>Manual installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file from WordPress.org<\/li>\n<li>Go to <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong> in your WordPress admin dashboard<\/li>\n<li>Upload the ZIP file and click <strong>Install Now<\/strong><\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu<\/li>\n<\/ol>\n\n<h4>Configuration<\/h4>\n\n<p>After activation, navigate to <strong>Settings &gt; Easy Symlinks<\/strong> to start creating symlinks.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20a%20symlink%3F\"><h3>What is a symlink?<\/h3><\/dt>\n<dd><p>A symbolic link (symlink) is a file that points to another file or directory. It acts as a shortcut, allowing you to access files from a different location without duplicating them.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20target%20and%20link%3F\"><h3>What is the difference between Target and Link?<\/h3><\/dt>\n<dd><p>The <strong>Target<\/strong> is the relative path to an existing directory (e.g., <code>.\/uploads\/cache<\/code>). The <strong>Link<\/strong> is the path where the symlink will be created (e.g., <code>\/wp-content\/cache<\/code>).<\/p><\/dd>\n<dt id=\"why%20can%20i%20not%20create%20symlinks%20on%20pantheon%20test%20or%20live%20environments%3F\"><h3>Why can I not create symlinks on Pantheon Test or Live environments?<\/h3><\/dt>\n<dd><p>Pantheon Test and Live environments have read-only filesystems. Symlinks can only be created in Dev or Multidev environments with SFTP connection mode enabled.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20on%20non-pantheon%20hosting%3F\"><h3>Does this plugin work on non-Pantheon hosting?<\/h3><\/dt>\n<dd><p>Yes, the plugin works on any hosting environment where the filesystem is writable. The Pantheon-specific features (environment detection, connection mode display) will simply not appear.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20symlinks%20if%20i%20deactivate%20the%20plugin%3F\"><h3>What happens to my symlinks if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>The symlinks themselves remain on the filesystem. Deactivating the plugin only removes the admin interface \u2014 the actual symlinks are not deleted.<\/p><\/dd>\n<dt id=\"what%20are%20presets%3F\"><h3>What are Presets?<\/h3><\/dt>\n<dd><p>Presets auto-detect installed plugins that are known to need symlinks on Pantheon. The Presets tab shows detected plugins with their required symlink paths and lets you apply them with a single click. Currently supported: Wordfence, WP Rocket, Big File Uploads, WP-Optimize, Divi Theme.<\/p><\/dd>\n<dt id=\"can%20i%20remove%20all%20plugin%20data%20from%20the%20database%3F\"><h3>Can I remove all plugin data from the database?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Settings &gt; Easy Symlinks &gt; Settings<\/strong> tab and check \"Delete data on uninstall.\" When the plugin is deleted, all saved options will be removed from the database.<\/p><\/dd>\n<dt id=\"can%20i%20manage%20symlinks%20that%20were%20created%20via%20the%20command%20line%3F\"><h3>Can I manage symlinks that were created via the command line?<\/h3><\/dt>\n<dd><p>No. This plugin only tracks symlinks that were created through its own interface. Symlinks created via the command line or filesystem are not tracked or displayed.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>2026-05-11<\/li>\n<li>New: Presets tab \u2014 auto-detects plugins that need symlinks for Pantheon compatibility<\/li>\n<li>New: Wordfence preset with wflogs, wordfence-waf.php, and .user.ini symlinks<\/li>\n<li>New: WP Rocket preset with wp-rocket-config and cache symlinks<\/li>\n<li>New: Big File Uploads preset with bfu-temp symlink<\/li>\n<li>New: WP-Optimize preset with wpo-cache symlink<\/li>\n<li>New: Divi Theme preset with et-cache symlink<\/li>\n<li>New: One-click apply for preset symlinks with status indicators (Active\/Not created)<\/li>\n<li>New: Remove Presets tab \u2014 safely removes preset symlinks and restores original files<\/li>\n<li>New: Smart file conversion \u2014 moves existing files to target location before symlinking<\/li>\n<li>New: Cross-filesystem file operations with copy+delete fallback for Pantheon<\/li>\n<li>New: SFTP mode warning when Pantheon filesystem is not writable<\/li>\n<li>New: Settings tab with \"Delete data on uninstall\" option for database cleanup<\/li>\n<li>New: Duplicate symlink detection \u2014 prevents re-creating existing symlinks<\/li>\n<li>Improved: Clear error\/success notifications for all symlink actions<\/li>\n<li>Improved: Removed redundant \"Settings saved\" notice<\/li>\n<li>Improved: Empty state message in delete dropdown when no symlinks exist<\/li>\n<li>Fixed: PHP warnings in save\/delete that broke HTTP headers<\/li>\n<li>Fixed: Admin CSS and JS not loading on settings page<\/li>\n<li>Compatibility: WordPress 6.8, PHP 7.4-8.4<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>2026-05-11<\/li>\n<li>Compatibility update for WordPress 6.8<\/li>\n<li>Modernized admin UI with card-based layout and WordPress-style tabs<\/li>\n<li>Fixed duplicate admin notices on settings save<\/li>\n<li>Fixed PHP warnings in create_folder and save_symlinks that broke HTTP headers<\/li>\n<li>Fixed PHP warning in delete_symlink when unlinking fails<\/li>\n<li>Added duplicate symlink detection \u2014 prevents re-creating existing symlinks<\/li>\n<li>Added clear error\/success notifications for create and delete actions<\/li>\n<li>Removed redundant \"Settings saved\" notice when plugin shows its own messages<\/li>\n<li>Added Settings tab with \"Delete data on uninstall\" option for database cleanup<\/li>\n<li>Added empty state message in delete dropdown when no symlinks exist<\/li>\n<li>Fixed PHPCS violations \u2014 plugin now passes WordPress coding standards<\/li>\n<li>Added Requires PHP header (7.4) and Tested PHP up to (8.4)<\/li>\n<li>Fixed readme.txt tags and short description for WordPress.org compliance<\/li>\n<li>Updated GitHub Actions deploy workflow to v4\/stable<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>2022-10-24<\/li>\n<li>Compatibility bump for WordPress 6.0.3<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>2021-10-09<\/li>\n<li>Compatibility bump for WordPress 5.8.1<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>2020-01-08<\/li>\n<li>Bug fixes and improvements \u2014 see <a href=\"https:\/\/github.com\/wpugph\/WordPress-Easy-Symlinks\/issues?q=is%3Aissue+milestone%3A1.0.1+is%3Aclosed\">closed issues for 1.0.1<\/a><\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>2019-12-26<\/li>\n<li>Initial public release on WordPress.org<\/li>\n<li>Improved deleting symlinks UI<\/li>\n<li>Only one symlink is deleted at a time<\/li>\n<li>Added checks for Pantheon environment and writable filesystem<\/li>\n<\/ul>","raw_excerpt":"Manage symbolic links from the WordPress admin. Create and delete symlinks without CLI access, ideal for Pantheon environments.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/115357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=115357"}],"author":[{"embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/carl-alberto"}],"wp:attachment":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=115357"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=115357"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=115357"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=115357"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=115357"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=115357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}