MultilingualPress Security & Risk Analysis

wordpress.org/plugins/multilingual-press

Create a fast translation network on WordPress multisite.

300 active installs v2.11.3 PHP + WP 4.7+ Updated Jan 24, 2025
language-switchermultilingualmultisitetranslatewoocommerce
92
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is MultilingualPress Safe to Use in 2026?

Generally Safe

Score 92/100

MultilingualPress has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 1yr ago
Risk Assessment

Multilingual Press v2.11.3 exhibits a generally strong security posture, with excellent scores in critical areas like output escaping and prepared statement usage. The absence of known CVEs and a clean vulnerability history are significant strengths, indicating a well-maintained and secure plugin. The static analysis reveals a very limited attack surface, with no identified AJAX handlers, REST API routes, shortcodes, or cron events exposed without authentication. This is a testament to good security design principles.

However, the taint analysis identified one flow with an unsanitized path, rated as high severity. While the overall number of such flows is low, this specific instance represents a potential vulnerability that requires further investigation. The presence of file operations, although few, in conjunction with a taint flow involving unsanitized paths, could potentially lead to directory traversal or arbitrary file read/write vulnerabilities if not handled with extreme care within the plugin's logic. Despite these isolated concerns, the plugin's strengths in code hygiene and lack of historical vulnerabilities suggest a robust foundation.

Key Concerns

  • High severity unsanitized path flow
Vulnerabilities
None known

MultilingualPress Security Vulnerabilities

No known vulnerabilities — this is a good sign.
Code Analysis
Analyzed Mar 16, 2026

MultilingualPress Code Analysis

Dangerous Functions
0
Raw SQL Queries
11
46 prepared
Unescaped Output
7
429 escaped
Nonce Checks
6
Capability Checks
15
File Operations
3
External Requests
0
Bundled Libraries
0

SQL Query Safety

81% prepared57 total queries

Output Escaping

98% escaped436 total outputs
Data Flows
1 unsanitized

Data Flow Analysis

1 flows1 with unsanitized paths
<Mlp_Duplicate_Blogs> (inc\copy-site\Mlp_Duplicate_Blogs.php:0)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface

MultilingualPress Attack Surface

