{"id":251170,"date":"2025-10-20T14:02:07","date_gmt":"2025-10-20T14:02:07","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/auto-update-page-links\/"},"modified":"2025-10-27T08:26:28","modified_gmt":"2025-10-27T08:26:28","slug":"auto-update-page-links","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/auto-update-page-links\/","author":18778217,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"3.1.0","stable_tag":"trunk","tested":"6.8.5","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Auto Update Page Links","header_author":"Mohammad Irfan","header_description":"Automatically updates internal page links across your WordPress site (menus, content, templates, and template parts) when a page URL changes (e.g., slug edits).","assets_banners_color":"73658c","last_updated":"2025-10-27 08:26:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/mirfan439\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":242,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3383978,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3383978,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3383978,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3383978,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[148857,211323,148076,3724,561],"plugin_category":[43],"plugin_contributors":[249464],"plugin_business_model":[],"class_list":["post-251170","plugin","type-plugin","status-publish","hentry","plugin_tags-block-editor","plugin_tags-block-theme","plugin_tags-gutenberg","plugin_tags-page-links","plugin_tags-slug","plugin_category-customization","plugin_contributors-mirfan439","plugin_committers-mirfan439"],"banners":{"banner":"https:\/\/ps.w.org\/auto-update-page-links\/assets\/banner-772x250.jpg?rev=3383978","banner_2x":"https:\/\/ps.w.org\/auto-update-page-links\/assets\/banner-1544x500.jpg?rev=3383978","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/auto-update-page-links\/assets\/icon-128x128.png?rev=3383978","icon_2x":"https:\/\/ps.w.org\/auto-update-page-links\/assets\/icon-256x256.png?rev=3383978","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>When you change a page URL in WordPress, all internal links pointing to that page can break \u2014 this plugin fixes that automatically.<\/p>\n\n<p><strong>Auto Update Page Links<\/strong> scans your site\u2019s content, navigation menus, and block templates for outdated URLs and updates them whenever a page slug or permalink changes. It also logs these updates safely in the uploads directory.<\/p>\n\n<h3>\ud83d\udd27 Features<\/h3>\n\n<ul>\n<li>Automatically replaces old URLs in:\n<ul>\n<li>Page content<\/li>\n<li>Navigation menus<\/li>\n<li>Block templates<\/li>\n<li>Template parts<\/li>\n<\/ul>\n<\/li>\n<li>Skips the page being edited to avoid recursion<\/li>\n<li>Logs all updates in \/uploads\/auto-update-page-links\/<\/li>\n<li>Safe and lightweight \u2014 no database overhead<\/li>\n<li>Works seamlessly with the Block Editor (Gutenberg)<\/li>\n<\/ul>\n\n<h3>\ud83d\udee1\ufe0f Why use this plugin?<\/h3>\n\n<p>When you change a page\u2019s slug or URL, your internal links can easily break, which hurts SEO and user experience. This plugin ensures everything stays consistent \u2014 automatically.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Click \u201cPlugins\u201d &gt; \u201cAdd New\u201d in the WordPress admin menu.<\/li>\n<li>Search for \u201cAuto Update Page Links\u201d.<\/li>\n<li>Click \u201cInstall Now\u201d.<\/li>\n<li>Click \u201cActivate Plugin\u201d.<\/li>\n<\/ol>\n\n<p>Alternatively, you can manually upload the plugin to your wp-content\/plugins directory.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id='%3Cstrong%3Ewill%20it%20work%20with%20posts%20or%20custom%20post%20types%3F%3C%2Fstrong%3E'><h3><strong>Will it work with posts or custom post types?<\/strong><\/h3><\/dt>\n<dd><p>By default, it only updates pages, but you can easily extend it in the code to support posts or custom post types.<\/p><\/dd>\n<dt id='%3Cstrong%3Ewhere%20is%20the%20log%20file%20saved%3F%3C%2Fstrong%3E'><h3><strong>Where is the log file saved?<\/strong><\/h3><\/dt>\n<dd><p>Logs are stored safely at:\n\/wp-content\/uploads\/auto-update-page-links\/auto-update-links.log<\/p><\/dd>\n<dt id='%3Cstrong%3Ecan%20i%20disable%20logging%3F%3C%2Fstrong%3E'><h3><strong>Can I disable logging?<\/strong><\/h3><\/dt>\n<dd><p>Yes, you can comment out the $this-&gt;auplinks_log() calls in the class file if you prefer no logs.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.1.0<\/h4>\n\n<ul>\n<li>Move logs to uploads directory via <code>wp_upload_dir()<\/code><\/li>\n<li>Replace short prefix with unique <code>auplinks<\/code><\/li>\n<li>Use <code>plugin_dir_path()<\/code>\/<code>plugin_dir_url()<\/code> and <code>gmdate()<\/code><\/li>\n<li>Minor hardening and code cleanup<\/li>\n<\/ul>\n\n<h4>3.0<\/h4>\n\n<ul>\n<li>Full site coverage + logging<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Add templates\/template parts support<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Automatically updates links in Gutenberg blocks, templates, menus, and content when you change a page URL.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/251170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=251170"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mirfan439"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=251170"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=251170"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=251170"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=251170"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=251170"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=251170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}