Benchmarks
Plugin footprint 65% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | All plugins must install correctly, without throwing any errors, warnings, or notices
The plugin installed successfully, without throwing any errors or notices
Server metrics [RAM: ▲2.72MB] [CPU: ▲15.04ms] 75% from 4 tests
An overview of server-side resources used by If-So Dynamic Content Personalization
Please take the time to fix the following items
- CPU: You should keep total CPU usage under 500.00ms (currently 1,168.41ms on /wp-admin/admin.php?page=wpcdd_admin_geo_license)
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 6.16 ▲2.70 | 61.37 ▲20.20 |
Dashboard /wp-admin | 6.02 ▲2.72 | 58.99 ▲9.52 |
Posts /wp-admin/edit.php | 6.06 ▲2.70 | 62.74 ▲17.24 |
Add New Post /wp-admin/post-new.php | 8.79 ▲2.90 | 108.46 ▲13.18 |
Media Library /wp-admin/upload.php | 5.98 ▲2.75 | 57.44 ▲23.91 |
All Triggers /wp-admin/edit.php?post_type=ifso_triggers | 5.98 | 53.98 |
License /wp-admin/admin.php?page=wpcdd_admin_menu_license | 5.88 | 47.88 |
Settings /wp-admin/admin.php?page=wpcdd_admin_menu_settings | 5.95 | 51.74 |
/wp-admin/admin.php?page=wpcdd_admin_location_generator | 5.85 | 50.21 |
Geolocation /wp-admin/admin.php?page=wpcdd_admin_geo_license | 6.04 | 1,168.41 |
Audiences /wp-admin/admin.php?page=wpcdd_admin_menu_groups_list | 5.86 | 48.43 |
Server storage [IO: ▲5.23MB] [DB: ▲0.00MB] Passed 3 tests
Input-output and database impact of this plugin
No storage issues were detected
Filesystem: 373 new files
Database: 2 new tables, 13 new options
New tables |
---|
wp_ifso_daily_sessions |
wp_ifso_local_user |
New WordPress options |
---|
theysaidso_admin_options |
jal_db_version |
db_upgraded |
widget_recent-posts |
75 |
ifso_wp_version |
100 |
60 |
90 |
can_compress_scripts |
... |
Browser metrics Passed 4 tests
An overview of browser requirements for If-So Dynamic Content Personalization
This plugin renders optimally with no browser resource issues detected
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,940 ▲178 | 13.47 ▼0.93 | 13.37 ▲11.73 | 44.93 ▼2.13 |
Dashboard /wp-admin | 2,254 ▲80 | 5.55 ▼0.12 | 94.93 ▼4.13 | 76.98 ▲33.58 |
Posts /wp-admin/edit.php | 2,159 ▲59 | 1.97 ▲0.01 | 40.13 ▼0.57 | 39.52 ▲1.70 |
Add New Post /wp-admin/post-new.php | 6,424 ▲4,898 | 29.49 ▲6.51 | 884.39 ▲235.78 | 39.55 ▼13.75 |
Media Library /wp-admin/upload.php | 1,453 ▲53 | 4.25 ▲0.04 | 103.76 ▼3.96 | 46.36 ▲0.17 |
All Triggers /wp-admin/edit.php?post_type=ifso_triggers | 1,153 | 1.93 | 35.06 | 32.71 |
License /wp-admin/admin.php?page=wpcdd_admin_menu_license | 1,062 | 3.63 | 63.90 | 36.70 |
Settings /wp-admin/admin.php?page=wpcdd_admin_menu_settings | 1,445 | 3.38 | 59.15 | 34.04 |
/wp-admin/admin.php?page=wpcdd_admin_location_generator | 951 | 5.47 | 77.92 | 18.43 |
Geolocation /wp-admin/admin.php?page=wpcdd_admin_geo_license | 1,523 | 5.00 | 72.43 | 58.14 |
Audiences /wp-admin/admin.php?page=wpcdd_admin_menu_groups_list | 1,000 | 3.72 | 51.04 | 40.51 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] 50% from 4 tests
🔸 Tests weight: 35 | All plugins must uninstall correctly, removing their source code and extra database tables they might have created
You still need to fix the following
- The uninstall procedure failed, leaving 2 tables in the database
- wp_ifso_local_user
- wp_ifso_daily_sessions
- This plugin does not fully uninstall, leaving 13 options in the database
- ifso_wp_version
- theysaidso_admin_options
- 90
- jal_db_version
- can_compress_scripts
- 100
- db_upgraded
- widget_recent-comments
- 95
- 75
- ...
Smoke tests 25% from 4 tests
Server-side errors Passed 1 test
🔹 Test weight: 20 | A smoke test targeting server-side errors
Everything seems fine, however this is by no means an exhaustive test
SRP 0% from 2 tests
🔹 Tests weight: 20 | The single-responsibility principle applies for WordPress plugins as well - please make sure your PHP files perform no actions when accessed directly
The following issues need your attention
- 5× PHP files output text when accessed directly:
- > /wp-content/plugins/if-so/admin/partials/ifso_location_generator_page_display.php
- > /wp-content/plugins/if-so/rest/ifso_update_sessions.php
- > /wp-content/plugins/if-so/public/partials/wp-if-so-display.php
- > /wp-content/plugins/if-so/admin/partials/ifso_trigger_settings_metabox.php
- > /wp-content/plugins/if-so/rest/ifso_activate.php
- 153× PHP files trigger server errors when accessed directly (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Class 'YahnisElsts\\PluginUpdateChecker\\v5p0\\Vcs\\Api' not found in wp-content/plugins/if-so/extensions/extension-base/lib/plugin-update-checker/Puc/v5p0/Vcs/GitHubApi.php:8
- > PHP Warning
require_once(IFSO_PLUGIN_BASE_DIRpublic/models/triggers/ifso-triggers-model.class.php): failed to open stream: No such file or directory in wp-content/plugins/if-so/public/services/triggers-service/triggers-service.class.php on line 5
- > PHP Fatal error
Uncaught Error: Class 'YahnisElsts\\PluginUpdateChecker\\v5p0\\DebugBar\\Panel' not found in wp-content/plugins/if-so/extensions/extension-base/lib/plugin-update-checker/Puc/v5p0/DebugBar/PluginPanel.php:8
- > PHP Warning
require_once(IFSO_PLUGIN_BASE_DIRextensions/ifso-gutenberg-blocks/ifso-gutenberg-block-base.class.php): failed to open stream: No such file or directory in wp-content/plugins/if-so/extensions/ifso-gutenberg-blocks/ifso-standalone-conditions-gutenberg-block/ifso-gutenberg-standalone-conditions-block.class.php on line 12
- > PHP Warning
Use of undefined constant IFSO_PLUGIN_BASE_DIR - assumed 'IFSO_PLUGIN_BASE_DIR' (this will throw an Error in a future version of PHP) in wp-content/plugins/if-so/public/services/triggers-service/triggers-service.class.php on line 5
- > PHP Fatal error
require_once(): Failed opening required 'IFSO_PLUGIN_BASE_DIRextensions/ifso-gutenberg-blocks/ifso-gutenberg-block-base.class.php' (include_path='.:/usr/share/php') in wp-content/plugins/if-so/extensions/ifso-gutenberg-blocks/ifso-guntenberg-block/ifso-gutenberg-block.class.php on line 12
- > PHP Fatal error
Uncaught Error: Call to undefined function IfSo\\PublicFace\\Services\\TriggersService\\Triggers\\plugin_dir_path() in wp-content/plugins/if-so/public/services/triggers-service/triggers/impl/user-roles-trigger.class.php:9
- > PHP Warning
Use of undefined constant IFSO_PLUGIN_BASE_DIR - assumed 'IFSO_PLUGIN_BASE_DIR' (this will throw an Error in a future version of PHP) in wp-content/plugins/if-so/public/models/page-visits/ifso_page_visits_service.php on line 11
- > PHP Warning
Use of undefined constant IFSO_PLUGIN_BASE_DIR - assumed 'IFSO_PLUGIN_BASE_DIR' (this will throw an Error in a future version of PHP) in wp-content/plugins/if-so/extensions/ifso-extended-shortcodes/extended-shortcodes.php on line 10
- > PHP Fatal error
Uncaught Error: Call to undefined function IfSo\\PublicFace\\Services\\TriggersService\\Triggers\\plugin_dir_path() in wp-content/plugins/if-so/public/services/triggers-service/triggers/impl/user-details-trigger.class.php:9
- > PHP Fatal error
User-side errors 0% from 1 test
🔹 Test weight: 20 | A shallow check that no browser errors were triggered
There are user-side issues you should fix
- > GET request to /wp-admin/admin.php?page=wpcdd_admin_location_generator
- > Console-api (warning) in unknown
https://maps.googleapis.com/maps/api/js?key=AIzaSyD_84lpDfAJL1Tee8nDHcATxb4QmSZjgTU&language=en&libraries=places&callback=initAutocomplete&ver=1.6.3.1 169:309 "google.maps.event.addDomListener() is deprecated, use the standard\naddEventListener() method instead:\nhttps://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener\nThe feature will continue to work and there is no plan to decommission\nit."
- > GET request to /wp-admin/admin.php?page=wpcdd_admin_location_generator
- > Console-api (warning) in unknown
/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate,utils&ver=6.3.1 1:28609 "jQuery.Deferred exception: Cannot read properties of null (reading 'ifsoLocGenPipe')" "TypeError: Cannot read properties of null (reading 'ifsoLocGenPipe')\n at LocationGenerator.openerHasPipe (/wp-admin/admin.php?page=wpcdd_admin_location_generator:458:42)\n at LocationGenerator.initListeners (/wp-admin/admin.php?page=wpcdd_admin_location_generator:357:21)\n at new LocationGenerator (/wp-admin/admin.php?page=wpcdd_admin_location_generator:330:14)\n at HTMLDocument.\u003Canonymous> (/wp-admin/admin.php?page=wpcdd_admin_location_generator:318:21)\n at e (/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate,utils&ver=6.3.1:2:26990)\n at t (/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate,utils&ver=6.3.1:2:27292)" undefined
- > GET request to /wp-admin/admin.php?page=wpcdd_admin_location_generator
- > Javascript (severe) in unknown
/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate,utils&ver=6.3.1 1:28721 Uncaught TypeError: Cannot read properties of null (reading 'ifsoLocGenPipe')
Optimizations
Plugin configuration 97% from 29 tests
readme.txt 94% from 16 tests
Often overlooked, readme.txt is one of the most important files in your plugin
These attributes need your attention:
- Tags: Please delete some tags, you are using 25 tag instead of maximum 10
if-so/if-so.php Passed 13 tests
"If-So Dynamic Content Personalization" version 1.6.3.1's primary PHP file adds more information about the plugin and serves as the entry point for WordPress
116 characters long description:
Display different content to different visitors. Simple to use, just select a condition and set content accordingly.
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | A short review of files and their extensions; it is not recommended to include executable files
Everything looks great! No dangerous files found in this plugin40,109 lines of code in 285 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 180 | 4,195 | 5,041 | 20,658 |
CSS | 22 | 482 | 141 | 7,101 |
JavaScript | 20 | 826 | 398 | 3,470 |
SVG | 3 | 0 | 0 | 2,970 |
Sass | 14 | 34 | 34 | 1,768 |
PO File | 26 | 499 | 588 | 1,765 |
LESS | 14 | 34 | 44 | 1,758 |
JSON | 4 | 8 | 0 | 317 |
Markdown | 1 | 84 | 0 | 299 |
XML | 1 | 0 | 0 | 3 |
PHP code Passed 2 tests
A short review of cyclomatic complexity and code structure
No cyclomatic complexity issues were detected for this plugin
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.51 |
Average class complexity | 18.33 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 223.00 |
Average method complexity | 3.50 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 89.00 |
Code structure | ||
---|---|---|
Namespaces | 39 | |
Interfaces | 5 | |
Traits | 1 | |
Classes | 167 | |
▷ Abstract classes | 20 | 11.98% |
▷ Concrete classes | 147 | 88.02% |
▷ Final classes | 0 | 0.00% |
Methods | 1,176 | |
▷ Static methods | 103 | 8.76% |
▷ Public methods | 773 | 65.73% |
▷ Protected methods | 180 | 15.31% |
▷ Private methods | 223 | 18.96% |
Functions | 79 | |
▷ Named functions | 45 | 56.96% |
▷ Anonymous functions | 34 | 43.04% |
Constants | 62 | |
▷ Global constants | 15 | 24.19% |
▷ Class constants | 47 | 75.81% |
▷ Public constants | 47 | 100.00% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
PNG files should be compressed to save space and minimize bandwidth usage
5 PNG files occupy 0.09MB with 0.04MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
admin/images/ifso-logo.png | 1.44KB | 0.61KB | ▼ 57.99% |
admin/images/Help.png | 9.87KB | 10.31KB | 0.00% |
admin/images/IfSo_logo25X8.png | 1.47KB | 0.67KB | ▼ 54.22% |
admin/images/flags.png | 77.51KB | 25.56KB | ▼ 67.03% |
admin/images/logo-256x256.png | 1.44KB | 0.61KB | ▼ 57.99% |