{"id":386919,"date":"2026-10-14T09:12:51","date_gmt":"2026-10-14T09:12:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/permalink-autopilot\/"},"modified":"2026-10-15T11:09:36","modified_gmt":"2026-10-15T11:09:36","slug":"permapilot","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/permapilot\/","author":23585936,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Permapilot \u2013 Automatic Permalink Refresh","header_author":"Guy Argaman","header_description":"Refreshes permalinks automatically when post types, taxonomies or rewrite rules change, so you never have to re-save Settings \u2192 Permalinks.","assets_banners_color":"1d224d","last_updated":"2026-10-15 11:09:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":74,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"guyargaman","date":"2026-10-14 09:12:37","revision":3745814},"1.1.0":{"tag":"1.1.0","author":"guyargaman","date":"2026-10-15 11:09:36","revision":3748259}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3745814,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3745814,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3745814,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3745814,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[905,1487,3851,939,12054],"plugin_category":[59],"plugin_contributors":[286699],"plugin_business_model":[],"class_list":["post-386919","plugin","type-plugin","status-publish","hentry","plugin_tags-905","plugin_tags-custom-post-types","plugin_tags-flush","plugin_tags-permalinks","plugin_tags-rewrite-rules","plugin_category-utilities-and-tools","plugin_contributors-guyargaman","plugin_committers-guyargaman"],"banners":{"banner":"https:\/\/ps.w.org\/permapilot\/assets\/banner-772x250.png?rev=3745814","banner_2x":"https:\/\/ps.w.org\/permapilot\/assets\/banner-1544x500.png?rev=3745814","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/permapilot\/assets\/icon-128x128.png?rev=3745814","icon_2x":"https:\/\/ps.w.org\/permapilot\/assets\/icon-256x256.png?rev=3745814","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>When a theme or plugin adds or changes a custom post type, a taxonomy, a rewrite rule or an endpoint, WordPress keeps serving its old, cached rewrite rules. The new URLs return 404 until someone goes to Settings \u2192 Permalinks and clicks Save.<\/p>\n\n<p>Permapilot does that for you. On every request it compares a lightweight fingerprint of the registered routes with the one the rules were built from. When they differ, it rebuilds the rules once. When nothing changed, it costs one option read and one hash.<\/p>\n\n<p>It catches:<\/p>\n\n<ul>\n<li>New custom post types and taxonomies.<\/li>\n<li>Changed post type or taxonomy slugs.<\/li>\n<li>Rules added with <code>add_rewrite_rule()<\/code>.<\/li>\n<li>Endpoints added with <code>add_rewrite_endpoint()<\/code>.<\/li>\n<\/ul>\n\n<p>There are no settings. Activate it and forget it.<\/p>\n\n<h4>Permapilot Pro<\/h4>\n\n<p>Renamed a post type or taxonomy slug? Every old URL now leads nowhere. <a href=\"https:\/\/checkout.freemius.com\/plugin\/41571\/plan\/72192\/\">Permapilot Pro<\/a> sends visitors and search engines from the old URLs to the new ones with permanent (301) redirects, including taxonomy term URLs, which WordPress never redirects on its own.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20slow%20my%20site%20down%3F\"><h3>Does it slow my site down?<\/h3><\/dt>\n<dd><p>No. The check runs once per request and reads one cached option. Rules are only rebuilt when the routes actually change.<\/p><\/dd>\n<dt id=\"does%20it%20rewrite%20my%20.htaccess%20file%3F\"><h3>Does it rewrite my .htaccess file?<\/h3><\/dt>\n<dd><p>No. It does a soft flush, which rebuilds the rules stored in the database and leaves .htaccess alone.<\/p><\/dd>\n<dt id=\"what%20if%20another%20plugin%20registers%20routes%20only%20on%20some%20pages%3F\"><h3>What if another plugin registers routes only on some pages?<\/h3><\/dt>\n<dd><p>Some plugins register their routes only in wp-admin, so the routes keep changing between requests. Permapilot rebuilds the rules at most 5 times in 10 minutes, so this never turns into a rebuild on every request.<\/p><\/dd>\n<dt id=\"does%20it%20catch%20rules%20added%20with%20the%20rewrite_rules_array%20filter%3F\"><h3>Does it catch rules added with the rewrite_rules_array filter?<\/h3><\/dt>\n<dd><p>Not yet. Changes made only inside a filter callback are not part of the fingerprint. Save Settings \u2192 Permalinks once after changing such code.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added a \"Go Pro\" link to the plugin's row on the Plugins screen, hidden when Permapilot Pro is active.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Never re-save Settings \u2192 Permalinks again. Fixes 404s on new post types, taxonomies and custom routes automatically.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/386919","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=386919"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/guyargaman"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=386919"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=386919"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=386919"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=386919"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=386919"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=386919"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}