63% internal-links

Code Review | Internal Link Juicer: SEO Auto Linker for WordPress

WordPress plugin Internal Link Juicer: SEO Auto Linker for WordPress scored63%from 54 tests.

About plugin

  • Plugin page: internal-links
  • Plugin version: 2.23.4
  • PHP compatiblity: 7.1.0+
  • PHP version: 7.4.16
  • WordPress compatibility: 5.9.0-6.3
  • WordPress version: 6.3.1
  • First release: Sep 22, 2018
  • Latest release: Aug 17, 2023
  • Number of updates: 165
  • Update frequency: every 10.9 days
  • Top authors: internallinkjuicer (96.97%)DavidAnderson (3.64%)

Code review

54 tests

User reviews

367 reviews

Install metrics

40,000+ active /708,684 total downloads

Benchmarks

Plugin footprint 47% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | Verifying that this plugin installs correctly without errors
Installer ran successfully

Server metrics [RAM: ▲5.67MB] [CPU: ▲44.18ms] 75% from 4 tests

Analyzing server-side resources used by Internal Link Juicer: SEO Auto Linker for WordPress
It is recommended to improve the following
  • Extra RAM: The extra memory usage must be under 5MB (currently 5.67MB on /wp-admin/admin.php?page=freemius)
PageMemory (MB)CPU Time (ms)
Home /8.90 ▲5.4483.95 ▲45.36
Dashboard /wp-admin9.05 ▲5.7495.89 ▲47.41
Posts /wp-admin/edit.php9.12 ▲5.76104.39 ▲54.70
Add New Post /wp-admin/post-new.php11.70 ▲5.82127.76 ▲29.24
Media Library /wp-admin/upload.php8.97 ▲5.7594.25 ▲57.48
Scheduled Actions /wp-admin/tools.php?page=action-scheduler9.1485.45
Freemius Debug [v.2.5.10] /wp-admin/admin.php?page=freemius9.1577.71

Server storage [IO: ▲5.79MB] [DB: ▲0.01MB] Passed 3 tests

Input-output and database impact of this plugin
This plugin installed successfully
Filesystem: 437 new files
Database: 5 new tables, 25 new options
New tables
wp_actionscheduler_actions
wp_ilj_linkindex
wp_actionscheduler_logs
wp_actionscheduler_claims
wp_actionscheduler_groups
New WordPress options
db_upgraded
widget_recent-posts
ilj_settings_field_links_per_page
widget_theysaidso_widget
schema-ActionScheduler_LoggerSchema
action_scheduler_hybrid_store_demarkation
fs_accounts
action_scheduler_lock_async-request-runner
theysaidso_admin_options
ilj_settings_field_keep_settings
...

Browser metrics Passed 4 tests

Internal Link Juicer: SEO Auto Linker for WordPress: an overview of browser usage
This plugin has a minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,072 ▲30113.57 ▼0.728.34 ▲6.3930.96 ▼7.53
Dashboard /wp-admin2,319 ▲1314.89 ▼1.05113.80 ▲5.6946.52 ▲4.82
Posts /wp-admin/edit.php2,290 ▲1982.06 ▲0.0540.59 ▲0.6146.54 ▲11.05
Add New Post /wp-admin/post-new.php1,980 ▲46117.88 ▼5.20653.87 ▼56.3561.20 ▼5.92
Media Library /wp-admin/upload.php1,498 ▲1074.24 ▲0.05100.80 ▲0.1943.94 ▲0.31
Scheduled Actions /wp-admin/tools.php?page=action-scheduler1,3481.7727.8334.03
Freemius Debug [v.2.5.10] /wp-admin/admin.php?page=freemius1,1741.7626.7028.42

Uninstaller [IO: ▲0.00MB] [DB: ▲0.01MB] 25% from 4 tests

🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
Please fix the following items
  • This plugin did not uninstall without warnings or errors
    • > Notice in wp-content/plugins/internal-links/freemius/includes/class-freemius.php+8486
    Undefined property: stdClass::$plugins
  • The uninstall procedure failed, leaving 4 tables in the database
    • wp_actionscheduler_logs
    • wp_actionscheduler_groups
    • wp_actionscheduler_claims
    • wp_actionscheduler_actions
  • This plugin does not fully uninstall, leaving 25 options in the database
    • widget_theysaidso_widget
    • ilj_settings_field_keep_settings
    • schema-ActionScheduler_LoggerSchema
    • action_scheduler_hybrid_store_demarkation
    • can_compress_scripts
    • db_upgraded
    • theysaidso_admin_options
    • ilj_settings_field_no_link_tags
    • schema-ActionScheduler_StoreSchema
    • ilj_settings_field_link_output_internal
    • ...

