[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fKQ3XEHJ7SKUOhmHAk8uFNjrWF3_Ksyk4yb4EDY98KGc":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":23,"download_link":24,"security_score":25,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28,"vulnerabilities":29,"developer":30,"crawl_stats":27,"alternatives":36,"analysis":143,"fingerprints":186},"geographical-redirect","Geo Redirect","3.3.1","Artem Platonov","https:\u002F\u002Fprofiles.wordpress.org\u002Fladrower\u002F","\u003Cp>Just add the country from selectbox and fill in preferable options.\u003Cbr \u002F>\nYou can specify URL parameters for switching language or domain.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Cem>Explanation\u003C\u002Fem>\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>You have a multilingual blog and want your visitors to be directed to the correct language according to their geographical location.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>You have specific domains or subdomains for different versions of your site and want your visitors to be directed to the right domain accoring to their geographical location.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n","This plugin allows you to redirect your visitors or switch language according to their country.",400,34398,90,13,"2016-11-07T16:25:00.000Z","3.5.2","3.0","",[20,21,22],"geo-redirect","multidomain","multilanguage","http:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fgeographical-redirect\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fgeographical-redirect.zip",85,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":11,"avg_security_score":25,"avg_patch_time_days":33,"trust_score":34,"computed_at":35},"ladrower",1,30,84,"2026-04-04T13:42:36.631Z",[37,61,83,101,122],{"slug":38,"name":39,"version":40,"author":41,"author_profile":42,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":47,"num_ratings":48,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":53,"homepage":18,"download_link":58,"security_score":59,"vuln_count":32,"unpatched_count":26,"last_vuln_date":60,"fetched_at":28},"theme-translation-for-polylang","Theme and plugin translation for Polylang (TTfP)","3.4.9","Marcin Kazmierski","https:\u002F\u002Fprofiles.wordpress.org\u002Fmarcinkazmierski\u002F","\u003Ch4>What is “Theme and plugin translation for Polylang”?\u003C\u002Fh4>\n\u003Cp>Extension for Polylang plugin (Polylang is an extension to make multilingual WordPress websites.).\u003Cbr \u002F>\nPlugin is needed to translate the WordPress themes and plugins by Polylang.\u003C\u002Fp>\n\u003Ch4>How to configure it?\u003C\u002Fh4>\n\u003Cp>Select themes and plugins to find texts for translation by Polylang.\u003Cbr \u002F>\nIn admin dashboard:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Languages -> TTfP Settings\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>How it is work?\u003C\u002Fh4>\n\u003Cp>“Theme and plugin translation for Polylang” automatically searches all files of WordPress themes and plugins. It chooses from this file only those files with extensions:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>php\u003C\u002Fli>\n\u003Cli>inc\u003C\u002Fli>\n\u003Cli>twig\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>In addition, is implemented the integration with Timber library (read more: http:\u002F\u002Ftimber.upstatement.com) – which allows to translate twig’s skins in simple way.\u003Cbr \u002F>\nPlugin in searched skins or plugins chooses texts from Polylang functions, such as:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>_e(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>__(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>_x(string $text, string $context, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>pll_e(string $text);\u003C\u002Fli>\n\u003Cli>pll__(string $text);\u003C\u002Fli>\n\u003Cli>esc_html(string $text);\u003C\u002Fli>\n\u003Cli>esc_html_e(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>esc_html__(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>_n(string $single, string $plural, int $number, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>esc_attr_e(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003Cli>esc_attr__(string $text, string $domain = ‘default’);\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>In your function.php, themes or plugins.\u003C\u002Fp>\n\u003Cp>For example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cp>\u003C?php pll_e('My text'); ?>\u003C\u002Fp>\n\n\u003Cp>\u003C?php _e('My another text', 'my_theme'); ?>\u003C\u002Fp>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>On the timber context declare this functions like:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$context['pll_e'] = TimberHelper::function_wrapper('pll_e');\n\n$context['pll_'] = TimberHelper::function_wrapper('pll_');\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>See more on: \u003Ccode>https:\u002F\u002Fpolylang.wordpress.com\u002Fdocumentation\u002Fdocumentation-for-developers\u002Ffunctions-reference\u002F\u003C\u002Fcode>\u003Cbr \u002F>\nThese functions are defined by Polylang plugin for printing translations.\u003Cbr \u002F>\nThanks “Theme and plugin translation for Polylang” you can find these strings to translate and add to Polylang register on very simple way.\u003Cbr \u002F>\nAnd then you can translate these texts from the admin dashboard.\u003Cbr \u002F>\nThe scan result can be seen on the tab with translations:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Settings -> Languages -> String translation\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>or\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Languages -> String translation\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You don’t need programs like poedit – you don’t change files with extensions like: \u003Ccode>.pot\u003C\u002Fcode>, \u003Ccode>.po\u003C\u002Fcode>, \u003Ccode>.mo\u003C\u002Fcode>.\u003Cbr \u002F>\n“Theme and plugin translation for Polylang” is highly efficient because the scanner is worked only on admin dashboard in tab:\u003Cbr \u002F>\nIn dashboard:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Settings -> Languages -> String translation\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>or\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Languages -> String translation\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Export and import string translation\u003C\u002Fh4>\n\u003Cp>In dashboard:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Languages -> TTfP Settings\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Filter reference\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>ttfp_domains\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Allows plugins and themes (in functions.php) to modify list of text domains (unique identifier for retrieving translated strings).\u003Cbr \u002F>\nList of text domains is displayed on “TTfP Settings” page to select them for translation by polylang engine.\u003C\u002Fp>\n\u003Cp>Example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter('ttfp_domains', 'custom_ttfp_domains', 10, 1);\nfunction custom_ttfp_domains(array $domains):array\n {\n     $domains[] = \"my-custom-domain\";\n     return $domains;\n }\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Filter reference\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>ttfp_translation_access\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Returns whether the user has capability to view and edit translations provided by TTfP.\u003C\u002Fp>\n\u003Cp>Example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter('ttfp_translation_access', 'custom_ttfp_translation_access', 10, 1);\nfunction custom_ttfp_translation_access(bool $hasAccess):bool\n {\n     return current_user_can('edit_posts');\n }\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Theme and plugin translation using Polylang for WordPress. Extension for Polylang plugin.",10000,269744,94,35,"2025-03-15T15:35:00.000Z","6.6.5","5.7","7.0",[54,22,55,56,57],"languages","polylang","translate","translation","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftheme-translation-for-polylang.3.4.9.zip",92,"2022-11-28 00:00:00",{"slug":62,"name":63,"version":64,"author":65,"author_profile":66,"description":67,"short_description":68,"active_installs":45,"downloaded":69,"rating":70,"num_ratings":71,"last_updated":72,"tested_up_to":73,"requires_at_least":74,"requires_php":75,"tags":76,"homepage":79,"download_link":80,"security_score":81,"vuln_count":32,"unpatched_count":26,"last_vuln_date":82,"fetched_at":28},"wp-multilang","WP Multilang – Translation and Multilingual Plugin","2.4.26","Magazine3","https:\u002F\u002Fprofiles.wordpress.org\u002Fmagazine3\u002F","\u003Cp>WP Multilang is a multilingual plugin for WordPress.\u003C\u002Fp>\n\u003Cp>Translations of post types, taxonomies, meta fields, options, text fields in miltimedia files, menus, titles and text fields in widgets.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002F\" rel=\"nofollow ugc\">Home\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fcontact-us\u002F\" rel=\"nofollow ugc\">Help & Tech Support\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fdocs\u002F\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002F#features\" rel=\"nofollow ugc\">Premium Features\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>New Features of the plugin WP Multilang\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Support full site editor for block based themes\u003C\u002Fli>\n\u003Cli>Support block based widgets\u003C\u002Fli>\n\u003Cli>Support different feature image for each language\u003C\u002Fli>\n\u003Cli>Support Smart Custom Fields Plugin\u003C\u002Fli>\n\u003Cli>Auto Translation ( \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fpricing\u002F\" rel=\"nofollow ugc\">available in premium version\u003C\u002Fa> ) – \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fdocs\u002Fknowledge-base\u002Fhow-to-auto-translate-your-website-contents-using-wp-multilang\u002F\" rel=\"nofollow ugc\">View Tutorial\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Support URL Slug Translation ( \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fpricing\u002F\" rel=\"nofollow ugc\">available in premium version\u003C\u002Fa> ) – \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fdocs\u002Fknowledge-base\u002Fhow-to-translate-url-slugs-with-selective-languages\u002F\" rel=\"nofollow ugc\">View Tutorial\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Support Base Translation ( \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fpricing\u002F\" rel=\"nofollow ugc\">available in premium version\u003C\u002Fa> ) – \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fdocs\u002Fknowledge-base\u002Fhow-to-translate-taxonomy-bases-such-as-categories-and-tags-into-selective-languages-using-the-base-translation-option\u002F\" rel=\"nofollow ugc\">View Tutorial\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Export and import content in XLIFF or xml format to translate outside\u003C\u002Fli>\n\u003Cli>Activate Multilingual Support for Post Types\u003C\u002Fli>\n\u003Cli>Support Auto URL Slug Translation ( \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fpricing\u002F\" rel=\"nofollow ugc\">available in premium version\u003C\u002Fa> ) – \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fdocs\u002Fknowledge-base\u002Fhow-to-translate-url-slugs-with-selective-languages\u002F\" rel=\"nofollow ugc\">View Tutorial\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Features of the plugin WP Multilang\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>100% free.\u003C\u002Fli>\n\u003Cli>Translation at PHP.\u003C\u002Fli>\n\u003Cli>Compatible with REST.\u003C\u002Fli>\n\u003Cli>Support configuration for translate multidimensional arrays in options, meta fields, post content.\u003C\u002Fli>\n\u003Cli>Support multisite.\u003C\u002Fli>\n\u003Cli>Support WordPress in sub-folder.\u003C\u002Fli>\n\u003Cli>Separate menu items, posts, terms, widgets, comments per language.\u003C\u002Fli>\n\u003Cli>Many filters for dynamic applying translation settings.\u003C\u002Fli>\n\u003Cli>No duplicate posts, terms, menus, widgets.\u003C\u002Fli>\n\u003Cli>No sub-domain for each language version.\u003C\u002Fli>\n\u003Cli>No additional tables in database.\u003C\u002Fli>\n\u003Cli>Possibility set many languages with one localization. For example, for localization in the region.\u003C\u002Fli>\n\u003Cli>Possibility to set custom locale for html(If installed locale is en_US, you can set locale like: en, en-UK, en-AU etc. Without installation another localization)\u003C\u002Fli>\n\u003Cli>Possibility for add new languages for any user with capability \u003Ccode>manage_options\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Exist the role “Translator” for editing posts, terms. It can not publish or delete.\u003C\u002Fli>\n\u003Cli>No limits by languages or by possibilities.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>WP Multilang compatible with plugins\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Elementor ( \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fpricing\u002F\" rel=\"nofollow ugc\">available in premium version\u003C\u002Fa> ) – \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fdocs\u002Fknowledge-base\u002Fhow-to-build-a-multilingual-site-with-elementor-using-wp-multilang\u002F\" rel=\"nofollow ugc\">View Tutorial\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Divi Builder ( \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fpricing\u002F\" rel=\"nofollow ugc\">available in premium version\u003C\u002Fa> ) – \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fdocs\u002Fknowledge-base\u002Fhow-to-build-a-multilingual-site-with-divi-builder-using-wp-multilang\u002F\" rel=\"nofollow ugc\">View Tutorial\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>ACF, ACF Pro\u003C\u002Fli>\n\u003Cli>WooCommerce\u003C\u002Fli>\n\u003Cli>WooCommerce Customizer\u003C\u002Fli>\n\u003Cli>Gutenberg\u003C\u002Fli>\n\u003Cli>Yoast Seo\u003C\u002Fli>\n\u003Cli>SEOPress \u003C\u002Fli>\n\u003Cli>Contact Form 7 (added mail tag [_language] for send user language in mail)\u003C\u002Fli>\n\u003Cli>WPBakery Visual Composer\u003C\u002Fli>\n\u003Cli>Page Builder by SiteOrigin\u003C\u002Fli>\n\u003Cli>NextGEN Gallery\u003C\u002Fli>\n\u003Cli>All in One SEO Pack\u003C\u002Fli>\n\u003Cli>MailChimp for WordPress\u003C\u002Fli>\n\u003Cli>Newsletter\u003C\u002Fli>\n\u003Cli>Maps Builder\u003C\u002Fli>\n\u003Cli>Max Mega Menu\u003C\u002Fli>\n\u003Cli>MasterSlider\u003C\u002Fli>\n\u003Cli>WP-PageNavi\u003C\u002Fli>\n\u003Cli>BuddyPress\u003C\u002Fli>\n\u003Cli>Meta Slider\u003C\u002Fli>\n\u003Cli>TablePress\u003C\u002Fli>\n\u003Cli>Download Monitor (Redefine templates for links in your theme and translate link texts)\u003C\u002Fli>\n\u003Cli>Better Search\u003C\u002Fli>\n\u003Cli>Rank Math SEO (thanks for @pratikmts)\u003C\u002Fli>\n\u003Cli>WPGraphQL (Add lang to the query parameters in URL. Eg: lang=en)\u003C\u002Fli>\n\u003Cli>Smart Custom Fields\u003C\u002Fli>\n\u003Cli>Team – Team Members Showcase Plugin\u003C\u002Fli>\n\u003Cli>Schema & Structured Data for WP & AMP\u003C\u002Fli>\n\u003Cli>Forminator Forms\u003C\u002Fli>\n\u003Cli>Gravity Forms\u003C\u002Fli>\n\u003Cli>Ultimate Member Form\u003C\u002Fli>\n\u003Cli>Oxygen Builder\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Advance Woocommerce Support\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Send emails in customer’s selected language\u003C\u002Fli>\n\u003Cli>REST API Support\u003C\u002Fli>\n\u003Cli>Import and export products in customer’s selected language\u003C\u002Fli>\n\u003Cli>Translate products (simple products, variable products, grouped products), categories, tags, global attributes\u003C\u002Fli>\n\u003Cli>Cart synchronization across multiple languages \u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Manage translation settings via json.\u003C\u002Fp>\n\u003Cp>Add in the root of your theme or plugin file \u003Ccode>wpm-config.json\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Sample configurations can be viewed in config files in folder ‘configs’ in root the plugin.\u003C\u002Fp>\n\u003Cp>Configuration is updated after switching theme, enable or update any plugins.\u003C\u002Fp>\n\u003Cp>The plugin has filters for dynamic application configuration for translate.\u003C\u002Fp>\n\u003Cp>For turn off translation, set \u003Ccode>null\u003C\u002Fcode> into the desired configuration.\u003Cbr \u002F>\nFor example, you must turn off translation for a post type \u003Ccode>post\u003C\u002Fcode>.\u003Cbr \u002F>\nThere are two ways:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\n\u003Cp>In json.\u003Cbr \u002F>\nCreate in root of a theme or a plugin file \u003Ccode>wpm-config.json\u003C\u002Fcode> with:\u003Cbr \u002F>\n    {\u003Cbr \u002F>\n           “post_types”: {\u003Cbr \u002F>\n             “post”: null\u003Cbr \u002F>\n           }\u003Cbr \u002F>\n         }\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Through the filter.\u003Cbr \u002F>\nAdd in functions.php\u003Cbr \u002F>\n    add_filter( ‘wpm_post_post_config’, ‘__return_null’ );\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>To enable translation pass an empty array in php \u003Ccode>array()\u003C\u002Fcode> or empty object in json \u003Ccode>{}\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Supports translation multidimensional array of options, meta fields and post_content.\u003Cbr \u002F>\nSupports the removal of established localizations.\u003Cbr \u002F>\nSupports translation via GET parameter. Add in the GET parameter \u003Ccode>lang\u003C\u002Fcode> code desired language.\u003Cbr \u002F>\nSupports clean database of translations when removing the plugin. Translations are only removed from the built-in tables.\u003Cbr \u002F>\nSupports import term translations from qTranslate(by Soft79).\u003Cbr \u002F>\nSupports automatically redirect to the user’s browser language, if he visits for the first time.\u003C\u002Fp>\n\u003Cp>Ideal for developers.\u003C\u002Fp>\n\u003Cp>For display language switcher in any place add the code to your template \u003Ccode>if ( function_exists ( 'wpm_language_switcher' ) ) wpm_language_switcher ();\u003C\u002Fcode>\u003Cbr \u002F>\nFunction accepts two parameters:\u003Cbr \u002F>\n$type – ‘list’, ‘dropdown’, ‘select’. Default – ‘list’.\u003Cbr \u002F>\n$show – ‘flag’, ‘name’, ‘both’. Default – ‘both’.\u003C\u002Fp>\n\u003Cp>Or using the shortcode \u003Ccode>wpm_lang_switcher\u003C\u002Fcode>. It accept two not necessary parameters ‘type’ and ‘show’.\u003C\u002Fp>\n\u003Cp>Available features for translation:\u003Cbr \u002F>\n    wpm_translate_url( $url, $language = ” ); – translate url\u003Cbr \u002F>\n    wpm_translate_string( $string, $language = ” ); – translate multilingual string\u003Cbr \u002F>\n    wpm_translate_value( $value, $language = ” ); – translate multidimensional array with multilingual strings\u003C\u002Fp>\n\u003Cp>Update translation occurs at PHP. Therefore plugin has high adaptability, compatibility and easily integrates with other plugins. This is what distinguishes it among similar.\u003C\u002Fp>\n\u003Cp>Available translation html tags by JS for strings what do not have WP filters before output.\u003C\u002Fp>\n\u003Cp>Add your tags in config:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\"admin_html_tags\": {\n    \"admin_screen_id\": {\n      \"attribute\": [\n        \"selector\"\n      ]\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Where:\u003Cbr \u002F>\n    admin_screen_id – admin screen id.\u003Cbr \u002F>\n    attribute – attribute what need to translate. Available ‘text’ – for translate text node, ‘value’ – for translate form values. Or other tag attribute, like ‘title’, ‘alt’.\u003Cbr \u002F>\n    selector – css selector for search needed tag. Each selector is a new array item.\u003C\u002Fp>\n\u003Cp>If You need to add translation for multidimentional array for repeated elements You can use custom tag ‘wpm_each’ for set config to each element in array.\u003Cbr \u002F>\nExample, add config for each item ‘title’ in custom post field array:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\"post_fields\": {\n    \"custom_field\": {\n      \"wpm_each\": {\n        \"title\": {}\n      }\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>For set translation uses the syntax:\u003Cbr \u002F>\n    [:en]Donec vitae orci sed dolor[:de]Cras risus ipsum faucibus ut[:]\u003C\u002Fp>\n\u003Cp>Added shortcode for translate text in any place:\u003Cbr \u002F>\n    [wpm_translate][:en]Donec vitae orci sed dolor[:de]Cras risus ipsum faucibus ut[:][wpm_translate]\u003C\u002Fp>\n\u003Cp>If You translate text in established language, add lang parameter:\u003Cbr \u002F>\n    [wpm_translate lang=”de”][:en]Donec vitae orci sed dolor[:de]Cras risus ipsum faucibus ut[:][wpm_translate]\u003C\u002Fp>\n\u003Cp>Support translating from syntax qTranslate, qTranslate-X, WPGlobus etc.\u003C\u002Fp>\n\u003Cp>Compatible with REST-API.\u003Cbr \u002F>\nSupport transfer the required translation through option \u003Ccode>lang\u003C\u002Fcode> in the GET request to REST.\u003Cbr \u002F>\nHas the ability to keep recording the target language through the transmission parameter \u003Ccode>lang\u003C\u002Fcode> in the request.\u003C\u002Fp>\n\u003Ch3>Migration from qTranslate-X\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Before installing\u002Funinstalling, make database backup.\u003C\u002Fli>\n\u003Cli>Deactivate qTranslate-X.\u003C\u002Fli>\n\u003Cli>Install and activate WP Multilang.\u003C\u002Fli>\n\u003Cli>Create in root of your theme file ‘wpm-config.json’.\u003C\u002Fli>\n\u003Cli>Add all needed post types, taxonomies, options, fields to ‘wpm-config.json’. Setting from qTranslate-X not importing.\u003C\u002Fli>\n\u003Cli>Import term names from qTranslate.\u003C\u002Fli>\n\u003Cli>Check that everything is okay.\u003C\u002Fli>\n\u003Cli>If everything is okay, remove qTranslate-X. If not, make screenshots of errors, restore database from backup and add support issue with your screenshots and description of errors.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Warning\u003C\u002Fh3>\n\u003Cp>Not compatible with:\u003Cbr \u002F>\n– WP Maintenance\u003C\u002Fp>\n\u003Ch3>Known issues\u003C\u002Fh3>\n\u003Cp>Function ‘get_page_by_title’ not working, because in title field are stored titles for all languages. Use function ‘wpm_get_page_by_title( $title )’ as solution.\u003C\u002Fp>\n\u003Cp>NOTE: Because plugins have different ways of storing data, WP Multilang is not compatible with every single plugin out-of-the-box (mostly page builders). This may result in texts not being translatable or translations not being saved. Most of these issues can be resolved using the integration options (wpm-config.json or filters) of WP Multilang.\u003C\u002Fp>\n\u003Cp>Please try WP Multilang in a test-environment before activating it on an existing production site and always make a backup before activating!\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002F\" rel=\"nofollow ugc\">Home\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fcontact-us\u002F\" rel=\"nofollow ugc\">Help & Tech Support\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fdocs\u002F\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002F\" rel=\"nofollow ugc\">Premium\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>We try our best to provide support on WordPress.org forums. However, We have a special \u003Ca href=\"https:\u002F\u002Fwp-multilang.com\u002Fcontact-us\u002F\" rel=\"nofollow ugc\">community support\u003C\u002Fa> where you can ask us questions and get help about your WP Multilang related questions. Delivering a good user experience means a lot to us and so we try our best to reply each and every question that gets asked.\u003C\u002Fp>\n\u003Ch3>Bug Reports\u003C\u002Fh3>\n\u003Cp>Bug reports for WP Multilang are \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fahmedkaludi\u002Fwp-multilang\u002Fissues\" rel=\"nofollow ugc\">welcomed on GitHub\u003C\u002Fa>. Please note GitHub is not a support forum, and issues that aren’t properly qualified as bugs will be closed.\u003C\u002Fp>\n","Multilingual plugin for WordPress. Go Multilingual in minutes with full WordPress support. Translate your site easily with this localization plugin.",249839,86,100,"2026-02-18T13:52:00.000Z","6.9.4","4.7","5.6.20",[77,22,78,56,57],"localization","multilingual","https:\u002F\u002Fgithub.com\u002Fahmedkaludi\u002Fwp-multilang","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-multilang.2.4.26.zip",98,"2025-06-05 00:00:00",{"slug":84,"name":85,"version":86,"author":87,"author_profile":88,"description":89,"short_description":90,"active_installs":45,"downloaded":91,"rating":13,"num_ratings":92,"last_updated":93,"tested_up_to":73,"requires_at_least":94,"requires_php":95,"tags":96,"homepage":97,"download_link":98,"security_score":81,"vuln_count":99,"unpatched_count":26,"last_vuln_date":100,"fetched_at":28},"wpglobus","WPGlobus","3.0.2","Gregory Karpinsky (@tivnet)","https:\u002F\u002Fprofiles.wordpress.org\u002Ftivnet\u002F","\u003Cp>\u003Cstrong>WPGlobus\u003C\u002Fstrong> is a family of WordPress plugins assisting you in translating and maintaining bilingual\u002Fmultilingual WordPress blogs and sites.\u003C\u002Fp>\n\u003Ch4>Quick Start Video\u003C\u002Fh4>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FzoTWY9JrXLs?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp>Please also read the \u003Ca href=\"https:\u002F\u002Fwpglobus.com\u002Fquick-start\u002F\" rel=\"nofollow ugc\">Quick Start Guide\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Important Notes: please read before using WPGlobus!\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>NO AUTOMATIC TRANSLATION:\n\u003Cul>\n\u003Cli>WPGlobus does NOT translate texts automatically! You will \u003Cstrong>translate texts manually\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>PAGE BUILDERS \u002F COMPOSERS:\n\u003Cul>\n\u003Cli>WPGlobus supports blocks (“Gutenberg”) and WPBakery Page Builder. Other builders, such as “Page Builder by SiteOrigin”, “Beaver Builder”, Fusion (“Avada”), Elegant (“Divi”), Elementor, etc. have limited or no support.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>IF YOU UNINSTALL, YOU LOSE TRANSLATIONS:\n\u003Cul>\n\u003Cli>WPGlobus stores all translations using a special format: \u003Ccode>{:en}English{:}{:fr}French{:}{:es}Spanish{:}\u003C\u002Fcode>. If you decide to \u003Cstrong>deactivate and uninstall WPGlobus\u003C\u002Fstrong>, you \u003Cstrong>must run the cleanup tool\u003C\u002Fstrong> to keep only one language. See the details on the “Welcome” tab in the WPGlobus Settings.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>COOKIES:\n\u003Cul>\n\u003Cli>WPGlobus use browser cookies to store the selected language in the form \u003Ccode>wpglobus-language=xx\u003C\u002Fcode> where \u003Ccode>xx\u003C\u002Fcode> is a two-letter language code: \u003Ccode>en\u003C\u002Fcode>, \u003Ccode>de\u003C\u002Fcode>, \u003Ccode>fr\u003C\u002Fcode>, etc.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>NO MULTISITE:\n\u003Cul>\n\u003Cli>The \u003Cstrong>multisite\u003C\u002Fstrong> mode (multiple virtual sites sharing a single WordPress installation) is \u003Cstrong>not tested and not supported\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>FREE PLUGIN with PAID EXTENSIONS:\n\u003Cul>\n\u003Cli>Some functionality is available only with our \u003Cstrong>premium add-ons\u003C\u002Fstrong>. Details below.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>OLD PHP \u002F OLD WORDPRESS:\n\u003Cul>\n\u003Cli>We develop and test our software using the \u003Cstrong>latest versions of PHP, WordPress, and all plugins\u003C\u002Fstrong>. If you have an older version and something is not working properly – please upgrade before contacting us.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>MBSTRING:\n\u003Cul>\n\u003Cli>For the full UTF-8 compatibility and better performance, please make sure that the \u003Ca href=\"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Fintro.mbstring.php\" rel=\"nofollow ugc\">Multibyte String\u003C\u002Fa> PHP extension is enabled.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>What is in the FREE version of WPGlobus?\u003C\u002Fh4>\n\u003Cp>The WPGlobus plugin provides you with the general multilingual tools.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Manually translate\u003C\u002Fstrong> posts, pages, categories, tags, menus, and widgets;\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Add one or several languages\u003C\u002Fstrong> to your WP blog\u002Fsite using custom combinations of country flags, locales and language names;\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Switch the languages at the front-end\u003C\u002Fstrong> using: a drop-down menu extension and\u002For a customizable widget with various display options;\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Switch the Administrator interface language\u003C\u002Fstrong> using a top bar selector;\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The WPGlobus plugin serves as the \u003Cstrong>foundation\u003C\u002Fstrong> to other plugins in the family.\u003C\u002Fp>\n\u003Ch4>When do I need WPGlobus Extensions?\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>To translate URLs (\u003Ccode>\u002Fmy-page\u002F\u003C\u002Fcode> translates to \u003Ccode>\u002Ffr\u002Fma-page\u003C\u002Fcode>, \u003Ccode>\u002Fes\u002Fmi-pagina\u003C\u002Fcode> and so on);\u003C\u002Fli>\n\u003Cli>To “postpone” translation to all languages and publish only those that are ready;\u003C\u002Fli>\n\u003Cli>To have completely separate menus for each language;\u003C\u002Fli>\n\u003Cli>To translate WooCommerce products and taxonomies;\u003C\u002Fli>\n\u003Cli>…and more.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>For more details, please check out the extension descriptions on our website:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwpglobus.com\u002Fproduct\u002Fwoocommerce-wpglobus\u002F\" rel=\"nofollow ugc\">WooCommerce WPGlobus\u003C\u002Fa>: adds multilingual capabilities to WooCommerce-based online stores.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwpglobus.com\u002Fproduct\u002Fwpglobus-plus\u002F\" rel=\"nofollow ugc\">WPGlobus Plus\u003C\u002Fa>: adds URL fine-tuning, publishing status per translation, and more.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwpglobus.com\u002Fproduct\u002Fwpglobus-mobile-menu\u002F\" rel=\"nofollow ugc\">WPGlobus – Mobile Menu\u003C\u002Fa>: makes the WPGlobus language switcher menu compatible with mobile devices and narrow screens.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwpglobus.com\u002Fproduct\u002Fwpglobus-featured-images\u002F\" rel=\"nofollow ugc\">WPGlobus – Featured Images\u003C\u002Fa>: Set featured image separately for each language defined in WPGlobus.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwpglobus.com\u002Fproduct\u002Fwpglobus-translate-options\u002F\" rel=\"nofollow ugc\">WPGlobus – Translate Options\u003C\u002Fa>: Selective translation of the texts stored in the \u003Ccode>wp_options\u003C\u002Fcode> database table.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Compatibility with WordPress Themes\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WPGlobus works correctly with all themes that apply proper filtering before outputting content.\u003C\u002Fli>\n\u003Cli>Some themes incorporate 3rd party plugins (e.g., sliders, forms, composers) – not all of them are 100% multilingual-ready. When you see elements that cannot be translated, please \u003Cstrong>tell the theme\u002Fplugin authors\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>Read more on the topic \u003Ca href=\"https:\u002F\u002Fwpglobus.com\u002Fdocumentation\u002Fwpglobus-compatibility-with-themes-and-plugins\u002F\" rel=\"nofollow ugc\">here\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Compatibility with WordPress Plugins\u003C\u002Fh4>\n\u003Cp>We have tested WPGlobus with many plugins. However, since plugins are frequently updated, some adjustments may be required after a new update. We will do our best to monitor and make the necessary changes on our end.\u003C\u002Fp>\n\u003Ch4>Permalinks\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>IMPORTANT:\u003C\u002Fstrong> WPGlobus will not work if your URLs look like \u003Ccode>example.com?p=123\u003C\u002Fcode> or \u003Ccode>example.com\u002Findex.php\u002Fcategory\u002Fpost\u002F\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Please go to \u003Ccode>Settings->Permalinks\u003C\u002Fcode> and change the permalink structure to non-default and with no \u003Ccode>index.php\u003C\u002Fcode> in it. If you are unable to do that for some reason, please talk to your hosting provider or systems administrator.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> WooCommerce adds their own section to the Permalinks. It is important to fill in all the information. For example, you need to specify your Shop Base, for example, \u003Ccode>\u002Fproduct\u002F\u003C\u002Fcode>. If you leave it blank, WooCommerce will try to translate the base (eg \u003Ccode>\u002Fprodukt\u002F\u003C\u002Fcode> for German), which will result in a 404 error.\u003C\u002Fp>\n\u003Ch4>Developing on `localhost` or custom ports\u003C\u002Fh4>\n\u003Cp>WPGlobus may not work correctly on development servers having URLs like \u003Ccode>\u002F\u002Flocalhost\u002Fmysite\u003C\u002Fcode> or on custom ports like \u003Ccode>\u002F\u002Fmyserver.dev:3000\u003C\u002Fcode>. Please use a proper domain name (a fake one from \u003Ccode>\u002Fetc\u002Fhosts\u003C\u002Fcode> is OK), and port 80.\u003C\u002Fp>\n","Multilingual\u002FGlobalization: URL-based multilanguage with an easy translation interface.",1091142,228,"2026-02-01T20:20:00.000Z","6.2","7.4",[77,22,78,56,84],"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwpglobus\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpglobus.3.0.2.zip",7,"2018-01-11 00:00:00",{"slug":102,"name":103,"version":104,"author":105,"author_profile":106,"description":107,"short_description":108,"active_installs":45,"downloaded":109,"rating":81,"num_ratings":110,"last_updated":111,"tested_up_to":112,"requires_at_least":113,"requires_php":18,"tags":114,"homepage":120,"download_link":121,"security_score":25,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"wpml-widgets","WPML Widgets","1.0.6","Jeroen Sormani","https:\u002F\u002Fprofiles.wordpress.org\u002Fsormano\u002F","\u003Cp>WPML Widgets is a simple to use extension to add a language selector dropdown to your widgets.\u003C\u002Fp>\n\u003Cp>This plugin is the easiest way to add multilingual widgets to your website.\u003C\u002Fp>\n\u003Cp>WPML Widgets is a ultra lightweight plugin, so there will be (about) zero extra loading time.\u003C\u002Fp>\n","WPML Widgets is a simple to use extension to add a language selector dropdown to your widgets.",171698,36,"2017-11-28T08:13:00.000Z","4.7.32","3.6",[115,116,117,118,119],"wordpress-multilanguage","wordpress-multilanguage-widget","wpml","wpml-widget","wpml-widget-selector","http:\u002F\u002Fjeroensormani.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwpml-widgets.1.0.6.zip",{"slug":123,"name":124,"version":125,"author":126,"author_profile":127,"description":128,"short_description":129,"active_installs":130,"downloaded":131,"rating":59,"num_ratings":132,"last_updated":133,"tested_up_to":134,"requires_at_least":135,"requires_php":18,"tags":136,"homepage":141,"download_link":142,"security_score":71,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"multiple-domain-mapping-on-single-site","Multiple Domain Mapping on Single Site","1.1.1","matthias.wagner","https:\u002F\u002Fprofiles.wordpress.org\u002Fmatthiaswagner\u002F","\u003Ch4>What does this plugin do?\u003C\u002Fh4>\n\u003Cp>This lightweight plugin maps domains to specific URIs in your blog or website. It allows you to add as many mappings, e.g. for landingpages, as you want.\u003Cbr \u002F>\nJust let the domains point to your WordPress installation (see the installation tab for details) and decide which URI the plugin should map them to.\u003C\u002Fp>\n\u003Ch4>What is this plugin for?\u003C\u002Fh4>\n\u003Cp>The main purpose of the plugin is to have specific domains show the content of specific pages from a bigger website. This is especially needed for marketing and SEO purposes (landingpages). Think of a site-structure like\u003C\u002Fp>\n\u003Cul>\n\u003Cli>www.mainsite.com\u003C\u002Fli>\n\u003Cli>www.mainsite.com\u002FproductA\u003C\u002Fli>\n\u003Cli>www.mainsite.com\u002FproductB\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>With the plugin you can use an additional domain like www.productA.com to point to your site’s www.mainsite.com\u002FproductA.\u003Cbr \u002F>\nIt is \u003Cstrong>not a redirection\u003C\u002Fstrong>, instead the additional domain will display the content from the specified page (the additional domain will be visible in the browsers address bar).\u003C\u002Fp>\n\u003Ch4>What is this plugin not for?\u003C\u002Fh4>\n\u003Cp>It is not our goal to mirror complete websites to additional domains. You can try to do this, but keep the aspects of duplicate content in mind. In the help section of the installed plugin we provide links to other plugins who may be better at this task.\u003C\u002Fp>\n\u003Ch4>Which Pages, Post Types, … does the plugin support?\u003C\u002Fh4>\n\u003Cp>The plugin lets you define URIs to map to, so it works for pages, posts, custom post types, archives and so on. The plugin also changes hyperlink destination of the links inside your website. For example: navigation, pagination, archive links and so on. (Note: This only works if your theme and other link-generating plugins use standard WordPress functions like get_permalink).\u003C\u002Fp>\n\u003Cp>So you will not have to select posts to map to your domains, but instead enter URIs. See the screenshots for examples.\u003C\u002Fp>\n\u003Ch4>Is it hard to set up?\u003C\u002Fh4>\n\u003Cp>The plugin requires additional steps in setting up your domains and hosting environment (see the installation-tab for details). If you are not familiar with these settings, it can happen that you have troubles with reaching your website. Therefore you should only set up the plugin in a testing environment if you are not sure if you can deal with these external settings.\u003C\u002Fp>\n\u003Cp>We give our best to support you, but if you have troubles with correct DNS records and hosting environment settings, you should talk to your hosting provider or your web developer first.\u003C\u002Fp>\n\u003Ch4>Troubles?\u003C\u002Fh4>\n\u003Cp>Please see installation-tab, FAQ and the already answered support threads for more information or if you have troubles setting up the plugin.\u003C\u002Fp>\n\u003Ch4>PREMIUM\u003C\u002Fh4>\n\u003Cp>We have partnered with the plugin “Domain Mapping System” to be able to provide plugins for different use cases. Since they offer a paid version, they will also be able to provide you professional support. You want to benefit from special deals and coupons for the other plugin? \u003Ca href=\"https:\u002F\u002Fwww.falkemedia.at\u002Fmultiple-domain-mapping-on-single-site-premium\u002F\" rel=\"nofollow ugc\">Find more information here.\u003C\u002Fa>\u003C\u002Fp>\n","Show content of specific posts, pages, ... within their own, additional domains. Useful for SEO: different domains for landingpages.",6000,113499,47,"2025-04-16T12:50:00.000Z","6.8.5","4.5",[137,138,139,21,140],"domainmapping","landingpage","mapping","redirect","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmultiple-domain-mapping-on-single-site\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmultiple-domain-mapping-on-single-site.1.1.1.zip",{"attackSurface":144,"codeSignals":161,"taintFlows":179,"riskAssessment":180,"analyzedAt":185},{"hooks":145,"ajaxHandlers":157,"restRoutes":158,"shortcodes":159,"cronEvents":160,"entryPointCount":26,"unprotectedCount":26},[146,152],{"type":147,"name":148,"callback":149,"file":150,"line":151},"action","admin_menu","geo_redirect_admin_page","geo-redirect-admin.php",353,{"type":147,"name":153,"callback":154,"file":155,"line":156},"check_client_location","geo_redirect_client_location","geo-redirect.php",15,[],[],[],[],{"dangerousFunctions":162,"sqlUsage":163,"outputEscaping":165,"fileOperations":26,"externalRequests":26,"nonceChecks":32,"capabilityChecks":26,"bundledLibraries":178},[],{"prepared":26,"raw":26,"locations":164},[],{"escaped":166,"rawEcho":167,"locations":168},6,4,[169,172,174,176],{"file":150,"line":170,"context":171},201,"raw output",{"file":150,"line":173,"context":171},215,{"file":150,"line":175,"context":171},216,{"file":150,"line":177,"context":171},217,[],[],{"summary":181,"deductions":182},"The \"geographical-redirect\" plugin version 3.3.1 exhibits a strong security posture based on the provided static analysis and vulnerability history. The absence of any detected entry points like AJAX handlers, REST API routes, or shortcodes significantly limits the plugin's attack surface. Furthermore, the analysis indicates no dangerous functions, file operations, or external HTTP requests, all of which are positive signs of secure coding practices. The reliance on prepared statements for all SQL queries is excellent, mitigating the risk of SQL injection vulnerabilities. The presence of a nonce check and proper SQL handling are commendable. However, the fact that only 60% of output is properly escaped represents a potential weakness. While taint analysis showed no issues, this particular finding suggests that sensitive data outputted by the plugin might not be adequately protected against cross-site scripting (XSS) attacks in certain scenarios. The clean vulnerability history with zero recorded CVEs further bolsters confidence in the plugin's security, implying a consistent effort from the developers to maintain a secure codebase.",[183],{"reason":184,"points":167},"Output escaping is not fully implemented","2026-03-16T19:50:51.528Z",{"wat":187,"direct":192},{"assetPaths":188,"generatorPatterns":189,"scriptPaths":190,"versionParams":191},[],[],[],[],{"cssClasses":193,"htmlComments":194,"htmlAttributes":195,"restEndpoints":196,"jsGlobals":197,"shortcodeOutput":198},[],[],[],[],[],[]]