[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f7hFYw51ySaZAIRupJuJD_ZLyAw6dHoo2cXscpxREPjw":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":14,"tags":17,"homepage":23,"download_link":24,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":37,"analysis":142,"fingerprints":359},"simple-punctual-translation","Simple Punctual Translation","1.0.2","Amaury Balmer","https:\u002F\u002Fprofiles.wordpress.org\u002Fmomo360modena\u002F","\u003Cp>A plugin for WordPress that allow to translate any post type in another languages.\u003C\u002Fp>\n\u003Cp>The user features can be summarized in the ability to switch between multiple languages and on the single view of content. Thus, a page can be translated in X languages.\u003C\u002Fp>\n\u003Cp>The architecture chosen for development is fully consistent with WordPress 3.0, we created a content type translation, and we created a taxonomy for the site languages.\u003Cbr \u002F>\nWe customized the WordPress admin console to provide the translation functionality, a bit of AJAX to make the convenient interface. Finally, we created a widget that displays the languages available for the currently loaded content.\u003C\u002Fp>\n\u003Cp>A translator role is automatically created with the plugin, it allows a user to this role only to create and manage translations.\u003C\u002Fp>\n\u003Cp>The plugin offers settings:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Automatic insertion of languages available to the end of the article\u003C\u002Fli>\n\u003Cli>Language detection URL : via a “lang” parameter in the address or via a prefix beginning of the address:\n\u003Cul>\n\u003Cli>http:\u002F\u002Fwww.herewithme.fr\u002Fcontenu\u002F?lang=de\u003C\u002Fli>\n\u003Cli>or http:\u002F\u002Fwww.herewithme.fr\u002Fde\u002Fcontenu\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Enabling translations on their choice of post types\u003C\u002Fli>\n\u003Cli>2 modes for the translation mechanism, which I will explain in FAQ.\u003C\u002Fli>\n\u003C\u002Ful>\n","A plugin for WordPress that allow to translate any post type in another languages. Translate only the single view.",10,10530,0,"","3.1.4","3.0",[18,19,20,21,22],"administration","dropdown","languages","traduction","translation","http:\u002F\u002Fwww.beapi.fr","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsimple-punctual-translation.1.0.2.zip",100,null,"2026-03-15T10:48:56.248Z",[],{"slug":30,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":32,"avg_security_score":33,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"momo360modena",3,10210,95,30,91,"2026-04-05T17:26:31.991Z",[38,63,85,103,123],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":46,"downloaded":47,"rating":48,"num_ratings":49,"last_updated":50,"tested_up_to":51,"requires_at_least":52,"requires_php":53,"tags":54,"homepage":14,"download_link":58,"security_score":59,"vuln_count":60,"unpatched_count":13,"last_vuln_date":61,"fetched_at":62},"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",[20,55,56,57,22],"multilanguage","polylang","translate","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftheme-translation-for-polylang.3.4.9.zip",92,1,"2022-11-28 00:00:00","2026-03-15T15:16:48.613Z",{"slug":64,"name":65,"version":66,"author":67,"author_profile":68,"description":69,"short_description":70,"active_installs":71,"downloaded":72,"rating":73,"num_ratings":74,"last_updated":75,"tested_up_to":76,"requires_at_least":77,"requires_php":78,"tags":79,"homepage":83,"download_link":84,"security_score":25,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":62},"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",[80,20,81,22,82],"events","multilingual","wpml","https:\u002F\u002Fwp-events-plugin.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fevents-manager-wpml.2.0.4.zip",{"slug":57,"name":86,"version":87,"author":88,"author_profile":89,"description":90,"short_description":91,"active_installs":92,"downloaded":93,"rating":13,"num_ratings":13,"last_updated":94,"tested_up_to":95,"requires_at_least":95,"requires_php":14,"tags":96,"homepage":100,"download_link":101,"security_score":102,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":62},"Translate","1.2","Verdi Heinz","https:\u002F\u002Fprofiles.wordpress.org\u002Fver3\u002F","\u003Cp>There are plenty of auto translate plugins, but they leave the content rigid with grammatical errors.  For those needing a solution to translate a WordPress site manually into unlimited languages or versions, WP-Translate is for you.  Using shortcodes, template tags, and a widget, you can easily create a site that will reflect appropriate content, images, links, and text for each language.  You can use simple shortcodes in your content, or customize your templates to change your entire site.  The beautiful thing is that you don’t need to create multiple posts or pages for each language.  All content is filtered off one post\u002Fpage.\u003C\u002Fp>\n\u003Ch3>Changes\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Translate no longer uses commas as delimiters for the parameters, use the | pipe symbol instead.  This caused problems when trying to translate paragraphs with commas.\u003C\u002Fli>\n\u003Cli>Nested shortcodes.  You can now add contact forms, photo galleries and whatever other plugin that uses shortcodes into the [translate] tags.\u003C\u002Fli>\n\u003C\u002Ful>\n","There are plenty of auto translate plugins, but they leave the content rigid with grammatical errors.  For those needing a solution to translate a Wor &hellip;",70,38258,"2009-04-10T14:38:00.000Z","2.7",[97,98,20,99,22],"images","language","tranlate","http:\u002F\u002Fwww.misternifty.com\u002Ftranslate","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftranslate.1.2.zip",85,{"slug":104,"name":105,"version":106,"author":107,"author_profile":108,"description":109,"short_description":110,"active_installs":111,"downloaded":112,"rating":25,"num_ratings":31,"last_updated":113,"tested_up_to":114,"requires_at_least":115,"requires_php":53,"tags":116,"homepage":119,"download_link":120,"security_score":121,"vuln_count":60,"unpatched_count":13,"last_vuln_date":122,"fetched_at":62},"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,"2026-03-13T07:35:00.000Z","6.9.4","5.3",[20,117,81,22,118],"localization","translator","https:\u002F\u002Fsmartcat.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsmartcat-wpml.3.1.77.zip",99,"2025-09-10 18:45:26",{"slug":124,"name":125,"version":126,"author":127,"author_profile":128,"description":129,"short_description":130,"active_installs":131,"downloaded":132,"rating":25,"num_ratings":133,"last_updated":134,"tested_up_to":135,"requires_at_least":136,"requires_php":14,"tags":137,"homepage":14,"download_link":141,"security_score":102,"vuln_count":13,"unpatched_count":13,"last_vuln_date":26,"fetched_at":62},"page-template-filter","Page Template Filter","1.0.0","Mark \u002F t31os","https:\u002F\u002Fprofiles.wordpress.org\u002Ft31os_\u002F","\u003Cp>Adds an additional dropdown menu to the page listing(also works for other hierarchal post types that support page templates) to filter by page template.\u003C\u002Fp>\n","Filter pages or hierarchal custom types by page template.",40,3395,2,"2011-08-18T15:12:00.000Z","3.2.1","3.2",[18,19,138,139,140],"filter","page","template","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpage-template-filter.1.0.zip",{"attackSurface":143,"codeSignals":242,"taintFlows":303,"riskAssessment":344,"analyzedAt":358},{"hooks":144,"ajaxHandlers":238,"restRoutes":239,"shortcodes":240,"cronEvents":241,"entryPointCount":13,"unprotectedCount":13},[145,151,155,160,164,168,172,176,179,183,187,191,194,197,201,205,208,212,216,220,223,226,229,234],{"type":146,"name":147,"callback":148,"priority":11,"file":149,"line":150},"action","post_updated","fixPostparentQuickEdit","inc\\class.admin.php",11,{"type":146,"name":152,"callback":153,"file":149,"line":154},"admin_enqueue_scripts","addRessources",14,{"type":146,"name":156,"callback":157,"priority":158,"file":149,"line":159},"add_meta_boxes","registerMetaBox",999,17,{"type":146,"name":161,"callback":162,"priority":11,"file":149,"line":163},"save_post","saveDatasMetaBoxes",18,{"type":138,"name":165,"callback":166,"priority":11,"file":149,"line":167},"manage_posts_columns","addColumns",21,{"type":146,"name":169,"callback":170,"priority":11,"file":149,"line":171},"manage_posts_custom_column","addColumnValue",22,{"type":138,"name":173,"callback":174,"priority":11,"file":149,"line":175},"post_row_actions","extendActionsList",24,{"type":138,"name":177,"callback":174,"priority":11,"file":149,"line":178},"page_row_actions",25,{"type":146,"name":180,"callback":181,"file":182,"line":150},"admin_menu","addMenu","inc\\class.admin.settings.php",{"type":146,"name":184,"callback":185,"file":182,"line":186},"admin_init","registerSettings",12,{"type":146,"name":188,"callback":189,"priority":60,"file":190,"line":159},"init","Register_CPT","inc\\class.client.php",{"type":146,"name":192,"callback":193,"priority":121,"file":190,"line":171},"generate_rewrite_rules","createRewriteRules",{"type":146,"name":195,"callback":196,"file":190,"line":178},"parse_query","parseQuery",{"type":138,"name":198,"callback":199,"file":190,"line":200},"query_vars","addQueryVar",26,{"type":138,"name":202,"callback":203,"file":190,"line":204},"post_updated_messages","updateMessages",29,{"type":146,"name":206,"callback":207,"priority":11,"file":190,"line":34},"contextual_help","helpText",{"type":146,"name":209,"callback":210,"file":190,"line":211},"template_redirect","determineAutoLanguages",33,{"type":138,"name":213,"callback":214,"priority":11,"file":190,"line":215},"the_posts","translateQueryPosts",207,{"type":138,"name":217,"callback":218,"file":190,"line":219},"the_content","autoDisplayLanguages",337,{"type":138,"name":221,"callback":218,"file":190,"line":222},"the_excerpt",340,{"type":138,"name":224,"callback":218,"file":190,"line":225},"the_content_feed",343,{"type":138,"name":227,"callback":218,"file":190,"line":228},"the_excerpt_rss",344,{"type":146,"name":230,"callback":231,"file":232,"line":233},"widgets_init","anonymous","punctual-translation.php",57,{"type":146,"name":235,"callback":236,"file":232,"line":237},"plugins_loaded","PunctualTranslation_Init",59,[],[],[],[],{"dangerousFunctions":243,"sqlUsage":247,"outputEscaping":255,"fileOperations":13,"externalRequests":13,"nonceChecks":13,"capabilityChecks":31,"bundledLibraries":302},[244],{"fn":245,"file":232,"line":233,"context":246},"create_function","add_action( 'widgets_init', create_function('', 'return register_widget(\"PunctualTranslation_Widget\"",{"prepared":13,"raw":133,"locations":248},[249,252],{"file":190,"line":250,"context":251},268,"$wpdb->get_var() with variable interpolation",{"file":190,"line":253,"context":254},312,"$wpdb->get_results() with variable interpolation",{"escaped":11,"rawEcho":175,"locations":256},[257,260,262,264,266,268,270,272,274,276,278,280,282,285,286,288,290,291,293,295,296,297,299,300],{"file":149,"line":258,"context":259},147,"raw output",{"file":149,"line":261,"context":259},165,{"file":149,"line":263,"context":259},173,{"file":149,"line":265,"context":259},178,{"file":149,"line":267,"context":259},214,{"file":149,"line":269,"context":259},235,{"file":149,"line":271,"context":259},241,{"file":149,"line":273,"context":259},281,{"file":149,"line":275,"context":259},291,{"file":149,"line":277,"context":259},328,{"file":182,"line":279,"context":259},49,{"file":182,"line":281,"context":259},64,{"file":283,"line":284,"context":259},"inc\\class.widget.php",58,{"file":283,"line":111,"context":259},{"file":283,"line":287,"context":259},62,{"file":283,"line":289,"context":259},63,{"file":283,"line":281,"context":259},{"file":283,"line":292,"context":259},66,{"file":283,"line":294,"context":259},102,{"file":283,"line":294,"context":259},{"file":283,"line":294,"context":259},{"file":283,"line":298,"context":259},108,{"file":283,"line":298,"context":259},{"file":301,"line":258,"context":259},"inc\\functions.template.php",[],[304,322,330],{"entryPoint":305,"graph":306,"unsanitizedCount":60,"severity":321},"parseQuery (inc\\class.client.php:193)",{"nodes":307,"edges":318},[308,313],{"id":309,"type":310,"label":311,"file":190,"line":312},"n0","source","$_SERVER['REQUEST_URI']",199,{"id":314,"type":315,"label":316,"file":190,"line":312,"wp_function":317},"n1","sink","wp_redirect() [Open Redirect]","wp_redirect",[319],{"from":309,"to":314,"sanitized":320},false,"medium",{"entryPoint":323,"graph":324,"unsanitizedCount":60,"severity":321},"\u003Cclass.client> (inc\\class.client.php:0)",{"nodes":325,"edges":328},[326,327],{"id":309,"type":310,"label":311,"file":190,"line":312},{"id":314,"type":315,"label":316,"file":190,"line":312,"wp_function":317},[329],{"from":309,"to":314,"sanitized":320},{"entryPoint":331,"graph":332,"unsanitizedCount":13,"severity":343},"\u003Cclass.admin> (inc\\class.admin.php:0)",{"nodes":333,"edges":340},[334,337],{"id":309,"type":310,"label":335,"file":149,"line":336},"$_GET (x2)",193,{"id":314,"type":315,"label":338,"file":149,"line":267,"wp_function":339},"echo() [XSS]","echo",[341],{"from":309,"to":314,"sanitized":342},true,"low",{"summary":345,"deductions":346},"The 'simple-punctual-translation' plugin v1.0.2 presents a mixed security posture.  While the plugin exhibits a small attack surface with no exposed AJAX handlers, REST API routes, shortcodes, or cron events, and no direct file operations or external HTTP requests, significant concerns arise from the code analysis.  The presence of the dangerous `create_function` construct is a notable risk, as it can lead to arbitrary code execution if not handled with extreme care and sanitization, which is not clearly indicated here. Furthermore, all SQL queries are executed without prepared statements, opening the door to SQL injection vulnerabilities.  The low percentage of properly escaped output also suggests a risk of cross-site scripting (XSS) vulnerabilities.",[347,350,352,355],{"reason":348,"points":349},"Dangerous function create_function used",15,{"reason":351,"points":11},"Raw SQL queries without prepared statements",{"reason":353,"points":354},"Low percentage of properly escaped output",8,{"reason":356,"points":357},"No nonce checks found",5,"2026-03-16T23:14:50.514Z",{"wat":360,"direct":369},{"assetPaths":361,"generatorPatterns":364,"scriptPaths":365,"versionParams":366},[362,363],"\u002Fwp-content\u002Fplugins\u002Fsimple-punctual-translation\u002Fressources\u002Fadmin.css","\u002Fwp-content\u002Fplugins\u002Fsimple-punctual-translation\u002Fressources\u002Fadmin.js",[],[363],[367,368],"simple-punctual-translation\u002Fressources\u002Fadmin.css?ver=","simple-punctual-translation\u002Fressources\u002Fadmin.js?ver=",{"cssClasses":370,"htmlComments":372,"htmlAttributes":375,"restEndpoints":381,"jsGlobals":382,"shortcodeOutput":384},[371],"language_duplicate_ajax",[373,374],"\u003C!-- Nothing actually -->","\u003C!-- Nothing actually too. -->",[376,377,378,379,380],"id=\"language_translation\"","name=\"language_translation\"","id=\"language_duplicate_ajax\"","name=\"_meta_language\"","value=\"true\"",[],[383],"translationL10n",[]]