{"id":347931,"date":"2026-08-11T02:43:18","date_gmt":"2026-08-11T02:43:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/robart-update-guard\/"},"modified":"2026-08-11T02:43:04","modified_gmt":"2026-08-11T02:43:04","slug":"robart-update-guard","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/robart-update-guard\/","author":14135334,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.0.2","stable_tag":"0.0.2","tested":"7.0.3","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"RobArt Update Guard","header_author":"robword","header_description":"See which plugins still call a retired WordPress function, class, core file, hook or jQuery method \u2014 with the file, line and fix. No AI, no network.","assets_banners_color":"082238","last_updated":"2026-08-11 02:43:04","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/paypal.me\/robsnowcreative","header_plugin_uri":"https:\/\/robsnow.eu\/plugins-wordpress-development\/robart-update-guard\/","header_author_uri":"https:\/\/robsnow.eu","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.0.2":{"tag":"0.0.2","author":"RobWord","date":"2026-08-11 02:43:04"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3641283,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3641283,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3641283,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3641283,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3641283,"resolution":"1","location":"assets","locale":"","width":3621,"height":2663},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3641283,"resolution":"2","location":"assets","locale":"","width":3623,"height":2406},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3641283,"resolution":"3","location":"assets","locale":"","width":3620,"height":15030},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3641283,"resolution":"4","location":"assets","locale":"","width":3621,"height":6211}},"screenshots":{"1":"The Dashboard \u2014 an at-a-glance summary of your last scan, with a heads-up when WordPress has an update waiting or has moved on since you last scanned.","2":"The Report \u2014 a scan showing which plugins call retired functions, with file, line and replacement.","3":"Appearance exposure \u2014 where your plugins lean on WordPress's own admin styling.","4":"The Lexicon \u2014 a searchable reference of everything your WordPress version has retired."}},"plugin_section":[262246],"plugin_tags":[3005,23323,2275,732,2552],"plugin_category":[52],"plugin_contributors":[267814],"plugin_business_model":[],"class_list":["post-347931","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-compatibility","plugin_tags-deprecation","plugin_tags-developer","plugin_tags-maintenance","plugin_tags-update","plugin_category-performance","plugin_contributors-robword","plugin_committers-robword"],"banners":{"banner":"https:\/\/ps.w.org\/robart-update-guard\/assets\/banner-772x250.png?rev=3641283","banner_2x":"https:\/\/ps.w.org\/robart-update-guard\/assets\/banner-1544x500.png?rev=3641283","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/robart-update-guard\/assets\/icon-128x128.png?rev=3641283","icon_2x":"https:\/\/ps.w.org\/robart-update-guard\/assets\/icon-256x256.png?rev=3641283","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/robart-update-guard\/assets\/screenshot-1.png?rev=3641283","caption":"The Dashboard \u2014 an at-a-glance summary of your last scan, with a heads-up when WordPress has an update waiting or has moved on since you last scanned."},{"src":"https:\/\/ps.w.org\/robart-update-guard\/assets\/screenshot-2.png?rev=3641283","caption":"The Report \u2014 a scan showing which plugins call retired functions, with file, line and replacement."},{"src":"https:\/\/ps.w.org\/robart-update-guard\/assets\/screenshot-3.png?rev=3641283","caption":"Appearance exposure \u2014 where your plugins lean on WordPress's own admin styling."},{"src":"https:\/\/ps.w.org\/robart-update-guard\/assets\/screenshot-4.png?rev=3641283","caption":"The Lexicon \u2014 a searchable reference of everything your WordPress version has retired."}],"raw_content":"<!--section=description-->\n<p>Every WordPress release quietly retires a few things \u2014 a function, a class, a core file, an action or filter. Nothing is removed the day it is deprecated, so a plugin that still calls a retired function keeps working for a while. Then a later release finally drops it and something breaks, often with no error you can see \u2014 just a button that no longer does anything.<\/p>\n\n<p><strong>RobArt Update Guard tells you, before that happens, which of your installed plugins still lean on something WordPress has retired \u2014 with the file, the line, and what to use instead.<\/strong><\/p>\n\n<h4>How it works<\/h4>\n\n<p>WordPress marks its own retirements directly in its source code. A single line like <code>_deprecated_function( __FUNCTION__, '5.5.0', 'add_allowed_options()' )<\/code> carries all three facts a report needs: what was retired, when, and what to use instead. Update Guard reads those markings from the copy of WordPress already on your site, builds an index, then walks the PHP of your installed plugins for anything that still calls one.<\/p>\n\n<p>Because the answer comes from your own WordPress install, it is as authoritative as your site itself \u2014 no changelog parsing, no external service, no guesswork, and no AI.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li><strong>Report<\/strong> \u2014 scan every installed plugin and list what still calls a retired function, class, core file, action or filter, with the exact file and line and the recommended replacement.<\/li>\n<li><strong>Appearance exposure<\/strong> \u2014 see where your plugins lean on WordPress's own admin styling, so you know which screens to glance at after a core restyle (nothing broken \u2014 just a heads-up on where the look may shift).<\/li>\n<li><strong>Lexicon<\/strong> \u2014 a searchable reference of everything your WordPress version has retired, grouped by the release that retired it, with replacements.<\/li>\n<\/ul>\n\n<h4>What it covers reliably<\/h4>\n\n<p>Retired functions, classes, core files, and actions\/filters \u2014 each with a real, exact line number, because all four can be found unambiguously in source.<\/p>\n\n<h4>What it deliberately leaves out<\/h4>\n\n<p>Update Guard is honest about its edges rather than padding the report with guesses:<\/p>\n\n<ul>\n<li><strong>Class methods<\/strong> \u2014 many share everyday names (<code>reset()<\/code>, <code>render()<\/code>); telling a retired one from an unrelated method needs runtime type information a static scan doesn't have.<\/li>\n<li><strong>Same-name behaviour changes<\/strong> \u2014 when a function keeps its name but changes what it does. This is the commonest cause of breakage and no code reader can detect it, so a clean report means \"no known retirements,\" not \"guaranteed safe.\"<\/li>\n<li><strong>jQuery in plainly named variables<\/strong> \u2014 it reports only calls whose receiver is visibly jQuery, because the removed jQuery names are ordinary words like <code>load<\/code> and <code>error<\/code> and matching them loosely would bury real findings in noise.<\/li>\n<li><strong>Minified and bundled files<\/strong>, and third-party libraries inside plugins (<code>vendor\/<\/code>, <code>node_modules\/<\/code>) \u2014 not yours to change, and they would dominate the results.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>Everything is read from the copy of WordPress and the plugins already on your site. No code leaves your server, nothing is fetched from the network, and no AI is involved. Update Guard bundles no third-party libraries. It only reads \u2014 it never edits a plugin or makes changes for you.<\/p>\n\n<h3>Uninstall<\/h3>\n\n<p>Update Guard cleans up after itself. When you delete the plugin from the Plugins screen, it removes everything it stored:<\/p>\n\n<ul>\n<li>Its options (install date, last-scan record, and onboarding state).<\/li>\n<li>Its cached scan reports (stored as transients).<\/li>\n<\/ul>\n\n<p>It creates no custom database tables, writes nothing outside your own site, and leaves no orphaned data behind. Deactivating the plugin keeps your settings and last report; only deleting the plugin runs the clean-up.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Update Guard performs all of its scanning locally on your own server. It makes no automatic network requests and sends no data anywhere.<\/p>\n\n<p>The plugin displays a few ordinary links to information pages for other Rob Art plugins, hosted at <code>robsnow.eu<\/code>. These are plain links you may choose to click; the plugin never contacts any external service on its own, and no data is transmitted unless you follow a link.<\/p>\n\n<p>Support and review links point to WordPress.org, which is governed by the WordPress.org privacy policy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/robart-update-guard<\/code>, or install it from the Plugins screen in your WordPress admin.<\/li>\n<li>Activate it through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Open the <strong>Update Guard<\/strong> menu in the admin sidebar and click <strong>Run a scan<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20a%20clean%20report%20mean%20it%20is%20safe%20to%20update%3F\"><h3>Does a clean report mean it is safe to update?<\/h3><\/dt>\n<dd><p>It means nothing your plugins call has been retired. It cannot promise an update is safe, because a function can change what it does while keeping its name \u2014 the commonest cause of breakage, and something no code reader can detect. Treat a clean report as \"no known retirements,\" not \"guaranteed safe.\"<\/p><\/dd>\n<dt id=\"why%20didn%27t%20it%20flag%20a%20method%20i%20know%20is%20deprecated%3F\"><h3>Why didn't it flag a method I know is deprecated?<\/h3><\/dt>\n<dd><p>Class methods are excluded on purpose. Many share everyday names, and distinguishing a retired one from an unrelated method needs runtime type information a static scan doesn't have. Flagging them would produce more noise than signal.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20my%20site%20down%3F\"><h3>Will it slow my site down?<\/h3><\/dt>\n<dd><p>No. Nothing runs on the front end. A scan happens only when you click the button, and the result is cached for a day.<\/p><\/dd>\n<dt id=\"does%20it%20change%20any%20of%20my%20files%3F\"><h3>Does it change any of my files?<\/h3><\/dt>\n<dd><p>No. Update Guard only reads. It never edits a plugin \u2014 it points you to the file and line so you can decide.<\/p><\/dd>\n<dt id=\"does%20it%20send%20my%20code%20anywhere%20or%20use%20ai%3F\"><h3>Does it send my code anywhere or use AI?<\/h3><\/dt>\n<dd><p>No. It reads only the WordPress and plugin files already on your server. Nothing is sent to any external service and no AI is involved.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.0.2<\/h4>\n\n<ul>\n<li>The \"more plugins from Rob Art\" links now point to each plugin's information page rather than a purchase page.<\/li>\n<\/ul>\n\n<h4>0.0.1<\/h4>\n\n<ul>\n<li>Initial release. Report (deprecated function, class, core-file and hook scan), Appearance exposure, and Lexicon reference. Reads the site's own WordPress install; no network, no AI.<\/li>\n<\/ul>","raw_excerpt":"See which plugins still call a retired WordPress function, class, file or hook \u2014 with the file, line and fix. No AI, no network.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/347931","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=347931"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/robword"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=347931"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=347931"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=347931"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=347931"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=347931"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=347931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}