Entry Points0
Unprotected0
WordPress Hooks 122
actionmlp_blogs_save_fieldsinc\admin-bar\Mlp_Alternative_Language_Title.php:38
filteradmin_bar_menuinc\admin-bar\Mlp_Alternative_Language_Title.php:44
filteradmin_bar_menuinc\admin-bar\Mlp_Alternative_Language_Title.php:47
actionmlp_post_translator_initinc\advanced-translator\Mlp_Advanced_Translator.php:55
filtermlp_external_save_methodinc\advanced-translator\Mlp_Advanced_Translator.php:56
actionmlp_translation_meta_box_registeredinc\advanced-translator\Mlp_Advanced_Translator.php:59
actionsave_postinc\advanced-translator\Mlp_Advanced_Translator.php:85
filtermlp_post_translator_activation_checkboxinc\advanced-translator\Mlp_Advanced_Translator.php:89
filtermlp_translation_meta_box_view_callbacksinc\advanced-translator\Mlp_Advanced_Translator.php:90
filtermlp_allowed_post_typesinc\advanced-translator\Mlp_Cpt_Translator.php:55
actionmlp_modules_add_fieldsinc\advanced-translator\Mlp_Cpt_Translator.php:57
actionmlp_modules_save_fieldsinc\advanced-translator\Mlp_Cpt_Translator.php:59
actionmlp_before_linkinc\advanced-translator\Mlp_Cpt_Translator.php:62
actionmlp_after_linkinc\advanced-translator\Mlp_Cpt_Translator.php:63
filterpost_type_linkinc\advanced-translator\Mlp_Cpt_Translator.php:289
actiontemplate_redirectinc\common\Mlp_Widget.php:27
actionpost_submitbox_misc_actionsinc\controllers\Mlp_Dashboard_Widget.php:38
actionwp_dashboard_setupinc\controllers\Mlp_Dashboard_Widget.php:48
actionsave_postinc\controllers\Mlp_Dashboard_Widget.php:51
actionpost_submitbox_misc_actionsinc\controllers\Mlp_Trasher.php:48
actiontrash_postinc\controllers\Mlp_Trasher.php:51
actionwp_trash_postinc\controllers\Mlp_Trasher.php:54
actionsave_postinc\controllers\Mlp_Trasher.php:56
filterwpmu_new_bloginc\copy-site\Mlp_Duplicate_Blogs.php:68
filtermlp_after_new_blog_fieldsinc\copy-site\Mlp_Duplicate_Blogs.php:69
actioninpsyde_mlp_loadedinc\feature.advanced-translator.php:2
actioninpsyde_mlp_loadedinc\feature.alternative-language-title-in-admin-bar.php:3
actioninpsyde_mlp_loadedinc\feature.become-inpsyder-admin-notice.php:7
actionnetwork_admin_noticesinc\feature.become-inpsyder-admin-notice.php:12
actioninpsyde_mlp_loadedinc\feature.connection_column.php:8
filterwpmu_blogs_columnsinc\feature.connection_column.php:26
actionmanage_sites_custom_columninc\feature.connection_column.php:27
actioninpsyde_mlp_loadedinc\feature.cpt-translator.php:2
actionmlp_and_wp_loadedinc\feature.dashboard-widget.php:2
actioninpsyde_mlp_loadedinc\feature.duplicate-blog.php:3
actioninpsyde_mlp_loadedinc\feature.gutenberg-admin-notice.php:7
actionnetwork_admin_noticesinc\feature.gutenberg-admin-notice.php:13
actioninpsyde_mlp_loadedinc\feature.language_column.php:10
filterwpmu_blogs_columnsinc\feature.language_column.php:28
actionmanage_sites_custom_columninc\feature.language_column.php:29
actioninpsyde_mlp_loadedinc\feature.nav-menu.php:3
actiontemplate_redirectinc\feature.nav-menu.php:21
actioninpsyde_mlp_loadedinc\feature.quicklink.php:3
actioninpsyde_mlp_loadedinc\feature.redirect.php:3
actionmlp_and_wp_loadedinc\feature.relationship-control.php:3
actionmlp_before_post_synchronizationinc\feature.relationship-control.php:20
actionmlp_after_post_synchronizationinc\feature.relationship-control.php:21
actionmlp_and_wp_loadedinc\feature.term-translator.php:4
actioninpsyde_mlp_loadedinc\feature.translation_metabox.php:2
actionmlp_before_post_synchronizationinc\feature.translation_metabox.php:18
actionmlp_after_post_synchronizationinc\feature.translation_metabox.php:19
actionmlp_and_wp_loadedinc\feature.trasher.php:2
actioninpsyde_mlp_loadedinc\feature.user-backend-language.php:7
actioninpsyde_mlp_initinc\feature.widget.php:3
actionwidgets_initinc\feature.widget.php:5
filternetwork_admin_menuinc\general-settings\Mlp_General_Settingspage.php:55
filteradmin_post_mlp_update_modulesinc\general-settings\Mlp_General_Settingspage.php:56
actionnetwork_admin_noticesinc\general-settings\Mlp_General_Settingspage.php:57
actionadmin_noticesinc\installation\Mlp_Self_Check.php:111
actionnetwork_admin_noticesinc\installation\Mlp_Self_Check.php:112
filtersite_transient_update_pluginsinc\installation\Mlp_Self_Check.php:136
actionadmin_noticesinc\installation\Mlp_Self_Check.php:144
actionnetwork_admin_noticesinc\installation\Mlp_Self_Check.php:145
actionnetwork_admin_noticesinc\installation\Mlp_Self_Check.php:172
actionmlp_reset_table_doneinc\installation\Mlp_Update_Plugin_Data.php:89
actionwp_loadedinc\language-api\Mlp_Language_Api.php:74
filtermlp_language_apiinc\language-api\Mlp_Language_Api.php:75
actionadmin_post_mlp_update_languagesinc\language-manager\Mlp_Language_Manager_Controller.php:90
actionnetwork_admin_menuinc\language-manager\Mlp_Language_Manager_Controller.php:94
actioninpsyde_mlp_loadedinc\Multilingual_Press.php:83
filterdelete_bloginc\Multilingual_Press.php:97
filterall_admin_noticesinc\Multilingual_Press.php:100
actionwp_loadedinc\Multilingual_Press.php:102
actioninitinc\Multilingual_Press.php:199
actionplugins_loadedinc\Multilingual_Press.php:213
actionplugins_loadedinc\Multilingual_Press.php:239
filterlanguage_attributesinc\Multilingual_Press.php:430
actiontemplate_redirectinc\Multilingual_Press.php:448
actionwp_headinc\Multilingual_Press.php:452
actiondelete_bloginc\nav-menu\Mlp_Nav_Menu_Controller.php:75
filterwp_nav_menu_objectsinc\nav-menu\Mlp_Nav_Menu_Controller.php:91
actionload-nav-menus.phpinc\nav-menu\Mlp_Nav_Menu_Controller.php:154
actionadmin_enqueue_scriptsinc\nav-menu\Mlp_Nav_Menu_Controller.php:159
actionadmin_initinc\nav-menu\Mlp_Nav_Menu_Controller.php:169
actionadd_meta_boxesinc\post-translator\Mlp_Translation_Metabox.php:58
actionsave_postinc\post-translator\Mlp_Translation_Metabox.php:68
actionmlp_modules_add_fieldsinc\quicklink\Mlp_Quicklink.php:82
filtermlp_modules_save_fieldsinc\quicklink\Mlp_Quicklink.php:85
actionwp_headinc\quicklink\Mlp_Quicklink.php:92
filterthe_contentinc\quicklink\Mlp_Quicklink.php:94
filterallowed_redirect_hostsinc\quicklink\Mlp_Quicklink.php:155
filterwpmu_blogs_columnsinc\redirect\Mlp_Redirect_Column.php:26
actionmanage_sites_custom_columninc\redirect\Mlp_Redirect_Column.php:27
filtermlp_linked_element_linkinc\redirect\Mlp_Redirect_Frontend.php:38
actionwp_loadedinc\redirect\Mlp_Redirect_Frontend.php:41
actiontemplate_redirectinc\redirect\Mlp_Redirect_Response.php:68
filtermlp_blogs_add_fieldsinc\redirect\Mlp_Redirect_Site_Settings.php:36
filtermlp_blogs_save_fieldsinc\redirect\Mlp_Redirect_Site_Settings.php:38
filtermlp_do_redirectinc\redirect\Mlp_Redirect_User_Settings.php:26
actionmlp_translation_meta_box_bottominc\relationship-control\Mlp_Relationship_Control.php:46
actionwpmu_new_bloginc\site-settings\Mlp_Network_New_Site_Controller.php:53
actionload-site-new.phpinc\site-settings\Mlp_Network_New_Site_Controller.php:55
actionadmin_footerinc\site-settings\Mlp_Network_New_Site_Controller.php:63
actionnetwork_site_new_forminc\site-settings\Mlp_Network_New_Site_Controller.php:65
actionnetwork_admin_noticesinc\site-settings\Mlp_Network_Site_Settings.php:61
actionnetwork_admin_menuinc\site-settings\Mlp_Network_Site_Settings_Controller.php:44
filternetwork_edit_site_nav_linksinc\site-settings\Mlp_Network_Site_Settings_Controller.php:58
actionload-edit-tags.phpinc\term-translator\Mlp_Term_Translation_Controller.php:93
actionload-edit-tags.phpinc\term-translator\Mlp_Term_Translation_Controller.php:95
actionmlp_before_term_synchronizationinc\term-translator\Mlp_Term_Translation_Controller.php:211
actionmlp_after_term_synchronizationinc\term-translator\Mlp_Term_Translation_Controller.php:215
filterlocaleinc\user-backend-language\Mlp_User_Backend_Language.php:60
filterpersonal_optionsinc\user-backend-language\Mlp_User_Backend_Language.php:63
filterprofile_updateinc\user-backend-language\Mlp_User_Backend_Language.php:64
actionadmin_head-options-general.phpinc\user-backend-language\Mlp_User_Backend_Language.php:66
filterlocaleinc\user-backend-language\Mlp_User_Backend_Language.php:263
actionpersonal_optionsinc\user-setting\Mlp_User_Settings_Controller.php:43
actionprofile_updateinc\user-setting\Mlp_User_Settings_Controller.php:44
actionplugins_loadedmultilingual-press.php:22
actionmlp_debugmultilingual-press.php:162
filtermultilingualpress.force_system_checkmultilingual-press.php:179
actionactivated_pluginmultilingual-press.php:186
Maintenance & Trust

