[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fmSn2XOTYU3N4mL3Al8CyeOAN2L3SXH2s3_rsBTj30lk":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":13,"last_updated":14,"tested_up_to":15,"requires_at_least":16,"requires_php":17,"tags":18,"homepage":24,"download_link":25,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28,"vulnerabilities":29,"developer":30,"crawl_stats":27,"alternatives":39,"analysis":140,"fingerprints":333},"basic-bilingual","Basic Bilingual","1.3.5","Steph","https:\u002F\u002Fprofiles.wordpress.org\u002Fsteph\u002F","\u003Cp>Allows you to set the language of individual posts and pages and to summarize\u003Cbr \u002F>\nthem in other languages.\u003C\u002Fp>\n\u003Cp>The excerpts are automatically inserted right before the post content, with the\u003Cbr \u002F>\ncorrect language attribute. The correct language attribute is also set on the\u003Cbr \u002F>\npost titles and original content.\u003C\u002Fp>\n\u003Cp>If you were using this plugin prior to version 1.0 you will have to migrate\u003Cbr \u002F>\nyour posts and pages.\u003C\u002Fp>\n\u003Col>\n\u003Cli>Make sure your back-up your database\u003C\u002Fli>\n\u003Cli>Select the same 2 languages you were previously using in the “Site languages”\u003Cbr \u002F>\noption\u003C\u002Fli>\n\u003Cli>Press the “Migrate” button on the settings page\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>You might want to check \u003Ca href=\"http:\u002F\u002Fclimbtothestars.org\u002Ffocus\u002Fmultilingual\" rel=\"nofollow ugc\">my work on multilingualism online\u003C\u002Fa>\u003Cbr \u002F>\nto understand what brought me to develop this plugin.\u003C\u002Fp>\n\u003Cp>We also welcome volunteers to translate that plugin into more languages. If you\u003Cbr \u002F>\nwish to help then contact \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fstephtara\" rel=\"nofollow ugc\">@stephtara\u003C\u002Fa> on Twitter\u003Cbr \u002F>\nor see \u003Ca href=\"http:\u002F\u002Fclimbtothestars.org\u002Fcontact\u002F\" rel=\"nofollow ugc\">Stephanie’s contact page\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cp>Following is the list of people who worked on this plugin.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fclimbtothestars.org\u002F\" rel=\"nofollow ugc\">Stephanie Booth\u003C\u002Fa>: Ideas and initial development.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fwww.freshlabs.de\u002Fjournal\u002F\" rel=\"nofollow ugc\">Tim Isenheim\u003C\u002Fa>: Contributed bug fixes.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Flpal.li\u002F\" rel=\"nofollow ugc\">Luca Palli\u003C\u002Fa>: Contributed bug fixes and features.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fvdvn.me\u002F\" rel=\"nofollow ugc\">Claude Vedovini\u003C\u002Fa>: Took over development for v1.0.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fnathalieaynie.com\u002F\" rel=\"nofollow ugc\">Nathalie Aynié\u003C\u002Fa>: Contributed the Italian\u003Cbr \u002F>\ntranslations.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fwww.webhostinghub.com\u002F\" rel=\"nofollow ugc\">Borisa Djuraskovic\u003C\u002Fa>: Contributed the\u003Cbr \u002F>\nSerbo-Croatian translations.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjanspoelstra\" rel=\"nofollow ugc\">Jan Spoelstra\u003C\u002Fa>: Contributed the\u003Cbr \u002F>\nDutch translations.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Privacy Policy\u003C\u002Fh3>\n\u003Cp>This plugin does not collect any personal information from your visitors.\u003C\u002Fp>\n","Allows you to set the language of individual posts and pages and to summarize",10,14173,0,"2018-05-18T04:19:00.000Z","4.9.29","3.5","",[19,20,21,22,23],"bilingual","language","languages","multilingual","translation","http:\u002F\u002Fclimbtothestars.org\u002Fwordpress\u002Fbasic-bilingual\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbasic-bilingual.1.3.5.zip",85,null,"2026-03-15T15:16:48.613Z",[],{"slug":31,"display_name":32,"profile_url":8,"plugin_count":33,"total_installs":34,"avg_security_score":35,"avg_patch_time_days":36,"trust_score":37,"computed_at":38},"steph","Stephen Harris",51,49040,88,388,71,"2026-04-04T07:24:52.397Z",[40,62,85,105,123],{"slug":41,"name":42,"version":43,"author":44,"author_profile":45,"description":46,"short_description":47,"active_installs":48,"downloaded":49,"rating":50,"num_ratings":51,"last_updated":52,"tested_up_to":53,"requires_at_least":54,"requires_php":55,"tags":56,"homepage":59,"download_link":60,"security_score":61,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"events-manager-wpml","Events Manager and WPML Compatibility","2.0.4","Marcus (aka @msykes)","https:\u002F\u002Fprofiles.wordpress.org\u002Fnetweblogic\u002F","\u003Cp>This plugin helps make \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fevents-manager\u002F\" rel=\"ugc\">Events Manager\u003C\u002Fa> and \u003Ca href=\"http:\u002F\u002Fwpml.org\" rel=\"nofollow ugc\">WPML\u003C\u002Fa> work better together by allowing translation of all event-related features:\u003C\u002Fp>\n\u003Cp>** Version 2.0 is a major revamp that fixes \u003Cem>all known issues\u003C\u002Fem>, nuances and limitiation. 2.0 enables \u003Cem>full compatiblity\u003C\u002Fem> with \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fevents-manager\u002F\" rel=\"ugc\">Events Manager\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Feventsmanagerpro.com\" rel=\"nofollow ugc\">Events Manager Pro Add-ons\u003C\u002Fa> **\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Detects translated pages of specific EM pages (assigned in Events > Settings > Pages) and displays relevant language content\u003C\u002Fli>\n\u003Cli>Searching locations and events within the context of the current language being viewed.\u003C\u002Fli>\n\u003Cli>Recurring events can be created in multiple languages, recurrence translations are correctly created.\u003C\u002Fli>\n\u003Cli>Event translations will share relevant information across all translations, including\n\u003Cul>\n\u003Cli>Event Times\u003C\u002Fli>\n\u003Cli>Location Information\u003C\u002Fli>\n\u003Cli>If translations for the location exist, translated events will show\u002Flink to location of the same language, if not the original location translation.\u003C\u002Fli>\n\u003Cli>Bookings and Booking Forms\u003C\u002Fli>\n\u003Cli>If you delete an event that is the originally translated event, booking and other meta info is transferred to default language or next available language translation.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Location address information can be translated, whilst sharing coordinate, country\u002Fzip information accross translations.\u003C\u002Fli>\n\u003Cli>Event-related text can be translated for each language including:\n\u003Cul>\n\u003Cli>Custom texts, emails templates and formats on the settings page.\u003C\u002Fli>\n\u003Cli>Booking and attendee custom forms (available in Pro)\u003C\u002Fli>\n\u003Cli>Custom event and gateway emails (available in Pro)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>MultiSite cross-site support, including showing events from other blogs in your network when EM Global Tables Mode is enabled.\u003C\u002Fli>\n\u003Cli>Displaying untranslated items in lists or hiding them, according to WPML settings.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Special Installation Steps\u003C\u002Fh4>\n\u003Cp>Please ensure that WPML 4.2 and EM 5.6.7 or higher are installed BEFORE updating or activating this plugin.\u003C\u002Fp>\n\u003Cp>When setting up EM and WPML, you should create translated versions of the event, location, category, tag, etc. pages assigned in Events > Settings > Pages of your admin area. Duplicating them using WPML is enough.\u003C\u002Fp>\n\u003Cp>Given the flexibiltiy of both plugins, there is an huge number of possible setting\u002Flanguage combinations to test, and despite our rigorous testing it is impossible to test every setting combination and scenario. To the best of our knowledge, we have achieved 100% compatibility, but should you come across on your setup and we’ll do our best to fix them as time permits.\u003C\u002Fp>\n","Integrates the Events Manager and WPML plugins together to provide a smoother multilingual experience (Requires Events Manager and WPML)",1000,38031,56,13,"2025-04-23T10:15:00.000Z","6.8.5","3.3","5.2",[57,21,22,23,58],"events","wpml","https:\u002F\u002Fwp-events-plugin.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fevents-manager-wpml.2.0.4.zip",100,{"slug":63,"name":64,"version":65,"author":66,"author_profile":67,"description":68,"short_description":69,"active_installs":70,"downloaded":71,"rating":61,"num_ratings":72,"last_updated":73,"tested_up_to":74,"requires_at_least":75,"requires_php":76,"tags":77,"homepage":80,"download_link":81,"security_score":82,"vuln_count":83,"unpatched_count":13,"last_vuln_date":84,"fetched_at":28},"smartcat-wpml","Smartcat Translator for WPML","3.1.77","smartcatai","https:\u002F\u002Fprofiles.wordpress.org\u002Fsmartcatai\u002F","\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.smartcat.com\u002F?utm_source=connectors&utm_medium=referral&utm_campaign=wordpress\" rel=\"nofollow ugc\">Smartcat\u003C\u002Fa> connects linguists, companies, and agencies to streamline the translation of any content into any language, on demand. Our platform puts your translation process on autopilot, from content creation to payments.\u003C\u002Fp>\n\u003Cp>The plugin allows you to set up an integration between your WPML-enabled WordPress site and Smartcat. The integration itself is configured in Smartcat. Once configured, it will automatically pull translatable content from your website to Smartcat, where you can translate it with your own linguists or the ones you pick from our Marketplace. Alternatively, you can use the power of machine translation and post-edit just the most important pages to reduce translation costs. Once your content is translated, Smartcat will push it back to WordPress, instantly publishable in the target language(s) of choice.\u003C\u002Fp>\n\u003Ch3>Account & pricing\u003C\u002Fh3>\n\u003Cp>You first need to create a Smartcat account as one is not automatically created when installing the extension.\u003Cbr \u002F>\nTo create an account, go to \u003Ca href=\"https:\u002F\u002Fwww.smartcat.com\" rel=\"nofollow ugc\">smartcat.com\u003C\u002Fa>. All translation features in Smartcat are free to use.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Connect your WordPress website with a specific Smartcat account\u003C\u002Fli>\n\u003Cli>Choose the translation supplier from your own team or Smartcat Marketplace\u003C\u002Fli>\n\u003Cli>Automatically send new or updated content for translation\u003C\u002Fli>\n\u003Cli>Reuse existing translations thanks to Translation Memory\u003C\u002Fli>\n\u003Cli>Choose translation workflow stages — translation, editing, proofreading, etc.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Benefits of Smartcat\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>No document re-formatting required\u003C\u002Fli>\n\u003Cli>Easy-to-use multilingual translation editor\u003C\u002Fli>\n\u003Cli>Multi-stage translation process — e.g., translation, editing, proofreading\u003C\u002Fli>\n\u003Cli>Free collaboration with your own volunteers or coworkers\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.smartcat.com\u002Fmarketplace\u002F?utm_source=connectors&utm_medium=referral&utm_campaign=wordpress\" rel=\"nofollow ugc\">Marketplace\u003C\u002Fa>\u003Cbr \u002F>\n of 350,000+ translators and 2,000+ agencies in 100+ language pairs\u003C\u002Fli>\n\u003Cli>Track progress by language, document, or person\u003C\u002Fli>\n\u003Cli>Automated payments to translation suppliers\u003C\u002Fli>\n\u003Cli>Free support to optimize localization processes\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>Contact us at \u003Ca href=\"mailto:support@smartcat.com\" rel=\"nofollow ugc\">support@smartcat.com\u003C\u002Fa> with any questions related to:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Module issues\u003C\u002Fli>\n\u003Cli>Assistance in vendor management (freelancers or LSPs)\u003C\u002Fli>\n\u003Cli>Use of the module for your clients needs\u003C\u002Fli>\n\u003C\u002Ful>\n","The easiest way to translate your WPML-enabled WordPress site into various languages.",60,15979,3,"2026-03-13T07:35:00.000Z","6.9.4","5.3","7.0",[21,78,22,23,79],"localization","translator","https:\u002F\u002Fsmartcat.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsmartcat-wpml.3.1.77.zip",99,1,"2025-09-10 18:45:26",{"slug":86,"name":87,"version":88,"author":89,"author_profile":90,"description":91,"short_description":92,"active_installs":93,"downloaded":94,"rating":95,"num_ratings":96,"last_updated":97,"tested_up_to":98,"requires_at_least":99,"requires_php":100,"tags":101,"homepage":102,"download_link":103,"security_score":104,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"nlingual","nLingual","2.10.0.1","Doug Wollison","https:\u002F\u002Fprofiles.wordpress.org\u002Fdougwollison\u002F","\u003Cp>The nLingual system allows for flexible multilingual support and translation management for WordPress. The system handles translations on a per-post basis, and can be set to be synchronized so changes to certain details on one are copied to the others. It offers you control over what can be translated and how, with a number of utilities available for 3rd party themes and plugins to utilize.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>nLingual 2 offers more robust control of translation management, better extensibility, and fixes to numerous core issues with the previous incarnation.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch4>Translation for Almost Anything\u003C\u002Fh4>\n\u003Cp>When setting up, you have control over what content supports translation. Any UI-enabled post types or taxonomies will be available for enabling, along with any navigation menus or sidebar locations registered. In addition, nLingual includes a LocalizeThis API that can be enabled on nearly any text field found in the admin, allowing just about any option or meta field to support separate values in each language.\u003C\u002Fp>\n\u003Ch4>Simple Translation Creation and Management\u003C\u002Fh4>\n\u003Cp>Assigning a language and translations to a post can be done on either the post editor screen or the posts management screen via Quick Edit (language can also be set for multiple post via Bulk Edit). You can also easily create new translations for existing posts on the fly; select “New [language] [post type]”, provide a translated title if you wish, and a new draft post will be created that is an exact copy of the original, ready for translation.\u003C\u002Fp>\n\u003Cp>Translations are stored as independent posts, associated with their counterparts via a custom table. This allows you to translate the custom fields and other metadata associated with a post, and can assign them their own separate terms if desired. However, since there are plenty of occasions where you want the same information used between posts, nLingual offers \u003Cem>post synchronization\u003C\u002Fem>.\u003C\u002Fp>\n\u003Ch4>Post Synchronization\u003C\u002Fh4>\n\u003Cp>Each post type has it’s own rules for what data is synchronized between translations. When changes are saved to a post, it’s translations will be updated with to have the same data in the approved fields. This covers post data (e.g. date, status, and menu order), terms of specified taxonomies, and any meta fields you specify (e.g. the thumbnail image used, or a custom field value).\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Note: Currently, there is no per-post basis override for the synchronization rules\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch4>Free-form Language Management\u003C\u002Fh4>\n\u003Cp>Admittedly, this is a feature few will need, but it’s a godsend to those that do. When setting up the languages nLingual will use, you can define you own languages from scratch or based on numerous presets. Each language has a number of fields:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>System Name: the name to use when referring to the language within the admin.\u003C\u002Fli>\n\u003Cli>Native Name: the name of the language as it appears to native speakers on the site.\u003C\u002Fli>\n\u003Cli>Short Name: a shorthand version of the native name, if applicable.\u003C\u002Fli>\n\u003Cli>Locale: the language\u002Fcountry code to represent this language, as well identify the .mo file to load for text domains.\u003C\u002Fli>\n\u003Cli>ISO Code: the official ISO 639-1 code for the language (2 letters)\u003C\u002Fli>\n\u003Cli>Slug: the value to use when localizing a URL for the language (typically the same as the ISO code).\u003C\u002Fli>\n\u003Cli>Text Direction: the text direction the language should be rendered in (Left-to-right or right-to-left). Will override the one specified in the text domain files.\u003C\u002Fli>\n\u003Cli>Active State: whether or not to allow public access to content in the language.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Flexible Language Detection\u002FSwitching\u003C\u002Fh4>\n\u003Cp>When the public-facing side of the site is loaded, nLingual will attempt to detect what language to serve the page in, using the following process:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Use the language code in the \u003Ccode>$_REQUEST\u003C\u002Fcode> array for the specified key, if present.\u003C\u002Fli>\n\u003Cli>Use the language code in either the subdomain or directory path, depending on method specified.\u003C\u002Fli>\n\u003Cli>Use the browser’s preferred language setting and find the closest match, falling back to the default language.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Once the language is set, it can be overridden by the language belonging to the requested post. This override is an configurable option.\u003C\u002Fp>\n\u003Cp>In addition, the language can temporarily be switched to another by 3rd party theme or plugin code, similar to switching blogs in a multisite installation. When the language is switched, all text domain files will be reloaded in the desired language (the originals cached for when it’s restored), so any gettext translations will reflect the current language.\u003C\u002Fp>\n\u003Ch4>Extensibility and 3rd Party Development\u003C\u002Fh4>\n\u003Cp>In addition to numerous hooks to modify the functionality of nLingual, this plugin also includes some useful gettext utilities: \u003Ccode>_f\u003C\u002Fcode>, \u003Ccode>_ef\u003C\u002Fcode>, \u003Ccode>_fx\u003C\u002Fcode>, \u003Ccode>_efx\u003C\u002Fcode>, \u003Ccode>_a\u003C\u002Fcode>, and \u003Ccode>_xa\u003C\u002Fcode>, all of which are documented in \u003Ccode>includes\u002Ffunctions-gettext.php\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch4>Backwards Compatibility\u003C\u002Fh4>\n\u003Cp>Although nLingual 2 has be rewritten from scratch, most if not all of the functions and filters are still available via the backwards compatibility feature, which is automatically enabled upon upgrading. However, any code that directly queries the database using the old nLingual language and translation tables will need to be updated to reflect the new structure.\u003C\u002Fp>\n","A simple but flexible multilingual system. Features custom language management, post data synchronization and theme\u002Fplugin development utilities.",30,11956,80,4,"2024-11-07T14:39:00.000Z","6.6.5","6.2.0","7.0.0",[19,20,22,23],"https:\u002F\u002Fgithub.com\u002Fdougwollison\u002Fnlingual","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnlingual.2.10.0.1.zip",92,{"slug":106,"name":107,"version":108,"author":109,"author_profile":110,"description":111,"short_description":112,"active_installs":11,"downloaded":113,"rating":13,"num_ratings":13,"last_updated":114,"tested_up_to":115,"requires_at_least":116,"requires_php":17,"tags":117,"homepage":121,"download_link":122,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"multilingual-wordpress","Multilingual wordpress","0.1.2","Sergio Milardovich","https:\u002F\u002Fprofiles.wordpress.org\u002Fmilardovich\u002F","\u003Cp>The ultimate solution for mantaining multilingual sites. With this plugin you can make posts in multiple languages and then let the user choose which one want to read. You do not need to put anything in your code. It is automatically and quite customizable. The plugin can smartly make relationships between multiple posts, so you don’t need to link ALL the equivalent posts, with only one is enought. You can also choose from the backend in which place you want the user let decide the language.\u003C\u002Fp>\n","The ultimate solution for mantaining multilingual sites. With this plugin you can make posts in multiple languages and then let the user choose which  &hellip;",14114,"2011-05-03T19:07:00.000Z","2.9.2","2.0",[118,119,21,22,120],"l10","l18n","translations","http:\u002F\u002Fmilardovich.com.ar\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmultilingual-wordpress.0.1.2.zip",{"slug":124,"name":125,"version":126,"author":127,"author_profile":128,"description":129,"short_description":130,"active_installs":11,"downloaded":131,"rating":61,"num_ratings":132,"last_updated":133,"tested_up_to":134,"requires_at_least":135,"requires_php":136,"tags":137,"homepage":138,"download_link":139,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":28},"phrase","Phrase Strings","1.2.5","Phrase","https:\u002F\u002Fprofiles.wordpress.org\u002Fphrasewp\u002F","\u003Cp>This plugin allows you to send page or post content to your Phrase projects, directly from within WordPress. Once translations are done, send them back to WordPress and easily publish multilingual sites.\u003C\u002Fp>\n","Phrase WordPress Integration. Phrase is a translation management platform for software projects. You can collaborate on language file translation with &hellip;",2352,2,"2023-03-23T08:46:00.000Z","6.0.11","5.5","7.2",[21,22,23],"https:\u002F\u002Fphrase.com\u002Flp\u002Fwordpress\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fphrase.1.2.5.zip",{"attackSurface":141,"codeSignals":229,"taintFlows":295,"riskAssessment":324,"analyzedAt":332},{"hooks":142,"ajaxHandlers":225,"restRoutes":226,"shortcodes":227,"cronEvents":228,"entryPointCount":13,"unprotectedCount":13},[143,149,154,157,160,164,168,172,175,178,182,185,190,194,197,201,204,207,211,215,219,223],{"type":144,"name":145,"callback":146,"file":147,"line":148},"action","plugins_loaded","get_instance","basic-bilingual.php",41,{"type":150,"name":151,"callback":152,"priority":11,"file":147,"line":153},"filter","load_textdomain_mofile","smarter_load_textdomain",58,{"type":144,"name":155,"callback":155,"file":147,"line":156},"init",62,{"type":144,"name":158,"callback":158,"file":147,"line":159},"admin_menu",63,{"type":144,"name":161,"callback":162,"file":147,"line":163},"wp_enqueue_scripts","enqueue_scripts",69,{"type":144,"name":165,"callback":166,"file":147,"line":167},"the_content","filter_the_content",73,{"type":150,"name":169,"callback":170,"file":147,"line":171},"the_title","filter_the_title",74,{"type":150,"name":173,"callback":173,"file":147,"line":174},"query_vars",121,{"type":150,"name":176,"callback":176,"priority":11,"file":147,"line":177},"post_link",122,{"type":144,"name":179,"callback":180,"file":147,"line":181},"pre_get_posts","posts_by_language",123,{"type":150,"name":183,"callback":183,"file":147,"line":184},"template_include",124,{"type":144,"name":186,"callback":187,"file":188,"line":189},"do_meta_boxes","customize_meta_boxes","class-admin.php",8,{"type":144,"name":191,"callback":192,"file":188,"line":193},"save_post","save_post_data",11,{"type":150,"name":195,"callback":196,"file":188,"line":51},"manage_posts_columns","post_columns",{"type":144,"name":198,"callback":199,"priority":11,"file":188,"line":200},"manage_posts_custom_column","custom_post_columns",14,{"type":150,"name":202,"callback":196,"file":188,"line":203},"manage_pages_columns",15,{"type":144,"name":205,"callback":199,"priority":11,"file":188,"line":206},"manage_pages_custom_column",16,{"type":144,"name":208,"callback":209,"file":188,"line":210},"restrict_manage_posts","restrict_posts_by_lang",20,{"type":150,"name":212,"callback":213,"file":188,"line":214},"posts_where","posts_where_lang",21,{"type":144,"name":216,"callback":217,"file":188,"line":218},"admin_head-edit.php","admin_styles",22,{"type":150,"name":220,"callback":221,"file":188,"line":222},"plugin_action_links_basic-bilingual\u002Fbasic-bilingual.php","add_settings_link",246,{"type":144,"name":191,"callback":192,"file":188,"line":224},352,[],[],[],[],{"dangerousFunctions":230,"sqlUsage":231,"outputEscaping":233,"fileOperations":13,"externalRequests":13,"nonceChecks":83,"capabilityChecks":132,"bundledLibraries":294},[],{"prepared":13,"raw":13,"locations":232},[],{"escaped":72,"rawEcho":234,"locations":235},32,[236,239,241,243,245,247,249,251,253,255,257,258,259,260,262,263,265,266,268,270,272,273,275,277,278,280,282,284,286,288,290,292],{"file":147,"line":237,"context":238},436,"raw output",{"file":147,"line":240,"context":238},445,{"file":147,"line":242,"context":238},457,{"file":188,"line":244,"context":238},36,{"file":188,"line":246,"context":238},38,{"file":188,"line":248,"context":238},64,{"file":188,"line":250,"context":238},89,{"file":188,"line":252,"context":238},93,{"file":188,"line":254,"context":238},116,{"file":188,"line":256,"context":238},120,{"file":188,"line":256,"context":238},{"file":188,"line":184,"context":238},{"file":188,"line":184,"context":238},{"file":188,"line":261,"context":238},125,{"file":188,"line":261,"context":238},{"file":188,"line":264,"context":238},174,{"file":188,"line":264,"context":238},{"file":188,"line":267,"context":238},176,{"file":188,"line":269,"context":238},180,{"file":188,"line":271,"context":238},181,{"file":188,"line":271,"context":238},{"file":188,"line":274,"context":238},189,{"file":188,"line":276,"context":238},190,{"file":188,"line":276,"context":238},{"file":188,"line":279,"context":238},203,{"file":188,"line":281,"context":238},211,{"file":188,"line":283,"context":238},212,{"file":188,"line":285,"context":238},218,{"file":188,"line":287,"context":238},219,{"file":188,"line":289,"context":238},226,{"file":188,"line":291,"context":238},235,{"file":188,"line":293,"context":238},266,[],[296,314],{"entryPoint":297,"graph":298,"unsanitizedCount":83,"severity":313},"restrict_posts_by_lang (class-admin.php:30)",{"nodes":299,"edges":310},[300,305],{"id":301,"type":302,"label":303,"file":188,"line":304},"n0","source","$_GET",33,{"id":306,"type":307,"label":308,"file":188,"line":246,"wp_function":309},"n1","sink","echo() [XSS]","echo",[311],{"from":301,"to":306,"sanitized":312},false,"medium",{"entryPoint":315,"graph":316,"unsanitizedCount":13,"severity":323},"\u003Cclass-admin> (class-admin.php:0)",{"nodes":317,"edges":320},[318,319],{"id":301,"type":302,"label":303,"file":188,"line":304},{"id":306,"type":307,"label":308,"file":188,"line":246,"wp_function":309},[321],{"from":301,"to":306,"sanitized":322},true,"low",{"summary":325,"deductions":326},"The plugin 'basic-bilingual' v1.3.5 exhibits a generally good security posture with no known vulnerabilities or critical security signals. The static analysis reveals a minimal attack surface and a robust approach to sensitive operations like SQL queries and capability checks. The presence of nonce checks also suggests an awareness of common WordPress security practices.\n\nHowever, there are areas for improvement. The low percentage of properly escaped output is a significant concern, as it indicates a potential for Cross-Site Scripting (XSS) vulnerabilities. While the taint analysis did not reveal critical or high severity issues, the presence of one flow with an unsanitized path warrants attention, as this could be a vector for unexpected behavior or data leakage if exploited in conjunction with other weaknesses.\n\nGiven the lack of historical vulnerabilities, the plugin appears to have been maintained with security in mind. The current version benefits from secure coding practices like prepared statements and capability checks. Nevertheless, the identified output escaping issue and the unsanitized path flow represent tangible risks that should be addressed to further harden the plugin's security.",[327,329],{"reason":328,"points":189},"Low output escaping percentage",{"reason":330,"points":331},"Flow with unsanitized path",5,"2026-03-17T00:00:11.548Z",{"wat":334,"direct":341},{"assetPaths":335,"generatorPatterns":337,"scriptPaths":338,"versionParams":339},[336],"\u002Fwp-content\u002Fplugins\u002Fbasic-bilingual\u002Fstyle.css",[],[],[340],"basic-bilingual\u002Fstyle.css?ver=",{"cssClasses":342,"htmlComments":344,"htmlAttributes":345,"restEndpoints":347,"jsGlobals":348,"shortcodeOutput":349},[343],"other-excerpt",[],[346],"lang",[],[],[]]