{"id":347998,"date":"2026-08-14T20:02:45","date_gmt":"2026-08-14T20:02:45","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/konfyra-omni-guard\/"},"modified":"2026-08-14T21:29:40","modified_gmt":"2026-08-14T21:29:40","slug":"konfyra-omni-guard","status":"publish","type":"plugin","link":"https:\/\/ca.wordpress.org\/plugins\/konfyra-omni-guard\/","author":23444247,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Konfyra Omni Guard","header_author":"Konfyra","header_description":"Universal plugin dependency safety net. Scans active plugins for cross-plugin function calls, wraps them with function_exists() protection at runtime, prevents fatal errors when dependencies go missing, and provides a central Dependency Health dashboard for site admins.","assets_banners_color":"95aaca","last_updated":"2026-08-14 21:29:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/konfyra.com\/omni-guard\/","header_author_uri":"https:\/\/konfyra.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":40,"num_ratings":0,"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":"gsrcoimbatore","date":"2026-08-14 21:29:40"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3647927,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3647930,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3647930,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[275757,22682,275756,13261,167478],"plugin_category":[],"plugin_contributors":[271533],"plugin_business_model":[],"class_list":["post-347998","plugin","type-plugin","status-publish","hentry","plugin_tags-dependency-guard","plugin_tags-fatal-error","plugin_tags-plugin-dependencies","plugin_tags-safety","plugin_tags-white-screen-of-death","plugin_contributors-gsrcoimbatore","plugin_committers-gsrcoimbatore"],"banners":{"banner":"https:\/\/ps.w.org\/konfyra-omni-guard\/assets\/banner-772x250.png?rev=3647930","banner_2x":"https:\/\/ps.w.org\/konfyra-omni-guard\/assets\/banner-1544x500.png?rev=3647930","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/konfyra-omni-guard\/assets\/icon-128x128.png?rev=3647927","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>The problem Omni Guard solves:<\/strong><\/p>\n\n<p>Prevents WordPress White Screen of Death from missing plugin dependencies. Static scanner, runtime guard, pre-flight checks. Free.<\/p>\n\n<p>This happens constantly. WordPress has no built-in protection for it. Omni Guard fills that gap.<\/p>\n\n<p><strong>How it works \u2014 four layers of protection:<\/strong><\/p>\n\n<p><strong>1. Static Scanner<\/strong>\nAnalyses the PHP source code of all active plugins using PHP's tokeniser (no regex, no exec). Builds a dependency map: which plugin calls functions defined in which other plugin. Runs twice daily via WP-Cron and whenever a plugin is activated or deactivated.<\/p>\n\n<p><strong>2. Runtime Error Handler<\/strong>\nRegisters a <code>set_error_handler()<\/code> and <code>register_shutdown_function()<\/code> at priority 1, before any other plugin fires. If an undefined function call occurs at runtime, Omni Guard catches it, logs the incident, and \u2014 in admin \u2014 shows a clean recovery page instead of a blank screen.<\/p>\n\n<p><strong>3. Dependency Pre-flight Check<\/strong>\nOn every admin request, reads the dependency map and verifies that every mapped cross-plugin function actually exists right now. If any is missing, an admin notice fires <em>before<\/em> any plugin code tries to call it.<\/p>\n\n<p><strong>4. Developer Safety Shims \u2014 <code>og_call()<\/code>, <code>og_exists()<\/code>, <code>og_guard()<\/code><\/strong>\nGlobal helper functions that plugin developers can use to make their cross-plugin calls crash-proof:<\/p>\n\n<pre><code>`php\n<\/code><\/pre>\n\n<p>\/\/ Returns WP_Error if missing \u2014 never crashes\n$result = og_call( 'some_plugin_function', $arg1, $arg2 );<\/p>\n\n<p>\/\/ Boolean existence check\nif ( og_exists( 'some_plugin_function' ) ) { ... }<\/p>\n\n<p>\/\/ Call with a fallback\n$result = og_guard( 'some_plugin_function', fn() =&gt; 'default', $arg1 );\n    `<\/p>\n\n<p><strong>Admin Dashboard includes:<\/strong>\n* Live dependency health overview with KPI cards\n* Full dependency map (filterable by risk level: high \/ medium \/ low)\n* Incident log with detection method, timestamp, URL, and alert status\n* Pre-flight status: functions missing <em>right now<\/em>\n* Settings: scan depth, email alerts, whitelist, ignore list, danger zone<\/p>\n\n<p><strong>Email alerts<\/strong> are throttled to once per function per hour, with a maximum of 5 per day, to avoid noise.<\/p>\n\n<p><strong>Zero impact on production performance<\/strong> \u2014 scanning runs in WP-Cron background jobs. The runtime guard adds a single error handler registration at init. No database queries on the frontend unless a pre-flight is triggered.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload <code>omni-guard.zip<\/code> via Plugins \u2192 Add New \u2192 Upload Plugin<\/li>\n<li>Activate<\/li>\n<li>Go to <strong>Omni Guard \u2192 Dashboard<\/strong><\/li>\n<li>Click <strong>Run Scan Now<\/strong> to build the initial dependency map<\/li>\n<li>Optionally enable email alerts under <strong>Omni Guard \u2192 Settings<\/strong><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20fix%20missing%20dependencies%3F\"><h3>Does this fix missing dependencies?<\/h3><\/dt>\n<dd><p>No. It prevents your site from crashing when they go missing, logs the incident, and alerts you. You still need to re-activate the missing plugin or remove the dependency.<\/p><\/dd>\n<dt id=\"does%20the%20scanner%20modify%20any%20plugin%20files%3F\"><h3>Does the scanner modify any plugin files?<\/h3><\/dt>\n<dd><p>Never. Omni Guard is read-only at the filesystem level. It analyses files but never writes to them.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>No. Scanning runs in WP-Cron background tasks. The runtime guard registers one error handler \u2014 effectively zero overhead.<\/p><\/dd>\n<dt id=\"what%20php%20version%20is%20required%3F\"><h3>What PHP version is required?<\/h3><\/dt>\n<dd><p>PHP 8.0 or higher (uses match expressions, named arguments, first-class callables).<\/p><\/dd>\n<dt id=\"what%20is%20a%20risk%20level%3F\"><h3>What is a risk level?<\/h3><\/dt>\n<dd><p>High (3): Functions related to auth, payment, security, or sanitisation.\nMedium (2): Data functions \u2014 get_, set_, update_, delete_, etc.\nLow (1): Utility\/helper functions unlikely to cause data loss if missing.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Static scanner with PHP tokeniser.<\/li>\n<li>Runtime error handler + shutdown handler.<\/li>\n<li>Pre-flight dependency checker.<\/li>\n<li>og_call(), og_exists(), og_guard() global shims.<\/li>\n<li>Admin dashboard: Dashboard, Dependency Map, Incident Log, Settings.<\/li>\n<li>Email alerts with throttling.<\/li>\n<li>REST API endpoints for live dashboard refresh.<\/li>\n<li>Deactivation detection: immediate alert when a provider plugin is turned off.<\/li>\n<\/ul>","raw_excerpt":"Prevents WordPress &quot;White Screen of Death&quot; crashes caused by missing plugin dependencies. Scans, guards, and alerts \u2014 silently.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/347998","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=347998"}],"author":[{"embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gsrcoimbatore"}],"wp:attachment":[{"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=347998"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=347998"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=347998"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=347998"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=347998"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ca.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=347998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}