MultilingualPress Maintenance & Trust

Maintenance Signals

WordPress version tested5.2.24
Last updatedJan 24, 2025
PHP min version
Downloads365K

Community Trust

Rating82/100
Number of ratings49
Active installs300
Developer Profile

MultilingualPress Developer Profile

Syde GmbH (formerly Inpsyde)

3 plugins · 2K total installs

73
trust score
Avg Security Score
92/100
Avg Patch Time
423 days
View full developer profile
Detection Fingerprints

How We Detect MultilingualPress

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/multilingual-press/assets/css/frontend.css/wp-content/plugins/multilingual-press/assets/css/frontend.min.css/wp-content/plugins/multilingual-press/assets/js/frontend.js/wp-content/plugins/multilingual-press/assets/js/frontend.min.js/wp-content/plugins/multilingual-press/assets/css/admin.css/wp-content/plugins/multilingual-press/assets/css/admin.min.css/wp-content/plugins/multilingual-press/assets/js/admin.js/wp-content/plugins/multilingual-press/assets/js/admin.min.js+6 more
Script Paths
/wp-content/plugins/multilingual-press/assets/js/frontend.js/wp-content/plugins/multilingual-press/assets/js/frontend.min.js/wp-content/plugins/multilingual-press/assets/js/admin.js/wp-content/plugins/multilingual-press/assets/js/admin.min.js/wp-content/plugins/multilingual-press/assets/js/admin-menu.js/wp-content/plugins/multilingual-press/assets/js/admin-menu.min.js+4 more
Version Parameters
multilingual-press/assets/css/frontend.css?ver=multilingual-press/assets/js/frontend.js?ver=multilingual-press/assets/css/admin.css?ver=multilingual-press/assets/js/admin.js?ver=multilingual-press/assets/js/admin-menu.js?ver=multilingual-press/assets/js/site-editor.js?ver=multilingual-press/assets/js/settings.js?ver=

HTML / DOM Fingerprints

CSS Classes
mlp_widgetmultilingual-press-navigationmultilingual-press-navigation-itemmultilingual-press-navigation-item-linkmultilingual-press-language-switchermultilingual-press-language-switcher-itemmultilingual-press-language-switcher-item-linkmultilingual-press-admin-language-switcher+36 more
HTML Comments
<!-- Widget Output MultilingualPress --><!-- MultilingualPress admin language switcher -->
Data Attributes
data-mlp-language-switcherdata-mlp-language-switcher-currentdata-mlp-language-switcher-itemdata-mlp-language-switcher-linkdata-mlp-post-translation-iddata-mlp-post-translation-language
JS Globals
MultilingualPress
REST Endpoints
/wp-json/multilingual-press/v1/posts/wp-json/multilingual-press/v1/sites/wp-json/multilingual-press/v1/languages
FAQ

Frequently Asked Questions about MultilingualPress