Smoke tests 75% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | This is a shallow check for server-side errors
Good news, no errors were detected

SRP 50% from 2 tests

🔹 Tests weight: 20 | The single-responsibility principle: PHP files have to remain inert when accessed directly, throwing no errors and performing no actions
Please fix the following items
  • 82× PHP files trigger server-side errors or warnings when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Interface 'ILJ\\Core\\Options\\OptionInterface' not found in wp-content/plugins/internal-links/core/options/abstractoption.php:13
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Abstract_Schedule' not found in wp-content/plugins/internal-links/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Abstract_RecurringSchedule.php:6
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Store' not found in wp-content/plugins/internal-links/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php:10
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Store_Deprecated' not found in wp-content/plugins/internal-links/vendor/woocommerce/action-scheduler/classes/abstracts/ActionScheduler_Store.php:7
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Abstract_Schema' not found in wp-content/plugins/internal-links/vendor/woocommerce/action-scheduler/classes/schema/ActionScheduler_StoreSchema.php:10
    • > PHP Fatal error
      Uncaught Error: Class 'ILJ\\Core\\Options\\AbstractOption' not found in wp-content/plugins/internal-links/core/options/keepsettings.php:13
    • > PHP Fatal error
      Uncaught Error: Class 'ILJ\\Backend\\MenuPage\\AbstractMenuPage' not found in wp-content/plugins/internal-links/backend/menupage/tour.php:15
    • > PHP Fatal error
      Uncaught Error: Class 'ILJ\\Core\\IndexStrategy\\DefaultStrategy' not found in wp-content/plugins/internal-links/core/indexstrategy/wpmlstrategy.php:25
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_SimpleSchedule' not found in wp-content/plugins/internal-links/vendor/woocommerce/action-scheduler/classes/schedules/ActionScheduler_CanceledSchedule.php:6
    • > PHP Fatal error
      Uncaught Error: Class 'ILJ\\Backend\\MenuPage\\Tour\\Step' not found in wp-content/plugins/internal-links/backend/menupage/tour/settings.php:14

User-side errors Passed 1 test

🔹 Test weight: 20 | This is just a short smoke test looking for browser issues
No browser issues were found

Optimizations

Plugin configuration 96% from 29 tests

readme.txt Passed 16 tests

Perhaps the most important file in your plugin readme.txt gets parsed in order to generate the public listing of your plugin
9 plugin tags: ux, auto linker, onpage, linkbuilding, link...

internal-links/wp-internal-linkjuicer.php 92% from 13 tests

The main PHP script in "Internal Link Juicer: SEO Auto Linker for WordPress" version 2.23.4 is automatically included on every request by WordPress
You should first fix the following items:
  • Main file name: Please rename the main PHP file in this plugin to the plugin slug ("internal-links.php" instead of "wp-internal-linkjuicer.php")

Code Analysis 97% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | This is a short overview of programming languages used in this plugin, detecting executable files
Success! There were no dangerous files found in this plugin63,484 lines of code in 361 files:
LanguageFilesBlank linesComment linesLines of code
PHP30110,89426,72948,186
PO File134,1174,2818,755
JavaScript151,366596,340
Markdown237090
JSON10049
CSS263147
SVG30017

PHP code 50% from 2 tests

Analyzing logical lines of code, cyclomatic complexity, and other code metrics
The following items need your attention
  • Class cyclomatic complexity should be reduced to less than 1000 (currently 3,073)
Cyclomatic complexity
Average complexity per logical line of code0.52
Average class complexity29.07
▷ Minimum class complexity1.00
▷ Maximum class complexity3,073.00
Average method complexity3.59
▷ Minimum method complexity1.00
▷ Maximum method complexity94.00
Code structure
Namespaces17
Interfaces5
Traits3
Classes212
▷ Abstract classes209.43%
▷ Concrete classes19290.57%
▷ Final classes42.08%
Methods2,435
▷ Static methods51821.27%
▷ Public methods1,79773.80%
▷ Protected methods2198.99%
▷ Private methods41917.21%
Functions176
▷ Named functions12068.18%
▷ Anonymous functions5631.82%
Constants284
▷ Global constants10436.62%
▷ Class constants18063.38%
▷ Public constants180100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

Using a strong compression for your PNG files is a great way to speed-up your plugin
12 compressed PNG files occupy 0.15MB
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
freemius/assets/img/internal-links.png4.04KB4.38KB0.00%
admin/img/datatables/sort_asc_disabled.png0.14KB0.25KB0.00%
admin/img/ilj-icon-inverted.png2.33KB2.10KB▼ 9.87%
admin/img/datatables/sort_desc_disabled.png0.14KB0.25KB0.00%
admin/img/datatables/sort_desc.png0.15KB0.25KB0.00%