{"id":318746,"date":"2026-06-06T23:13:47","date_gmt":"2026-06-06T23:13:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/snorkle-embed\/"},"modified":"2026-06-06T23:13:19","modified_gmt":"2026-06-06T23:13:19","slug":"snorkle-embed","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/snorkle-embed\/","author":23506518,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Snorkle Embed","header_author":"Snorkle","header_description":"Embed Snorkle interactive biomedical visuals as Gutenberg blocks.","assets_banners_color":"","last_updated":"2026-06-06 23:13:19","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/snorkle.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":45,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"snorklelabs","date":"2026-06-06 23:13:19"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3563443,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3563443,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":{"snorkle-embed\/visual":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"snorkle-embed\/visual","version":"1.0.0","title":"Snorkle Visual","category":"embed","description":"Embed an interactive Snorkle biomedical visual as an iframe.","keywords":["snorkle","embed","iframe","biomedical","3d","interactive"],"supports":{"html":false,"align":["wide","full"]},"attributes":{"visualizationUrl":{"type":"string","default":""},"title":{"type":"string","default":""},"width":{"type":"number","default":640},"height":{"type":"number","default":360},"visualLang":{"type":"string","default":""}},"editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","viewScript":"file:.\/view.js"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Sign in to your Snorkle account directly from the block editor.","2":"Browse your visual library and click a thumbnail to select a visual.","3":"The embedded visual in the editor with size and language controls.","4":"The published visual rendered on the frontend."}},"plugin_section":[],"plugin_tags":[],"plugin_category":[],"plugin_contributors":[266062],"plugin_business_model":[],"class_list":["post-318746","plugin","type-plugin","status-publish","hentry","plugin_contributors-snorklelabs","plugin_committers-snorklelabs"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/snorkle-embed\/assets\/icon-128x128.png?rev=3563443","icon_2x":"https:\/\/ps.w.org\/snorkle-embed\/assets\/icon-256x256.png?rev=3563443","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Snorkle Embed lets users add an interactive <strong>Snorkle Visual<\/strong> block to the WordPress Gutenberg editor. Sign in to your <a href=\"https:\/\/www.snorkle.ai\">Snorkle<\/a> account directly from the block, browse your library of interactive scientific visuals, select one, and publish it as a responsive embedded visual \u2014 no coding required.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Sign in to your Snorkle Labs account without leaving the WordPress editor<\/li>\n<li>Browse your full visual library with thumbnail previews<\/li>\n<li>Paste any valid vis.snorkle.io URL directly to embed a specific visual<\/li>\n<li>Adjustable display width and height<\/li>\n<li>Language selector for anatomy visuals (35 languages supported)<\/li>\n<li>Session persists per WordPress login \u2014 sign in once, works across all posts and pages<\/li>\n<li>Works on any theme \u2014 outputs a clean, responsive iframe<\/li>\n<\/ul>\n\n<h4>External Services<\/h4>\n\n<p>This plugin relies on two external services, both operated by Snorkle Labs. No data is sent to any third party.<\/p>\n\n<p><strong>1. Snorkle Authentication &amp; Library API (api.snorkle.io)<\/strong><\/p>\n\n<p>This service is used to authenticate the WordPress editor user with their Snorkle account and to retrieve their library of visuals.<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> The user's email address and password are sent directly from their browser to api.snorkle.io over HTTPS when they click \"Sign in\". After login, a session token is stored in WordPress user meta and sent on subsequent requests to fetch the visual library. No credentials are ever stored in plain text.<\/li>\n<li><strong>When it is sent:<\/strong> Only when the WordPress editor user actively signs in to their Snorkle account from within the block editor, or when the block editor fetches the visual library. Nothing is sent on the frontend to visitors viewing published pages.<\/li>\n<\/ul>\n\n<p><strong>2. Snorkle Visual Embed Service (vis.snorkle.io)<\/strong><\/p>\n\n<p>This service delivers the interactive visual content. It functions the same way as embedding a YouTube or Vimeo video \u2014 the published block outputs a standard HTML iframe pointing to vis.snorkle.io. No plugin code runs on the frontend; the browser loads the iframe directly from the Snorkle service.<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> The iframe URL (which identifies the specific visual). Standard browser request headers (IP address, user agent) are sent by the browser as part of loading any iframe, the same as any embedded content.<\/li>\n<li><strong>When it is sent:<\/strong> Only when a visitor loads a page or post that contains a published Snorkle Visual block.<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/www.snorkle.ai\/privacy\">Snorkle Privacy Policy<\/a> | <a href=\"https:\/\/www.snorkle.ai\/tos\">Snorkle Terms of Service<\/a><\/p>\n\n<h3>Source Code &amp; Building<\/h3>\n\n<p>The complete, human-readable source code for this plugin is included in the <code>src\/<\/code> directory of the plugin package.<\/p>\n\n<p>The JavaScript assets in <code>build\/<\/code> are compiled from <code>src\/<\/code> using <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-scripts\/\">@wordpress\/scripts<\/a> (webpack). To rebuild from source:<\/p>\n\n<ol>\n<li>Install <a href=\"https:\/\/nodejs.org\">Node.js<\/a> 18 or later.<\/li>\n<li>From the plugin directory run: <code>npm install<\/code><\/li>\n<li>Then run: <code>npm run build<\/code><\/li>\n<\/ol>\n\n<p>The entry point is <code>src\/index.js<\/code>. The block metadata is in <code>src\/block.json<\/code>.<\/p>\n\n<!--section=installation-->\n<h4>From the WordPress plugin directory (recommended)<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New Plugin<\/strong> in your WordPress admin.<\/li>\n<li>Search for <strong>Snorkle Embed<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<\/ol>\n\n<h4>Manual installation<\/h4>\n\n<ol>\n<li>Download the plugin zip file.<\/li>\n<li>Go to <strong>Plugins \u2192 Add New Plugin \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Choose the zip file and click <strong>Install Now<\/strong>.<\/li>\n<li>Click <strong>Activate Plugin<\/strong>.<\/li>\n<\/ol>\n\n<h4>After activation<\/h4>\n\n<p>Make sure <strong>pretty permalinks<\/strong> are enabled: go to <strong>Settings \u2192 Permalinks<\/strong>, select any option other than \"Plain\", and click Save. This is required for the plugin's REST API to function.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20snorkle%20account%3F\"><h3>Do I need a Snorkle account?<\/h3><\/dt>\n<dd><p>Yes. You need a Snorkle Labs account at <a href=\"https:\/\/www.snorkle.ai\">snorkle.ai<\/a> to use this plugin. The block will prompt you to sign in when you first add it to a post or page.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20the%20classic%20editor%3F\"><h3>Does this work with the Classic Editor?<\/h3><\/dt>\n<dd><p>No. Snorkle Embed is a Gutenberg block and requires the block editor (WordPress 6.0 or later). It is not compatible with the Classic Editor plugin.<\/p><\/dd>\n<dt id=\"will%20the%20visual%20still%20display%20if%20my%20snorkle%20session%20expires%3F\"><h3>Will the visual still display if my Snorkle session expires?<\/h3><\/dt>\n<dd><p>Yes. Once a visual is saved to a post, it renders as a plain iframe on the frontend regardless of your session status. You only need to be signed in to change or select a new visual within the editor.<\/p><\/dd>\n<dt id=\"can%20i%20embed%20a%20visual%20that%20isn%27t%20in%20my%20library%3F\"><h3>Can I embed a visual that isn't in my library?<\/h3><\/dt>\n<dd><p>Yes. Use the \"Paste URL\" tab in the visual picker to paste any vis.snorkle.io URL directly.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20display%20language%20of%20a%20visual%3F\"><h3>Can I change the display language of a visual?<\/h3><\/dt>\n<dd><p>Some Snorkle visuals (anatomy explorers) support multiple display languages. When a visual supports this, a language dropdown will appear automatically in the block editor. Over 35 languages are supported including Arabic, Chinese, Hebrew, Spanish, French, and more.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20on%20multisite%3F\"><h3>Does this plugin work on multisite?<\/h3><\/dt>\n<dd><p>The plugin has not been formally tested on WordPress multisite. It should work on individual sites within a network, but multisite-specific features are not supported.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20snorkle%20session%20when%20i%20log%20out%20of%20wordpress%3F\"><h3>What happens to my Snorkle session when I log out of WordPress?<\/h3><\/dt>\n<dd><p>Your Snorkle session token is automatically cleared when you log out of WordPress, keeping your accounts in sync.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Gutenberg block with Snorkle account login, visual library browser, and iframe embed.<\/li>\n<li>Paste URL support for embedding any vis.snorkle.io visual.<\/li>\n<li>Language selector for anatomy visuals (35 languages).<\/li>\n<li>Session persists across WordPress login sessions.<\/li>\n<\/ul>","raw_excerpt":"Embed interactive scientific visuals as Gutenberg blocks in any WordPress post or page.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/318746","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=318746"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/snorklelabs"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=318746"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=318746"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=318746"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=318746"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=318746"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=318746"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}