Benchmarks
Plugin footprint 64% from 16 tests
Installer Passed 1 test
🔺 Critical test (weight: 50) | It is important to correctly install your plugin, without throwing errors or notices
The plugin installed gracefully, with no errors
Server metrics [RAM: ▲6.96MB] [CPU: ▲29.27ms] 50% from 4 tests
An overview of server-side resources used by Paid Membership Plugin, Ecommerce, Registration Form, Login Form, User Profile & Restrict Content – ProfilePress
Please have a look at the following items
- RAM: Try to keep total memory usage under 10MB (currently 10.86MB on /wp-admin/admin.php?page=ppress-customers)
- Extra RAM: Extra memory usage must be kept under 5MB (currently 6.96MB on /wp-admin/admin.php?page=ppress-customers)
Page | Memory (MB) | CPU Time (ms) |
---|---|---|
Home / | 8.98 ▲5.52 | 71.79 ▲21.14 |
Dashboard /wp-admin | 10.67 ▲7.36 | 88.49 ▲39.07 |
Posts /wp-admin/edit.php | 11.01 ▲7.65 | 98.26 ▲51.64 |
Add New Post /wp-admin/post-new.php | 13.45 ▲7.56 | 115.89 ▲11.94 |
Media Library /wp-admin/upload.php | 10.64 ▲7.41 | 81.37 ▲44.94 |
Membership Plans /wp-admin/admin.php?page=ppress-plans | 10.92 | 83.31 |
Subscriptions /wp-admin/admin.php?page=ppress-subscriptions | 10.87 | 85.89 |
Settings /wp-admin/admin.php?page=ppress-config | 10.61 | 72.39 |
Member Directories /wp-admin/admin.php?page=ppress-directories | 10.86 | 79.70 |
Popups & Optins /wp-admin/admin.php?page=ppress-mailoptin | 10.67 | 76.17 |
Dashboard /wp-admin/admin.php?page=ppress-dashboard | 14.07 | 120.60 |
Forms & Profiles /wp-admin/admin.php?page=ppress-forms | 10.86 | 81.62 |
Content Protection /wp-admin/admin.php?page=ppress-content-protection | 10.77 | 75.50 |
Orders /wp-admin/admin.php?page=ppress-orders | 10.94 | 78.53 |
Customers /wp-admin/admin.php?page=ppress-customers | 10.86 | 78.83 |
Server storage [IO: ▲12.58MB] [DB: ▲0.04MB] Passed 3 tests
A short overview of filesystem and database impact
This plugin installed successfully
Filesystem: 2,137 new files
Database: 10 new tables, 27 new options
New tables |
---|
wp_ppress_customers |
wp_ppress_orders |
wp_ppress_forms |
wp_ppress_sessions |
wp_ppress_ordermeta |
wp_ppress_formsmeta |
wp_ppress_plans |
wp_ppress_coupons |
wp_ppress_subscriptions |
wp_ppress_meta_data |
New WordPress options |
---|
wp_user_avatar_resize_upload |
widget_recent-comments |
ppress_settings_data |
ppress_new_v4_install |
db_upgraded |
wp_user_cover_upload_size_limit |
wp_user_avatar_resize_h |
widget_pp_form |
ppress_install_date |
wp_user_avatar_upload_size_limit |
... |
Browser metrics Passed 4 tests
Checking browser requirements for Paid Membership Plugin, Ecommerce, Registration Form, Login Form, User Profile & Restrict Content – ProfilePress
There were no issues detected in relation to browser resource usage
Page | Nodes | Memory (MB) | Script (ms) | Layout (ms) |
---|---|---|---|---|
Home / | 3,126 ▲364 | 14.24 ▼0.47 | 12.13 ▲10.05 | 36.71 ▼6.76 |
Dashboard /wp-admin | 2,431 ▲254 | 4.90 ▼0.73 | 101.40 ▲8.62 | 49.44 ▲8.83 |
Posts /wp-admin/edit.php | 2,309 ▲212 | 2.64 ▲0.70 | 44.19 ▲9.53 | 37.83 ▲5.42 |
Add New Post /wp-admin/post-new.php | 1,631 ▲105 | 22.26 ▼1.21 | 776.23 ▲73.20 | 38.88 ▼27.49 |
Media Library /wp-admin/upload.php | 1,621 ▲221 | 4.36 ▲0.20 | 103.08 ▲0.72 | 43.20 ▼1.11 |
Membership Plans /wp-admin/admin.php?page=ppress-plans | 1,669 | 4.84 | 93.50 | 40.62 |
Subscriptions /wp-admin/admin.php?page=ppress-subscriptions | 2,257 | 5.37 | 95.11 | 32.46 |
Settings /wp-admin/admin.php?page=ppress-config | 1,537 | 4.73 | 72.03 | 72.67 |
Member Directories /wp-admin/admin.php?page=ppress-directories | 1,553 | 4.61 | 65.69 | 29.40 |
Popups & Optins /wp-admin/admin.php?page=ppress-mailoptin | 1,331 | 4.68 | 59.11 | 46.87 |
Dashboard /wp-admin/admin.php?page=ppress-dashboard | 2,098 | 9.28 | 209.88 | 45.69 |
Forms & Profiles /wp-admin/admin.php?page=ppress-forms | 1,606 | 4.79 | 63.08 | 33.39 |
Content Protection /wp-admin/admin.php?page=ppress-content-protection | 1,494 | 4.75 | 64.52 | 34.18 |
Orders /wp-admin/admin.php?page=ppress-orders | 2,244 | 5.15 | 86.26 | 36.12 |
Customers /wp-admin/admin.php?page=ppress-customers | 2,115 | 12.23 | 127.29 | 37.11 |
Uninstaller [IO: ▲0.00MB] [DB: ▲0.04MB] 50% from 4 tests
🔸 Tests weight: 35 | Verifying that this plugin uninstalls completely without leaving any traces
It is recommended to fix the following
- The uninstall procedure failed, leaving 10 tables in the database
- wp_ppress_forms
- wp_ppress_plans
- wp_ppress_sessions
- wp_ppress_customers
- wp_ppress_coupons
- wp_ppress_orders
- wp_ppress_ordermeta
- wp_ppress_meta_data
- wp_ppress_formsmeta
- wp_ppress_subscriptions
- Zombie WordPress options were found after uninstall: 27 options
- widget_wp_user_avatar_profile
- wp_user_avatar_users_updated
- db_upgraded
- widget_pp_form
- wp_user_avatar_default_avatar_updated
- wp_user_avatar_disable_gravatar
- wp_user_avatar_upload_size_limit
- theysaidso_admin_options
- widget_pp_tabbed_widget
- ppress_plugin_activated
- ...
Smoke tests 25% from 4 tests
Server-side errors 0% from 1 test
🔹 Test weight: 20 | A smoke test targeting server-side errors
Almost there, just fix the following server-side errors
- > GET request to /wp-admin/admin.php?page=ppress-config
- > Notice in wp-content/plugins/wp-user-avatar/src/Functions/custom-settings-api.php+553
Undefined index: description
SRP 0% from 2 tests
🔹 Tests weight: 20 | It is important to ensure that your PHP files perform no action when accessed directly, respecting the single-responsibility principle
Please take a closer look at the following
- 5× GET requests to PHP files return non-empty strings:
- > /wp-content/plugins/wp-user-avatar/wp-user-avatar.php
- > /wp-content/plugins/wp-user-avatar/deprecated/wp-user-avatar/wp-user-avatar.php
- > /wp-content/plugins/wp-user-avatar/src/Admin/SettingsPages/Membership/views/subscriptions/subscription-notes-sidebar.php
- > /wp-content/plugins/wp-user-avatar/deprecated/wp-user-avatar/includes/tinymce/window.php
- > /wp-content/plugins/wp-user-avatar/src/Admin/SettingsPages/Membership/views/orders/order-notes-sidebar.php
- 709× PHP files trigger server errors when accessed directly (only 10 are shown):
- > PHP Fatal error
Uncaught Error: Class 'ProfilePress\\Core\\Themes\\DragDrop\\AbstractTheme' not found in wp-content/plugins/wp-user-avatar/src/Themes/DragDrop/UserProfile/DefaultTemplate.php:11
- > PHP Fatal error
Uncaught Error: Class 'ProfilePressVendor\\Stripe\\ApiResource' not found in wp-content/plugins/wp-user-avatar/third-party/vendor/stripe/stripe-php/lib/Recipient.php:34
- > PHP Fatal error
Uncaught Error: Class 'ProfilePressVendor\\Stripe\\ApiResource' not found in wp-content/plugins/wp-user-avatar/third-party/vendor/stripe/stripe-php/lib/CreditNote.php:39
- > PHP Fatal error
Uncaught Error: Call to undefined function esc_html_e() in wp-content/plugins/wp-user-avatar/src/Admin/SettingsPages/Membership/views/checkout-fields.php:8
- > PHP Fatal error
Uncaught Error: Interface 'ProfilePressVendor\\Carbon\\CarbonConverterInterface' not found in wp-content/plugins/wp-user-avatar/third-party/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php:187
- > PHP Fatal error
Uncaught Error: Class 'ProfilePressVendor\\Pelago\\Emogrifier\\HtmlProcessor\\AbstractHtmlProcessor' not found in wp-content/plugins/wp-user-avatar/third-party/vendor/pelago/emogrifier/src/HtmlProcessor/CssToAttributeConverter.php:14
- > PHP Fatal error
Uncaught Error: Class 'ProfilePressVendor\\Stripe\\Exception\\ApiErrorException' not found in wp-content/plugins/wp-user-avatar/third-party/vendor/stripe/stripe-php/lib/Exception/AuthenticationException.php:9
- > PHP Fatal error
Uncaught Error: Class 'ProfilePress\\Core\\Admin\\SettingsPages\\AbstractSettingsPage' not found in wp-content/plugins/wp-user-avatar/src/Admin/SettingsPages/Membership/DashboardPage/SettingsPage.php:18
- > PHP Fatal error
Uncaught ReflectionException: Class ProfilePressVendor\\Symfony\\Component\\Translation\\Formatter\\MessageFormatterInterface does not exist in wp-content/plugins/wp-user-avatar/third-party/vendor/nesbot/carbon/src/Carbon/MessageFormatter/MessageFormatterMapper.php:17
- > PHP Fatal error
Uncaught Error: Interface 'ProfilePressVendor\\Symfony\\Contracts\\Translation\\TranslatorInterface' not found in wp-content/plugins/wp-user-avatar/third-party/vendor/symfony/translation/LoggingTranslator.php:20
- > PHP Fatal error
User-side errors Passed 1 test
🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
There were no browser issues found
Optimizations
Plugin configuration 97% from 29 tests
readme.txt 94% from 16 tests
Perhaps the most important file in your plugin readme.txt gets parsed in order to generate the public listing of your plugin
Attributes that require attention:
- Tags: Please delete some tags, you are using 20 tag instead of maximum 10
wp-user-avatar/wp-user-avatar.php Passed 13 tests
"Paid Membership Plugin, Ecommerce, Registration Form, Login Form, User Profile & Restrict Content – ProfilePress" version 4.14.0's main PHP file describes plugin functionality and also serves as the entry point to any WordPress functionality
56 characters long description:
The modern WordPress membership and user profile plugin.
Code Analysis 3% from 3 tests
File types 0% from 1 test
🔸 Test weight: 35 | Executable files are considered dangerous and should not be included with any WordPress plugin
Please make sure to remedy the following
- For security reasons, never distribute binary or executable files with your plugin
- .crt - Security Certificate in Firefox, IE, Chrome, Safari
- ☣ wp-content/plugins/wp-user-avatar/third-party/vendor/stripe/stripe-php/data/ca-certificates.crt
- .bat - Batch File in Windows
- ☣ wp-content/plugins/wp-user-avatar/third-party/vendor/nesbot/carbon/bin/carbon.bat
- .crt - Security Certificate in Firefox, IE, Chrome, Safari
Language | Files | Blank lines | Comment lines | Lines of code |
---|---|---|---|---|
PHP | 1,667 | 15,774 | 51,993 | 95,968 |
JavaScript | 49 | 2,039 | 1,375 | 13,617 |
CSS | 17 | 1,323 | 142 | 8,045 |
JSON | 8 | 0 | 0 | 6,041 |
XSD | 3 | 92 | 48 | 2,803 |
SVG | 23 | 0 | 1 | 88 |
Bourne Shell | 1 | 3 | 0 | 26 |
DOS Batch | 1 | 0 | 0 | 4 |
PHP code 50% from 2 tests
A short review of cyclomatic complexity and code structure
Please fix the following
- Cyclomatic complexity of methods should be reduced to less than 100 (currently 140)
Cyclomatic complexity | |
---|---|
Average complexity per logical line of code | 0.37 |
Average class complexity | 11.44 |
▷ Minimum class complexity | 1.00 |
▷ Maximum class complexity | 351.00 |
Average method complexity | 2.63 |
▷ Minimum method complexity | 1.00 |
▷ Maximum method complexity | 140.00 |
Code structure | ||
---|---|---|
Namespaces | 155 | |
Interfaces | 62 | |
Traits | 40 | |
Classes | 823 | |
▷ Abstract classes | 47 | 5.71% |
▷ Concrete classes | 776 | 94.29% |
▷ Final classes | 25 | 3.22% |
Methods | 6,088 | |
▷ Static methods | 1,241 | 20.38% |
▷ Public methods | 5,459 | 89.67% |
▷ Protected methods | 286 | 4.70% |
▷ Private methods | 343 | 5.63% |
Functions | 874 | |
▷ Named functions | 347 | 39.70% |
▷ Anonymous functions | 527 | 60.30% |
Constants | 1,252 | |
▷ Global constants | 65 | 5.19% |
▷ Class constants | 1,187 | 94.81% |
▷ Public constants | 1,166 | 98.23% |
Plugin size Passed 2 tests
Image compression Passed 2 tests
It is recommended to compress PNG files in your plugin to minimize bandwidth usage
95 compressed PNG files occupy 1.73MB
Potential savings
Compression of 5 random PNG files using pngquant | |||
---|---|---|---|
File | Size - original | Size - compressed | Savings |
assets/images/monochrome/instagram.png | 0.65KB | 0.65KB | 0.00% |
assets/images/parallel/linkedin.png | 0.92KB | 0.96KB | 0.00% |
assets/images/monochrome/flickr.png | 0.52KB | 0.52KB | 0.00% |
assets/images/themes/smiley-password-reset.png | 30.66KB | 33.51KB | 0.00% |
assets/images/themes/pinnacle-edit-profile.png | 6.43KB | 7.50KB | 0.00% |