[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fmNM4IqUeQfw4WNxge2iu12JcZLdRB3gbCxb6J9jyo38":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":37,"analysis":126,"fingerprints":151},"arha-routes","Arha Routes","1.5","Atte Liimatainen","https:\u002F\u002Fprofiles.wordpress.org\u002Fattlii\u002F","\u003Cp>WordPress plugin that helps to serve content through REST routes and gives\u003Cbr \u002F>\ncustomizability to developers through filters.\u003C\u002Fp>\n\u003Ch3>Available Routes\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Fpost\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Fpage\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Foptions\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Farchive\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Example queries\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Fpost?post_type=POST_TYPE&slug=SLUG\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Fpage?path=PATH\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Foptions\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Farchive?post_type=POST_TYPE&posts_per_page=POSTS_PER_PAGE&paged=PAGED&orderby=ORDERBY&order=ORDER\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>tax_query and meta_query in archive-route\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ccode>tax_query\u003C\u002Fcode> and \u003Ccode>meta_query\u003C\u002Fcode> are supported and they work how the query is built for it in \u003Ccode>new WP_Query()\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>both needs their values to bes passed in as stringified json\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Multiple post_types in archive-route\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>To pass multiple post_types in archive-route, use syntax that lets PHP read GET-param as an array. https:\u002F\u002Fstackoverflow.com\u002Fa\u002F9547490\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Filters\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\n\u003Cp>To exclude querying specific post types from \u003Ccode>post\u003C\u002Fcode>– and \u003Ccode>archive\u003C\u002Fcode>-routes, you\u003Cbr \u002F>\ncan use following filters:\u003C\u002Fp>\n\u003Cp>`\u003Cbr \u002F>\nadd_filter(‘arha_routes\u002Farchive_excluded_post_types’, ‘exclude_post_types’);\u003Cbr \u002F>\nadd_filter(‘arha_routes\u002Fpost_excluded_post_types’, ‘exclude_post_types’);\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>function exclude_post_types($excluded_post_types) {\u003Cbr \u002F>\n  $excluded_post_types = [‘post’];\u003Cbr \u002F>\n  return $excluded_post_types;\u003Cbr \u002F>\n}\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cul>\n\u003Cli>To format \u003Ccode>post\u003C\u002Fcode>-route’s post before it’s served to client, use \u003Ccode>arha_routes\u002Fformat_post\u003C\u002Fcode>-filter\u003Cbr \u002F>\n`\u003Cbr \u002F>\nadd_filter(‘arha_routes\u002Fformat_post’, ‘format_post’);\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>function format_post($post) {\u003Cbr \u002F>\n  return $post;\u003Cbr \u002F>\n}\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cul>\n\u003Cli>To format \u003Ccode>page\u003C\u002Fcode>-route’s post before it’s served to client, use \u003Ccode>arha_routes\u002Fformat_page\u003C\u002Fcode>-filter\u003Cbr \u002F>\n`\u003Cbr \u002F>\nadd_filter(‘arha_routes\u002Fformat_page’, ‘format_page’);\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>function format_page($page) {\u003Cbr \u002F>\n  return $page;\u003Cbr \u002F>\n}\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>To format \u003Ccode>archive\u003C\u002Fcode>-route’s posts before they are served to client, use \u003Ccode>arha_routes\u002Fformat_archive_post\u003C\u002Fcode>-filter\u003C\u002Fp>\n\u003Cp>\u003Ccode>add_filter('arha_routes\u002Fformat_archive_post', 'format_archive_post');\u003Cbr \u002F>\nfunction format_archive_post($post) {\u003Cbr \u002F>\nreturn $post;\u003Cbr \u002F>\n}\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Ccode>options\u003C\u002Fcode>-route returns empty result by default. To add content to it, use \u003Ccode>arha_routes\u002Fformat_options\u003C\u002Fcode>-filter\u003Cbr \u002F>\n`\u003Cbr \u002F>\nadd_filter(‘arha_routes\u002Fformat_options’, ‘format_options’);\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>function format_options($options) {\u003Cbr \u002F>\n  return $options;\u003Cbr \u002F>\n}\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>By default Arha Routes returns only published content with post-, page- and archive-route, this can be modified by adding following filters.\u003Cbr \u002F>\n`\u003Cbr \u002F>\n\u002F\u002F for archive route\u003Cbr \u002F>\nadd_filter(‘arha_routes\u002Fallowed_post_statuses_archive’, ‘allowed_post_statuses’);\u003Cbr \u002F>\n\u002F\u002F for post route\u003Cbr \u002F>\nadd_filter(‘arha_routes\u002Fallowed_post_statuses_post’, ‘allowed_post_statuses’);\u003Cbr \u002F>\n\u002F\u002F for page route\u003Cbr \u002F>\nadd_filter(‘arha_routes\u002Fallowed_post_statuses_page’, ‘allowed_post_statuses’);\u003Cbr \u002F>\nfunction allowed_post_statuses($post_statuses) {\u003Cbr \u002F>\n\u002F\u002F … change post_statuses array\u003C\u002Fp>\n\u003Cp>return $post_statuses;\u003Cbr \u002F>\n}\u003Cbr \u002F>\n`\u003Cbr \u002F>\nAfter adding setting up these filters, request can include “post_status” parameter and it will be compared to $post_statuses array.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>SearchWP\u003C\u002Fh3>\n\u003Cp>Arha Routes supports SearchWP-plugin, which lets WP users to make keyword search engine for their content.\u003C\u002Fp>\n\u003Cp>Activating SearchWP-plugin adds optional keyword-search functionality to \u003Ccode>archive\u003C\u002Fcode>-route. This is done by adding \u003Ccode>s=KEYWORD\u003C\u002Fcode> to the route\u003Cbr \u002F>\n– Example: \u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Farchive?post_type=products&posts_per_page=10&paged=1&orderby=date&order=ASC&s=monitor\u003C\u002Fcode>\u003C\u002Fp>\n\u003Ch3>Polylang\u003C\u002Fh3>\n\u003Cp>Arha Routes supports Polylang-plugin, which allows users to create content in multiple languages.\u003C\u002Fp>\n\u003Cp>Activating Polylang changes how endpoints work:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>All routes require additional \u003Ccode>lang\u003C\u002Fcode>-param\n\u003Cul>\n\u003Cli>Example: \u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Farchive?post_type=products&posts_per_page=10&paged=1&orderby=date&order=ASC&lang=en\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Ccode>page\u003C\u002Fcode>-route doesn’t support language prefix in path\n\u003Cul>\n\u003Cli>Example: Permalink \u003Ccode>\u002Fzh\u002Finfo\u003C\u002Fcode>, use like this \u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Fpage?path=\u002Finfo&lang=zh\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Example: Permalink \u003Ccode>\u002Fen\u002Finfo\u002Ftest\u003C\u002Fcode>, use like this \u003Ccode>\u002Fwp-json\u002Farha\u002Fv1\u002Fpage?path=\u002Finfo\u002Ftest&lang=zh\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Ccode>options\u003C\u002Fcode>-route passes \u003Ccode>lang\u003C\u002Fcode>-param forward to \u003Ccode>arha_routes\u002Fformat_options\u003C\u002Fcode>-filter\u003Cbr \u002F>\n\u003Ccode>add_filter('arha_routes\u002Fformat_options', 'format_options', 10, 2);\u003Cbr \u002F>\nfunction format_options($options, $lang) {\u003Cbr \u002F>\nreturn $options;\u003Cbr \u002F>\n}\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Polylang + SearchWP\u003C\u002Fh3>\n\u003Cp>In order to make these two plugins work together, you need to add extra plugin to WP installation.\u003C\u002Fp>\n\u003Cp>https:\u002F\u002Fsearchwp.com\u002Fextensions\u002Fpolylang-integration\u002F\u003C\u002Fp>\n","Wordpress plugin that helps to serve content through REST routes and gives customizability to developers through filters.",10,1338,0,"2020-05-15T06:18:00.000Z","5.3.21","5.0","7.1",[19,20,21,22,23],"bilingual","endpoint","language","multilingual","rest","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Farha-routes.zip",85,null,"2026-03-15T14:54:45.397Z",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":33,"avg_security_score":26,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"attlii",3,110,30,84,"2026-04-05T20:43:40.555Z",[38,59,76,90,110],{"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":24,"tags":53,"homepage":56,"download_link":57,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":58},"js-composer-qtranslate-x","WPBakery Visual Composer & qTranslate-X","1.0","John Clause","https:\u002F\u002Fprofiles.wordpress.org\u002Fjohnclause\u002F","\u003Cp>Enables \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fqtranslate-x\u002F\" rel=\"ugc\">qTranslate-X\u003C\u002Fa> multilingual framework for plugin \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjs-composer-qtranslate-x\" rel=\"ugc\">WPBakery Visual Composer\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>At least version 3.3 of \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fqtranslate-x\u002F\" rel=\"ugc\">qTranslate-X\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FqTranslate-Team\u002Fqtranslate-x\u002Farchive\u002F3.2.9.9.4.zip\" rel=\"nofollow ugc\">alpha pre-release\u003C\u002Fa> is required.\u003C\u002Fp>\n\u003Cp>This plugin is currently a work in progress, please review the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjs-composer-qtranslate-x\u002Fother_notes\u002F\" rel=\"ugc\">Known Issues\u003C\u002Fa> and report the features, which did not work for you.\u003C\u002Fp>\n\u003Ch3>Known Issues\u003C\u002Fh3>\n","Enables multilingual framework for plugin \"WPBakery Visual Composer\".",8000,149576,64,11,"2017-11-28T08:32:00.000Z","4.1.42","4.0",[19,54,55,21,22],"i18n","l10n","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fjs-composer-qtranslate-x","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fjs-composer-qtranslate-x.1.0.zip","2026-03-15T15:16:48.613Z",{"slug":60,"name":61,"version":62,"author":63,"author_profile":64,"description":65,"short_description":66,"active_installs":67,"downloaded":68,"rating":13,"num_ratings":13,"last_updated":69,"tested_up_to":70,"requires_at_least":71,"requires_php":24,"tags":72,"homepage":74,"download_link":75,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":58},"multilingual-text","Multilingual Text","1.4","Sibin Grasic","https:\u002F\u002Fprofiles.wordpress.org\u002Fseebeen\u002F","\u003Cp>Just tag parts of your text to be in different languages, and a flag will appear next to the text and allows users to switch between them.\u003C\u002Fp>\n\u003Cp>No other elements of the blog will be translated.\u003C\u002Fp>\n\u003Cp>Use \u003Ccode>[:gb]\u003C\u002Fcode> to specify that the following text part is english, or use any other two char language code.\u003Cbr \u002F>\nTo use one text block in multiple languages use e.g. \u003Ccode>[:gb,de]\u003C\u002Fcode>, which is handy for parts like images.\u003Cbr \u002F>\nWrite \u003Ccode>[:*]\u003C\u002Fcode> to use the block in all (within the text already known) languages.\u003Cbr \u002F>\nYou can without any problem mix many of those tags. e.g. \u003Ccode>[:gb]english-intro[:de]german-intro[:*]common image[...]\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Optionally also the title of a text can be multilingual, but requires theme modification.\u003C\u002Fp>\n\u003Cp>The flags can be placed:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>next to the text. This is the default and do work out of the box.\u003C\u002Fli>\n\u003Cli>next to the title. This requires a template change.\u003C\u002Fli>\n\u003Cli>an other place. If you would like to place e.g. the flags in a widget (which is included).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Thanks\u003C\u002Fh3>\n\u003Cp>Thanks to:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>zorun for the flags\u003C\u002Fli>\n\u003Cli>Tamas, Anton for beta testing\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Contributing\u003C\u002Fh3>\n\u003Cp>You may overwork the readme and also the other texts… that would be great.\u003C\u002Fp>\n\u003Cp>If you have ideas\u002Fbugs please contact me.\u003C\u002Fp>\n\u003Ch3>Code\u003C\u002Fh3>\n\u003Cp>The package also contains an version for PHP5.3+. The file is functional identical to the other one (which only requires PHP 5.2) but makes usage of a nice new feature and is easier to read\u002Fwrite.\u003C\u002Fp>\n\u003Cp>When WordPress requires PHP5.3+ (sometime in the future) that file will be used.\u003C\u002Fp>\n\u003Ch3>Flags\u003C\u002Fh3>\n\u003Cp>The flags are from http:\u002F\u002Fwww.free-country-flags.com\u002F and under CC-BY-SA License (http:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby-sa\u002F3.0\u002F).\u003C\u002Fp>\n","With this plugin you can have a text in multiple languages. Easy to use, no requirements.",40,9633,"2011-09-21T08:38:00.000Z","3.2.1","2.7",[19,21,73,22],"multilanguage","http:\u002F\u002Fwordpress.org\u002Fextend\u002Fplugins\u002Fmultilingual-text\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmultilingual-text.1.4.zip",{"slug":77,"name":78,"version":79,"author":42,"author_profile":43,"description":80,"short_description":81,"active_installs":34,"downloaded":82,"rating":83,"num_ratings":84,"last_updated":85,"tested_up_to":86,"requires_at_least":52,"requires_php":24,"tags":87,"homepage":88,"download_link":89,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":58},"events-made-easy-qtranslate-x","Events Made Easy & qTranslate-X","1.1","\u003Cp>Enables \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fqtranslate-x\u002F\" rel=\"ugc\">qTranslate-X\u003C\u002Fa> multilingual framework for plugin \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fevents-made-easy\u002F\" rel=\"ugc\">Events Made Easy\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>At least version 3.2.2 of \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fqtranslate-x\u002F\" rel=\"ugc\">qTranslate-X\u003C\u002Fa> is required.\u003C\u002Fp>\n","Enables multilingual framework for plugin \"Events Made Easy\".",3407,100,1,"2017-03-31T17:01:00.000Z","4.8.28",[19,54,55,21,22],"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fevents-made-easy-qtranslate-x","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fevents-made-easy-qtranslate-x.1.1.zip",{"slug":91,"name":92,"version":93,"author":94,"author_profile":95,"description":96,"short_description":97,"active_installs":34,"downloaded":98,"rating":99,"num_ratings":100,"last_updated":101,"tested_up_to":102,"requires_at_least":103,"requires_php":104,"tags":105,"homepage":107,"download_link":108,"security_score":109,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":58},"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.",11956,80,4,"2024-11-07T14:39:00.000Z","6.6.5","6.2.0","7.0.0",[19,21,22,106],"translation","https:\u002F\u002Fgithub.com\u002Fdougwollison\u002Fnlingual","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnlingual.2.10.0.1.zip",92,{"slug":111,"name":112,"version":113,"author":114,"author_profile":115,"description":116,"short_description":117,"active_installs":11,"downloaded":118,"rating":13,"num_ratings":13,"last_updated":119,"tested_up_to":120,"requires_at_least":121,"requires_php":24,"tags":122,"homepage":124,"download_link":125,"security_score":26,"vuln_count":13,"unpatched_count":13,"last_vuln_date":27,"fetched_at":58},"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",14173,"2018-05-18T04:19:00.000Z","4.9.29","3.5",[19,21,123,22,106],"languages","http:\u002F\u002Fclimbtothestars.org\u002Fwordpress\u002Fbasic-bilingual\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbasic-bilingual.1.3.5.zip",{"attackSurface":127,"codeSignals":139,"taintFlows":146,"riskAssessment":147,"analyzedAt":150},{"hooks":128,"ajaxHandlers":135,"restRoutes":136,"shortcodes":137,"cronEvents":138,"entryPointCount":13,"unprotectedCount":13},[129],{"type":130,"name":131,"callback":132,"file":133,"line":134},"action","rest_api_init","register_api_endpoints","arha-routes.php",27,[],[],[],[],{"dangerousFunctions":140,"sqlUsage":141,"outputEscaping":143,"fileOperations":13,"externalRequests":13,"nonceChecks":13,"capabilityChecks":13,"bundledLibraries":145},[],{"prepared":84,"raw":13,"locations":142},[],{"escaped":13,"rawEcho":13,"locations":144},[],[],[],{"summary":148,"deductions":149},"The 'arha-routes' plugin v1.5 exhibits an exceptionally strong security posture based on the provided static analysis and vulnerability history. The absence of any identified attack vectors like AJAX handlers, REST API routes, shortcodes, or cron events significantly limits the plugin's exposure to external manipulation. Furthermore, the code signals are overwhelmingly positive, with no dangerous functions, file operations, or external HTTP requests. All SQL queries are properly prepared, and all outputs are correctly escaped, indicating robust data handling practices. The lack of any identified taint flows, regardless of severity, suggests that data is being sanitized effectively, preventing potential injection vulnerabilities.\n\nThe vulnerability history further reinforces this positive assessment, showing zero known CVEs. This lack of historical vulnerabilities, combined with the current clean code analysis, suggests a well-maintained and secure plugin. The absence of common vulnerability types and recent issues points to a consistent commitment to security by the developers. While the plugin has no capability checks or nonce checks, this is understandable given its zero attack surface; there are no obvious points where such checks would be immediately necessary without any exposed entry points.\n\nIn conclusion, the 'arha-routes' plugin v1.5 appears to be remarkably secure. Its strengths lie in its minimal attack surface and the diligent implementation of secure coding practices. The absence of any vulnerabilities, historical or identified in the static analysis, is a significant strength. The only potential area for improvement, though not a current risk due to the lack of attack vectors, would be to consider implementing capability checks if the plugin's functionality were to expand to include user-interactive features in the future. For its current state, the plugin is very low risk.",[],"2026-03-16T23:36:18.545Z",{"wat":152,"direct":157},{"assetPaths":153,"generatorPatterns":154,"scriptPaths":155,"versionParams":156},[],[],[],[],{"cssClasses":158,"htmlComments":159,"htmlAttributes":160,"restEndpoints":161,"jsGlobals":166,"shortcodeOutput":167},[],[],[],[162,163,164,165],"\u002Fwp-json\u002Farha\u002Fv1\u002Fpage","\u002Fwp-json\u002Farha\u002Fv1\u002Fpost","\u002Fwp-json\u002Farha\u002Fv1\u002Foptions","\u002Fwp-json\u002Farha\u002Fv1\u002Farchive",[],[]]