[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fYkTHPGkvyy1IXP04OWdjFl13CFrsEqJ_IGAF5geOfkI":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":20,"download_link":21,"security_score":13,"vuln_count":22,"unpatched_count":22,"last_vuln_date":23,"fetched_at":24,"vulnerabilities":25,"developer":26,"crawl_stats":23,"alternatives":34,"analysis":35,"fingerprints":245},"remote-data-blocks","Remote Data Blocks","1.4.3","Automattic","https:\u002F\u002Fprofiles.wordpress.org\u002Fautomattic\u002F","\u003Cp>Remote Data Blocks is a WordPress plugin that makes it easy to combine content and remote data in the block editor. Easily register blocks that load data from Airtable, Google Sheets, Shopify, GitHub, or any other API. Your data stays in sync. Built-in caching ensures performance and reliability. \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fremote-data-blocks\u002Fblob\u002Ftrunk\u002Fdocs\u002Fconcepts\u002Findex.md#supported-use-cases\" rel=\"nofollow ugc\">Read more about well-supported use cases.\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fplayground.wordpress.net\u002F?blueprint-url=https:\u002F\u002Fraw.githubusercontent.com\u002FAutomattic\u002Fremote-data-blocks\u002Ftrunk\u002Fblueprint.json\" rel=\"nofollow ugc\">Launch the plugin in WordPress Playground\u003C\u002Fa> and explore. An example API (“Conference Event”) is included, or visit Settings > Remote Data Blocks to add your own. Read our \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fremote-data-blocks\u002Fblob\u002Ftrunk\u002Fdocs\u002Ftutorials\u002Findex.md\" rel=\"nofollow ugc\">tutorials\u003C\u002Fa> to dive in.\u003C\u002Fp>\n\u003Ch3>Requirements\u003C\u002Fh3>\n\u003Cp>PHP 8.1+\u003Cbr \u002F>\nWordPress 6.7+\u003Cbr \u002F>\nA \u003Ca href=\"https:\u002F\u002Fdeveloper.wordpress.org\u002Freference\u002Fclasses\u002Fwp_object_cache\u002F#persistent-cache-plugins\" rel=\"nofollow ugc\">persistent object cache\u003C\u002Fa> is not strictly required, but it is highly recommended for optimal performance and to help avoid rate-limiting from remote data sources. If your WordPress environment does not provide persistent object cache, the plugin will utilize in-memory (per-request) caching.\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>Remote Data Blocks is licensed under the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAutomattic\u002Fremote-data-blocks\u002Fblob\u002Ftrunk\u002FLICENSE\" rel=\"nofollow ugc\">GPLv2 (or later)\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>External services\u003C\u002Fh3>\n\u003Cp>This plugin can connect to one of several API endpoints under your direction. It does not connect to these services if you do not attempt to add a data source.\u003C\u002Fp>\n\u003Cp>It sends user provided inputs to retrieve Google Sheets data from the Google Workspace API.\u003Cbr \u002F>\nThis service is provided by Google Workspace: \u003Ca href=\"https:\u002F\u002Fdevelopers.google.com\u002Fworkspace\u002Fterms\" rel=\"nofollow ugc\">terms of use\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fpolicies.google.com\u002Fprivacy\" rel=\"nofollow ugc\">privacy policy\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>It sends user provided inputs to retrieve Airtable data from the Airtable API.\u003Cbr \u002F>\nThis service is provided by Airtable: \u003Ca href=\"https:\u002F\u002Fwww.airtable.com\u002Fcompany\u002Fdeveloper-terms\" rel=\"nofollow ugc\">terms of use\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fairtable.com\u002Fprivacy\" rel=\"nofollow ugc\">privacy policy\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>It sends user provided inputs to retrieve Shopify products from the Shopify GraphQL API.\u003Cbr \u002F>\nThis service is provided by Shopify: \u003Ca href=\"https:\u002F\u002Fwww.shopify.com\u002Flegal\u002Fapi-terms\" rel=\"nofollow ugc\">terms of use\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fwww.shopify.com\u002Flegal\u002Fprivacy\" rel=\"nofollow ugc\">privacy policy\u003C\u002Fa>.\u003C\u002Fp>\n","Remote Data Blocks makes it easy to combine content and remote data in the block editor. Built-in caching ensures performance and reliability.",70,853,100,1,"2025-12-17T17:04:00.000Z","6.9.4","6.7","8.1",[],"https:\u002F\u002Fremotedatablocks.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fremote-data-blocks.1.4.3.zip",0,null,"2026-03-15T15:16:48.613Z",[],{"slug":27,"display_name":7,"profile_url":8,"plugin_count":28,"total_installs":29,"avg_security_score":30,"avg_patch_time_days":31,"trust_score":32,"computed_at":33},"automattic",213,19158100,92,1384,73,"2026-04-03T23:33:55.258Z",[],{"attackSurface":36,"codeSignals":169,"taintFlows":233,"riskAssessment":234,"analyzedAt":244},{"hooks":37,"ajaxHandlers":165,"restRoutes":166,"shortcodes":167,"cronEvents":168,"entryPointCount":22,"unprotectedCount":22},[38,44,49,53,57,62,66,70,74,79,84,88,90,93,96,99,102,107,111,117,120,123,127,131,134,138,142,145,150,154,158,162],{"type":39,"name":40,"callback":40,"priority":41,"file":42,"line":43},"action","admin_notices",10,"inc\\Editor\\AdminNotices\\AdminNotices.php",35,{"type":39,"name":45,"callback":46,"priority":41,"file":47,"line":48},"init","register_helper_blocks","inc\\Editor\\BlockManagement\\BlockRegistration.php",24,{"type":39,"name":45,"callback":50,"priority":51,"file":47,"line":52},"register_container_blocks",50,25,{"type":39,"name":54,"callback":55,"priority":41,"file":47,"line":56},"enqueue_block_editor_assets","enqueue_block_assets",26,{"type":58,"name":59,"callback":60,"priority":41,"file":47,"line":61},"filter","block_categories_all","add_block_category",27,{"type":39,"name":45,"callback":63,"priority":51,"file":64,"line":65},"register_block_bindings","inc\\Editor\\DataBinding\\BlockBindings.php",37,{"type":58,"name":67,"callback":68,"priority":41,"file":64,"line":69},"register_block_type_args","inject_context_for_synced_patterns",38,{"type":58,"name":71,"callback":72,"priority":41,"file":64,"line":73},"render_block_context","anonymous",114,{"type":39,"name":75,"callback":76,"file":77,"line":78},"the_content","render_frontend_fields","inc\\Editor\\DataBinding\\InlineBindings.php",9,{"type":58,"name":80,"callback":81,"priority":41,"file":82,"line":83},"query_vars","register_query_var","inc\\Editor\\DataBinding\\Pagination.php",17,{"type":39,"name":45,"callback":85,"priority":41,"file":86,"line":87},"register_meta","inc\\Editor\\PatternEditor\\PatternEditor.php",11,{"type":39,"name":54,"callback":54,"priority":41,"file":86,"line":89},12,{"type":39,"name":45,"callback":91,"file":92,"line":52},"register_remote_data_block","inc\\ExampleApi\\ExampleApi.php",{"type":39,"name":45,"callback":94,"priority":41,"file":95,"line":89},"register_blocks","inc\\Integrations\\Airtable\\AirtableIntegration.php",{"type":39,"name":45,"callback":94,"priority":41,"file":97,"line":98},"inc\\Integrations\\Google\\Sheets\\GoogleSheetsIntegration.php",13,{"type":39,"name":45,"callback":94,"priority":41,"file":100,"line":101},"inc\\Integrations\\Shopify\\ShopifyIntegration.php",14,{"type":58,"name":103,"callback":104,"priority":105,"file":106,"line":83},"vip_block_data_api__sourced_block_result","resolve_remote_data",5,"inc\\Integrations\\VipBlockDataApi\\VipBlockDataApi.php",{"type":58,"name":108,"callback":109,"priority":41,"file":106,"line":110},"vip_block_data_api__after_parse_blocks","add_debug_info",18,{"type":58,"name":112,"callback":113,"priority":114,"file":115,"line":116},"qm\u002Fcollectors","add_collectors",90,"inc\\Logging\\QueryMonitor\\QueryMonitor.php",16,{"type":58,"name":118,"callback":119,"priority":114,"file":115,"line":83},"qm\u002Foutputter\u002Fhtml","add_html_outputters",{"type":58,"name":121,"callback":122,"priority":114,"file":115,"line":110},"qm\u002Foutputter\u002Fraw","add_raw_outputters",{"type":58,"name":124,"callback":125,"priority":41,"file":115,"line":126},"qm\u002Ftrace\u002Fignore_class","ignore_classes",19,{"type":58,"name":128,"callback":129,"priority":105,"file":130,"line":83},"qm\u002Foutput\u002Fmenus","admin_menu","inc\\Logging\\QueryMonitor\\RdbMainOutputHtml.php",{"type":39,"name":129,"callback":132,"file":133,"line":126},"add_options_page","inc\\PluginSettings\\PluginSettings.php",{"type":39,"name":135,"callback":136,"file":133,"line":137},"admin_enqueue_scripts","enqueue_settings_assets",20,{"type":39,"name":139,"callback":140,"file":133,"line":141},"rest_api_init","init_rest_routes",23,{"type":39,"name":139,"callback":143,"file":144,"line":116},"register_rest_routes","inc\\REST\\RemoteDataController.php",{"type":39,"name":146,"callback":147,"priority":41,"file":148,"line":149},"activated_plugin","track_plugin_activation","inc\\Telemetry\\Telemetry.php",61,{"type":39,"name":151,"callback":152,"priority":41,"file":148,"line":153},"deactivated_plugin","track_plugin_deactivation",62,{"type":39,"name":155,"callback":156,"priority":41,"file":148,"line":157},"save_post","track_remote_data_blocks_usage",63,{"type":39,"name":159,"callback":160,"priority":41,"file":148,"line":161},"remote_data_blocks_track_event","record_event",66,{"type":39,"name":163,"callback":164,"file":148,"line":11},"admin_init","enable_javascript_library",[],[],[],[],{"dangerousFunctions":170,"sqlUsage":171,"outputEscaping":173,"fileOperations":226,"externalRequests":227,"nonceChecks":22,"capabilityChecks":228,"bundledLibraries":229},[],{"prepared":22,"raw":22,"locations":172},[],{"escaped":174,"rawEcho":52,"locations":175},48,[176,180,182,184,185,187,189,191,193,195,197,199,201,203,206,207,209,211,212,214,216,218,220,222,223],{"file":177,"line":178,"context":179},"inc\\Logging\\QueryMonitor\\RdbBlockBindingOutputHtml.php",30,"raw output",{"file":177,"line":181,"context":179},32,{"file":177,"line":183,"context":179},34,{"file":177,"line":65,"context":179},{"file":177,"line":186,"context":179},39,{"file":177,"line":188,"context":179},40,{"file":177,"line":190,"context":179},83,{"file":177,"line":192,"context":179},86,{"file":177,"line":194,"context":179},106,{"file":177,"line":196,"context":179},131,{"file":177,"line":198,"context":179},135,{"file":177,"line":200,"context":179},138,{"file":177,"line":202,"context":179},153,{"file":204,"line":205,"context":179},"inc\\Logging\\QueryMonitor\\RdbHttpRequestOutputHtml.php",28,{"file":204,"line":178,"context":179},{"file":204,"line":208,"context":179},33,{"file":204,"line":210,"context":179},36,{"file":204,"line":69,"context":179},{"file":204,"line":213,"context":179},99,{"file":204,"line":215,"context":179},118,{"file":204,"line":217,"context":179},122,{"file":204,"line":219,"context":179},125,{"file":204,"line":221,"context":179},145,{"file":130,"line":178,"context":179},{"file":224,"line":225,"context":179},"inc\\Logging\\QueryMonitor\\RdbValidationOutputHtml.php",22,15,2,8,[230],{"name":231,"version":23,"knownCves":232},"Guzzle",[],[],{"summary":235,"deductions":236},"The remote-data-blocks plugin v1.4.3 exhibits a strong security posture with zero recorded vulnerabilities and a clean static analysis report regarding critical code signals like dangerous functions, raw SQL queries, and taint flows. The absence of known CVEs and a history devoid of past issues suggest a well-maintained and secure plugin.  However, the analysis does reveal areas for improvement, particularly concerning output escaping, where 34% of outputs are not properly escaped. While the plugin implements capability checks, the complete absence of nonce checks on AJAX handlers, if any were present, combined with the lack of observed AJAX entry points, warrants attention. The bundled Guzzle library should also be monitored for potential outdated versions and associated vulnerabilities.  Overall, the plugin is in good standing, but enhancing output escaping and staying vigilant about bundled libraries are key areas to focus on for continued robust security.",[237,239,242],{"reason":238,"points":105},"High percentage of unescaped output",{"reason":240,"points":241},"Absence of nonce checks on entry points",3,{"reason":243,"points":241},"Bundled library (Guzzle) requires monitoring","2026-03-16T21:35:28.464Z",{"wat":246,"direct":257},{"assetPaths":247,"generatorPatterns":252,"scriptPaths":253,"versionParams":254},[248,249,250,251],"\u002Fwp-content\u002Fplugins\u002Fremote-data-blocks\u002Fbuild\u002Fpattern-editor\u002Findex.js","\u002Fwp-content\u002Fplugins\u002Fremote-data-blocks\u002Fbuild\u002Fpattern-editor\u002Findex.css","\u002Fwp-content\u002Fplugins\u002Fremote-data-blocks\u002Fbuild\u002Fremote-data-blocks\u002Findex.js","\u002Fwp-content\u002Fplugins\u002Fremote-data-blocks\u002Fbuild\u002Fremote-data-blocks\u002Findex.css",[],[248,250],[255,256],"remote-data-blocks\u002Fbuild\u002Fpattern-editor\u002Findex.asset.php?ver=","remote-data-blocks\u002Fbuild\u002Fremote-data-blocks\u002Findex.asset.php?ver=",{"cssClasses":258,"htmlComments":259,"htmlAttributes":260,"restEndpoints":262,"jsGlobals":267,"shortcodeOutput":269},[],[],[261],"data-block-type",[263,264,265,266],"\u002Fwp-json\u002Fremote-data-blocks\u002Fv1\u002Fauth\u002Fgoogle\u002Ftoken","\u002Fwp-json\u002Fremote-data-blocks\u002Fv1\u002Fdata-sources","\u002Fwp-json\u002Fremote-data-blocks\u002Fv1\u002Fdata-sources\u002F(\\d+)","\u002Fwp-json\u002Fremote-data-blocks\u002Fv1\u002Fdata-sources\u002F(\\d+)\u002Fdelete",[268],"window.remoteDataBlocksPatternEditor",[]]