Benchmarks
Plugin footprint 23% from 16 tests
Installer 0% from 1 test
🔺 Critical test (weight: 50) | It is important to correctly install your plugin, without throwing errors or notices
It is recommended to fix the following installer errors
- Install procedure had errors
- > Deprecated in wp-content/plugins/wp-portfolio/wplib/utils_pagebuilder.inc.php+25
Methods with the same name as their class will not be constructors in a future version of PHP; PageBuilder has a deprecated constructor
Server metrics [RAM: ▼1.23MB] [CPU: ▼52.24ms] Passed 4 tests
This is a short check of server-side resources used by Wordpress Portfolio Plugin (WP Portfolio)
This plugin has minimal impact on server resources
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 2.77 ▼0.70 | 6.43 ▼36.75 |
Dashboard /wp-admin | 2.79 ▼0.56 | 9.58 ▼52.39 |
Posts /wp-admin/edit.php | 2.79 ▼0.57 | 8.67 ▼37.68 |
Add New Post /wp-admin/post-new.php | 2.79 ▼3.10 | 7.85 ▼82.15 |
Media Library /wp-admin/upload.php | 2.79 ▼0.44 | 8.72 ▼25.83 |
Documentation /wp-admin/admin.php?page=WPP_show_documentation | 2.79 | 7.50 |
WP Portfolio /wp-admin/admin.php?page=wp-portfolio/wp-portfolio.php | 2.79 | 7.57 |
Portfolio Settings /wp-admin/admin.php?page=WPP_show_settings | 2.79 | 9.53 |
Error Logs /wp-admin/admin.php?page=WPP_show_error_page | 2.79 | 7.16 |
Add New Website /wp-admin/admin.php?page=WPP_modify_website | 2.79 | 9.79 |
Website Groups /wp-admin/admin.php?page=WPP_website_groups | 2.79 | 8.17 |
Refresh Thumbnails /wp-admin/admin.php?page=WPP_show_refreshThumbnails | 2.79 | 8.24 |
Add New Group /wp-admin/admin.php?page=WPP_modify_group | 2.79 | 7.94 |
Layout Settings /wp-admin/admin.php?page=WPP_show_layout_settings | 2.79 | 7.23 |
Server storage [IO: ▲1.22MB] [DB: ▲0.01MB] Passed 3 tests
Input-output and database impact of this plugin
This plugin was installed successfully
Filesystem: 66 new files
Database: 6 new tables, 40 new options
New tables |
---|
wp_WPPortfolio_websites_meta |
wp_WPPortfolio_debuglog |
wp_WPPortfolio_groups_websites |
wp_WPPortfolio_groups |
wp_WPPortfolio_custom_fields |
wp_WPPortfolio_websites |
New WordPress options |
---|
WPPortfolio_setting_stw_render_type |
WPPortfolio_setting_stw_thumb_size_custom |
WPPortfolio_setting_template_css_paging |
db_upgraded |
WPPortfolio_setting_lightbox_transition |
WPPortfolio_setting_lightbox_speed |
widget_theysaidso_widget |
WPPortfolio_setting_scale_type |
WPPortfolio_setting_stw_thumb_size |
WPPortfolio_setting_cache_days |
... |
Browser metrics Passed 4 tests
Wordpress Portfolio Plugin (WP Portfolio): an overview of browser usage
Minimal impact on browser resources
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 2,878 ▲143 | 13.21 ▼1.22 | 1.57 ▼0.29 | 41.64 ▼8.04 |
Dashboard /wp-admin | 2,273 ▲88 | 5.89 ▲0.04 | 101.98 ▼20.67 | 38.67 ▼5.66 |
Posts /wp-admin/edit.php | 2,159 ▲70 | 2.01 ▲0.02 | 39.39 ▲2.10 | 35.84 ▼0.73 |
Add New Post /wp-admin/post-new.php | 1,585 ▲52 | 21.20 ▼2.23 | 682.23 ▲55.76 | 55.40 ▼14.00 |
Media Library /wp-admin/upload.php | 1,455 ▲64 | 4.23 ▲0.03 | 96.49 ▼1.32 | 42.84 ▼3.96 |
Documentation /wp-admin/admin.php?page=WPP_show_documentation | 1,512 | 2.12 | 29.64 | 43.82 |
/wp-admin/admin.php?page=# | 28 | 0.44 | 0.10 | 3.63 |
WP Portfolio /wp-admin/admin.php?page=wp-portfolio/wp-portfolio.php | 834 | 2.23 | 26.59 | 26.39 |
Portfolio Settings /wp-admin/admin.php?page=WPP_show_settings | 755 | 1.62 | 11.23 | 22.66 |
Error Logs /wp-admin/admin.php?page=WPP_show_error_page | 849 | 2.08 | 27.69 | 26.61 |
Add New Website /wp-admin/admin.php?page=WPP_modify_website | 755 | 1.62 | 11.26 | 23.01 |
Website Groups /wp-admin/admin.php?page=WPP_website_groups | 910 | 2.11 | 26.37 | 30.01 |
Refresh Thumbnails /wp-admin/admin.php?page=WPP_show_refreshThumbnails | 1,019 | 2.08 | 25.85 | 28.19 |
Add New Group /wp-admin/admin.php?page=WPP_modify_group | 986 | 2.23 | 26.20 | 28.52 |
Layout Settings /wp-admin/admin.php?page=WPP_show_layout_settings | 1,347 | 2.06 | 37.69 | 35.88 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.01MB] 25% from 4 tests
🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
These items require your attention
- This plugin cannot be uninstalled
- > Deprecated in wp-content/plugins/wp-portfolio/wplib/utils_pagebuilder.inc.php+25
Methods with the same name as their class will not be constructors in a future version of PHP; PageBuilder has a deprecated constructor
- This plugin does not fully uninstall, leaving 6 tables in the database
- wp_WPPortfolio_custom_fields
- wp_WPPortfolio_websites_meta
- wp_WPPortfolio_groups
- wp_WPPortfolio_websites
- wp_WPPortfolio_debuglog
- wp_WPPortfolio_groups_websites
- This plugin does not fully uninstall, leaving 40 options in the database
- WPPortfolio_setting_stw_render_type
- WPPortfolio_setting_stw_enable_https_set_automatically
- WPPortfolio_setting_scale_type
- WPPortfolio_setting_cache_days
- widget_recent-posts
- WPPortfolio_setting_template_css_widget
- WPPortfolio_setting_stw_thumb_size
- can_compress_scripts
- widget_wp-portfolio-widget
- WPPortfolio_setting_stw_thumb_resolution_custom
- ...
Smoke tests 25% from 4 tests
Server-side errors 0% from 1 test
🔹 Test weight: 20 | Just a short smoke test targeting errors on the server (in the Apache logs)
Please fix the following server-side errors
- 9 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=WPP_show_layout_settings
- > Deprecated in wp-content/plugins/wp-portfolio/wplib/utils_pagebuilder.inc.php+25
Methods with the same name as their class will not be constructors in a future version of PHP; PageBuilder has a deprecated constructor
- 9 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=WPP_show_layout_settings
- > Deprecated in wp-content/plugins/wp-portfolio/wplib/utils_formbuilder.inc.php+74
Methods with the same name as their class will not be constructors in a future version of PHP; FormBuilder has a deprecated constructor
- 9 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=WPP_show_layout_settings
- > Deprecated in wp-content/plugins/wp-portfolio/wplib/utils_formbuilder.inc.php+743
Methods with the same name as their class will not be constructors in a future version of PHP; FormElement has a deprecated constructor
- 9 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=WPP_show_layout_settings
- > Deprecated in wp-content/plugins/wp-portfolio/wplib/utils_tablebuilder.inc.php+26
Methods with the same name as their class will not be constructors in a future version of PHP; TableBuilder has a deprecated constructor
- 9 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=WPP_show_layout_settings
- > Deprecated in wp-content/plugins/wp-portfolio/wplib/utils_tablebuilder.inc.php+144
Methods with the same name as their class will not be constructors in a future version of PHP; RowData has a deprecated constructor
- 9 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=WPP_show_layout_settings
- > Deprecated in wp-content/plugins/wp-portfolio/wplib/utils_tablebuilder.inc.php+280
Methods with the same name as their class will not be constructors in a future version of PHP; TableColumn has a deprecated constructor
- 9 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=WPP_show_layout_settings
- > Deprecated in wp-content/plugins/wp-portfolio/lib/widget.inc.php+183
Function create_function() is deprecated
- 2 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=WPP_modify_website
- > Warning in wp-content/plugins/wp-portfolio/wp-portfolio.php+2175
DOMDocument::loadXML(): Start tag expected, '<' not found in Entity, line: 1
- 2 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=WPP_modify_website
- > Warning in wp-content/plugins/wp-portfolio/wp-portfolio.php+2176
simplexml_import_dom(): Invalid Nodetype to import
- > GET request to /wp-admin/admin.php?page=WPP_show_settings
- > Error in wp-content/plugins/wp-portfolio/wp-portfolio.php+2183
Uncaught Error: Call to a member function children() on null in wp-content/plugins/wp-portfolio/wp-portfolio.php:2183
Stack trace:
#0 wp-content/plugins/wp-portfolio/lib/admin_only.inc.php(614): WPPortfolio_hasCustomAccountFeature()
#1 wp-includes/class-wp-hook.php(310): WPPortfolio_pages_showSettings()
#2 wp-includes/class-wp-hook.php(334): WP_Hook->apply_filters()
#3 wp-includes/plugin.php(517): WP_Hook->do_action()
#4 wp-admin/admin.php(259): do_action()
#5 {main}
thrown- > GET request to /wp-admin/admin.php?page=WPP_modify_website
- > Error in wp-content/plugins/wp-portfolio/wp-portfolio.php+2183
Uncaught Error: Call to a member function children() on null in wp-content/plugins/wp-portfolio/wp-portfolio.php:2183
Stack trace:
#0 wp-content/plugins/wp-portfolio/lib/admin_only.inc.php(1996): WPPortfolio_hasCustomAccountFeature()
#1 wp-includes/class-wp-hook.php(310): WPPortfolio_modify_website()
#2 wp-includes/class-wp-hook.php(334): WP_Hook->apply_filters()
#3 wp-includes/plugin.php(517): WP_Hook->do_action()
#4 wp-admin/admin.php(259): do_action()
#5 {main}
thrown
SRP 50% 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
Almost there! Just fix the following items
- 2× PHP files trigger errors when accessed directly with GET requests:
- > PHP Fatal error
Uncaught Error: Call to undefined function is_admin() in wp-content/plugins/wp-portfolio/wp-portfolio.php:16
- > PHP Fatal error
Uncaught Error: Class 'WP_Widget' not found in wp-content/plugins/wp-portfolio/lib/widget.inc.php:5
- > PHP Fatal error
User-side errors 0% from 1 test
🔹 Test weight: 20 | Just a short smoke test targeting errors on the browser (console and network errors and warnings)
Please take a look at the following user-side issues
- 9 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=WPP_show_layout_settings
- > 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: $j(...).live is not a function" "TypeError: $j(...).live is not a function\n at HTMLDocument.\u003Canonymous> (/wp-content/plugins/wp-portfolio/js/wpp-admin.js?ver=1.43.2:179:19)\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
- 9 occurences, only the last one shown
- > GET request to /wp-admin/admin.php?page=WPP_show_layout_settings
- > 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: $j(...).live is not a function
- > GET request to /wp-admin/admin.php?page=#
- > Network (severe)
wp-admin/admin.php?page=# - Failed to load resource: the server responded with a status of 403 (Forbidden)
Optimizations
Plugin configuration 96% from 29 tests
readme.txt Passed 16 tests
The readme.txt file describes your plugin functionality and requirements and it is parsed to prepare the your plugin's listing
5 plugin tags: responsive portfolio, web page screenshots, gallery, portfolio, website screenshots
wp-portfolio/wp-portfolio.php 92% from 13 tests
This is the main PHP file of "Wordpress Portfolio Plugin (WP Portfolio)" version 1.43.2, providing information about the plugin in the header fields and serving as the principal entry point to the plugin's functions
The following require your attention:
- Description: The description should be shorter than 140 characters (currently 351 characters long)
Code Analysis Passed 3 tests
File types Passed 1 test
🔸 Test weight: 35 | An overview of files in this plugin; executable files are not allowed
There were no executable files found in this plugin8,687 lines of code in 23 files:
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 10 | 1,578 | 2,018 | 5,957 |
PO File | 1 | 531 | 584 | 1,766 |
JavaScript | 8 | 48 | 52 | 513 |
CSS | 4 | 102 | 25 | 451 |
PHP code Passed 2 tests
This is a very shot review of cyclomatic complexity and code structure
Although this was not an exhaustive test, there were no cyclomatic complexity issues detected
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.34 |
Average class complexity | 30.75 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 135.00 |
Average method complexity | 3.98 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 47.00 |
Code structure | ||
---|---|---|
Namespaces | 0 | |
Interfaces | 0 | |
Traits | 0 | |
Classes | 8 | |
▷ Abstract classes | 0 | 0.00% |
▷ Concrete classes | 8 | 100.00% |
▷ Final classes | 0 | 0.00% |
Methods | 80 | |
▷ Static methods | 1 | 1.25% |
▷ Public methods | 76 | 95.00% |
▷ Protected methods | 2 | 2.50% |
▷ Private methods | 2 | 2.50% |
Functions | 95 | |
▷ Named functions | 95 | 100.00% |
▷ Anonymous functions | 0 | 0.00% |
Constants | 36 | |
▷ Global constants | 36 | 100.00% |
▷ Class constants | 0 | 0.00% |
▷ Public constants | 0 | 0.00% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
All PNG images should be compressed to minimize bandwidth usage for end users
8 compressed PNG files occupy 0.01MB
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
imgs/icon_stop.png | 0.68KB | 0.78KB | 0.00% |
imgs/icon_hide.png | 0.70KB | 0.39KB | ▼ 45.06% |
imgs/icon-logo.png | 4.90KB | 4.00KB | ▼ 18.41% |
imgs/icon_show.png | 0.87KB | 0.80KB | ▼ 7.88% |
imgs/icon_tick.png | 0.52KB | 0.52KB | 0.00% |