{"id":239769,"date":"2025-09-03T07:24:23","date_gmt":"2025-09-03T07:24:23","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/diana-greenconnect\/"},"modified":"2025-09-08T12:12:40","modified_gmt":"2025-09-08T12:12:40","slug":"diana-greenconnect","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/diana-greenconnect\/","author":23293330,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.9","stable_tag":"1.0.9","tested":"6.8.5","requires":"6.7","requires_php":"7.4","requires_plugins":null,"header_name":"Diana GreenConnect","header_author":"zuugleservices","header_description":"Diana GreenConnect is a trip-planning block that lets users schedule transport to and from activities with time constraints like start time, end time, and duration.","assets_banners_color":"516d99","last_updated":"2025-09-08 12:12:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/zuugle-services.com\/en\/diana-widget\/","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":0,"downloads":628,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"zuugleservices","date":"2025-09-03 07:23:48"},"1.0.3":{"tag":"1.0.3","author":"zuugleservices","date":"2025-09-03 07:50:16"},"1.0.4":{"tag":"1.0.4","author":"zuugleservices","date":"2025-09-03 08:00:10"},"1.0.5":{"tag":"1.0.5","author":"zuugleservices","date":"2025-09-03 08:56:45"},"1.0.6":{"tag":"1.0.6","author":"zuugleservices","date":"2025-09-03 09:15:36"},"1.0.7":{"tag":"1.0.7","author":"zuugleservices","date":"2025-09-03 09:47:20"},"1.0.8":{"tag":"1.0.8","author":"zuugleservices","date":"2025-09-03 10:02:31"},"1.0.9":{"tag":"1.0.9","author":"zuugleservices","date":"2025-09-08 12:12:40"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3355131,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3355131,"resolution":"1544x500","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":{"diana-greenconnect\/diana-greenconnect":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"diana-greenconnect\/diana-greenconnect","version":"1.0.9","title":"Diana GreenConnect Widget","category":"widgets","icon":"location-alt","description":"Integrates the Diana GreenConnect Widget to plan transit for activities.","keywords":["travel","transit","activity","planning","green"],"supports":{"html":false,"align":["wide","full"]},"attributes":{"align":{"type":"string","default":""},"activityName":{"type":"string","default":"My Awesome Activity"},"activityType":{"type":"string","default":"General"},"activityStartLocation":{"type":"string","default":"47.7262, 13.0421"},"activityStartLocationType":{"type":"string","enum":["coordinates","address","station"],"default":"coordinates"},"activityEndLocation":{"type":"string","default":"47.7048, 13.0387"},"activityEndLocationType":{"type":"string","enum":["coordinates","address","station"],"default":"coordinates"},"activityEarliestStartTime":{"type":"string","default":"05:00:00"},"activityLatestStartTime":{"type":"string","default":"14:00:00"},"activityEarliestEndTime":{"type":"string","default":"12:00:00"},"activityLatestEndTime":{"type":"string","default":"20:00:00"},"activityDurationMinutes":{"type":"integer","default":120},"activityStartLocationDisplayName":{"type":"string","default":""},"activityEndLocationDisplayName":{"type":"string","default":""},"timezone":{"type":"string","default":"Europe\/Vienna"},"activityStartTimeLabel":{"type":"string","default":""},"activityEndTimeLabel":{"type":"string","default":""},"apiBaseUrl":{"type":"string","default":"https:\/\/api.zuugle-services.net"},"language":{"type":"string","enum":["EN","DE"],"default":"EN"},"overrideUserStartLocation":{"type":"string","default":""},"overrideUserStartLocationType":{"type":"string","enum":["coordinates","address","station"],"default":"address"},"displayStartDate":{"type":"string","default":""},"displayEndDate":{"type":"string","default":""},"destinationInputName":{"type":"string","default":""},"containerMaxHeight":{"type":"string","default":"620px"},"multiday":{"type":"boolean","default":false},"overrideActivityStartDate":{"type":"string","default":""},"overrideActivityEndDate":{"type":"string","default":""},"activityDurationDaysFixed":{"type":"integer","default":0},"cacheUserStartLocation":{"type":"boolean","default":true},"userStartLocationCacheTTLMinutes":{"type":"integer","default":15},"share":{"type":"boolean","default":true},"allowShareView":{"type":"boolean","default":true},"shareURLPrefix":{"type":"string","default":""}},"textdomain":"diana-greenconnect","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css"}},"tagged_versions":["1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3355131,"resolution":"1","location":"assets","locale":""}},"screenshots":{"1":"This screen shot represents a preview header of what the initial Widget Page would look like."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[20323,7140,54351,249,162],"plugin_category":[39,43],"plugin_contributors":[247301],"plugin_business_model":[],"class_list":["post-239769","plugin","type-plugin","status-publish","hentry","plugin_tags-green","plugin_tags-planning","plugin_tags-transit","plugin_tags-travel","plugin_tags-widget","plugin_category-business","plugin_category-customization","plugin_contributors-zuugleservices","plugin_committers-zuugleservices"],"banners":[],"icons":{"svg":"https:\/\/ps.w.org\/diana-greenconnect\/assets\/icon.svg?rev=3355131","icon":"https:\/\/ps.w.org\/diana-greenconnect\/assets\/icon.svg?rev=3355131","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/diana-greenconnect\/assets\/screenshot-1.png?rev=3355131","caption":"This screen shot represents a preview header of what the initial Widget Page would look like."}],"raw_content":"<!--section=description-->\n<p>Diana GreenConnect is a WordPress plugin that provides a Gutenberg block to seamlessly integrate the powerful <a href=\"https:\/\/github.com\/zuugle-services\/DianaWidget\">DianaWidget Activity Transit Planner<\/a> into your WordPress pages and posts. It allows users to plan public transport to and from activities with specific time constraints like start times, end times, and duration.<\/p>\n\n<p>This plugin acts as a wrapper for the <a href=\"https:\/\/github.com\/zuugle-services\/DianaWidget\">DianaWidget<\/a>, a sophisticated JavaScript library designed for activity-based transit planning. By using the \"Diana GreenConnect Widget\" block, you can easily embed this functionality into your content, allowing your site visitors to:<\/p>\n\n<ul>\n<li>Find transit connections to a predefined activity.<\/li>\n<li>Specify their starting location with autocomplete suggestions.<\/li>\n<li>Select a date for their travel using an adaptive calendar.<\/li>\n<li>View connection results with clear timelines and transport modes.<\/li>\n<\/ul>\n\n<p>The plugin handles secure API authentication with Zuugle Services by allowing administrators to store Client ID and Client Secret in WordPress settings. These credentials are then used server-side to fetch an API token, which is passed to the widget. Each block instance can be configured with unique activity details directly within the WordPress editor.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><strong>Gutenberg Block &amp; Shortcode:<\/strong> Easily add the widget anywhere using the block editor or a flexible shortcode for use in the Classic Editor, page builders, or theme files.<\/li>\n<li><strong>Secure API Credential Management:<\/strong> Store your Zuugle Services Client ID and Client Secret securely in WordPress settings. API tokens are fetched and handled server-side.<\/li>\n<li><strong>Customizable Activity Parameters:<\/strong> For each block instance, you can configure:\n\n<ul>\n<li>Activity Name and Type<\/li>\n<li>Start and End Locations (coordinates or address)<\/li>\n<li>Display Names for locations<\/li>\n<li>Earliest and Latest Start\/End Times for the activity<\/li>\n<li>Activity Duration<\/li>\n<li>Timezone and Language<\/li>\n<li>Custom labels for start\/end times<\/li>\n<li>Multiday and date override settings<\/li>\n<\/ul><\/li>\n<li><strong>Dynamic Widget Loading:<\/strong> The widget script is loaded from the official CDN.<\/li>\n<li><strong>Sharing:<\/strong> Allows users to share their planned journey via a unique link.<\/li>\n<li><strong>Multiple Widget Instances:<\/strong> Supports multiple Diana GreenConnect blocks on a single page, each with its own configuration.<\/li>\n<li><strong>Responsive Design:<\/strong> Leverages the responsive capabilities of the core DianaWidget.<\/li>\n<\/ul>\n\n<h3>About the DianaWidget JavaScript Library<\/h3>\n\n<p>The core functionality is provided by the <code>DianaWidget<\/code>, a standalone JavaScript library. For more detailed information about the widget's features, its own configuration options (which this plugin exposes), styling, and architecture, please refer to its GitHub repository:\n<a href=\"https:\/\/github.com\/zuugle-services\/DianaWidget\">https:\/\/github.com\/zuugle-services\/DianaWidget<\/a><\/p>\n\n<h3>Configuration<\/h3>\n\n<h4>1. Getting Your API Credentials<\/h4>\n\n<p>To use the Diana GreenConnect widget, you first need a Client ID and Client Secret. These are used to securely connect to the Zuugle Services API.<\/p>\n\n<ol>\n<li><strong>Register on the Dashboard<\/strong>: Go to the <a href=\"https:\/\/zuugle-services.com\">zuugle-services.com<\/a> dashboard and sign up for an account.<\/li>\n<li><strong>Application Creation<\/strong>: Once your registration is complete, an \"Application\" will be created for you in the Zuugle Services backend.<\/li>\n<li><strong>Find Your Credentials<\/strong>: Log in to your dashboard and navigate to the API credentials or application settings section. There you will find your unique <code>Client ID<\/code> and <code>Client Secret<\/code>.<\/li>\n<\/ol>\n\n<p>The <code>Client ID<\/code> is a public identifier, but the <code>Client Secret<\/code> is confidential and must be kept secure. This plugin stores it safely in your WordPress database and never exposes it to the public.<\/p>\n\n<h4>2. Plugin Setup<\/h4>\n\n<p>Once you have your credentials:<\/p>\n\n<ol>\n<li>Navigate to <code>Settings<\/code> &gt; <code>Diana GreenConnect<\/code> in your WordPress admin area.<\/li>\n<li>Enter your <code>Client ID<\/code> and <code>Client Secret<\/code> into the respective fields.<\/li>\n<li>Save the settings. Your plugin is now ready to use.<\/li>\n<\/ol>\n\n<h3>How to Use<\/h3>\n\n<h3>Using the Gutenberg Block<\/h3>\n\n<ol>\n<li><strong>Add the Block:<\/strong>\n\n<ul>\n<li>Open a page or post in the WordPress block editor.<\/li>\n<li>Click the <code>+<\/code> icon to add a new block.<\/li>\n<li>Search for \"Diana GreenConnect Widget\" and select it.<\/li>\n<\/ul><\/li>\n<li><strong>Configure the Block:<\/strong>\n\n<ul>\n<li>With the block selected, use the Inspector Controls (sidebar on the right) to set the specific details for the activity.<\/li>\n<\/ul><\/li>\n<li><strong>Save and View:<\/strong> Save your page\/post. The Diana GreenConnect Block will appear on the frontend.<\/li>\n<\/ol>\n\n<h3>Using the Shortcode<\/h3>\n\n<p>You can embed the widget using the <code>[diana_greenconnect_widget]<\/code> shortcode. This is ideal for the Classic Editor, page builders (like Elementor or Divi), or widget areas.<\/p>\n\n<p>All attributes from the Gutenberg block are available. Convert the attribute name to all lowercase. For example, <code>activityName<\/code> becomes <code>activityname<\/code>.<\/p>\n\n<p><strong>Example:<\/strong>\n    [diana_greenconnect_widget activityname=\"Museum Visit\" activitydurationminutes=\"120\" activitystartlocation=\"Museum Address\" activitystartlocationtype=\"address\"]<\/p>\n\n<p><strong>Important:<\/strong> For the user start location caching to work with a shortcode, you <strong>must<\/strong> provide a unique and stable <code>widgetid<\/code>.<\/p>\n\n<p><strong>Example with a stable ID:<\/strong>\n    [diana_greenconnect_widget widgetid=\"main-museum-widget\" activityname=\"Museum Visit\" ...]<\/p>\n\n<p><strong>Example of how to use this function:<\/strong><\/p>\n\n<p>You can also render the Diana GreenConnect Widget block programmatically within your PHP code using the helper function <code>diana_greenconnect_get_block_html()<\/code>.<\/p>\n\n<p><strong>Example:<\/strong><\/p>\n\n<pre><code>&lt;?php\n$my_widget_attributes = [\n    'widgetId'                         =&gt; 'main-sidebar-hiking-widget',\n\n    \/\/ Required\n    'activityName'                     =&gt; 'Marktschellenberger Eish\u00f6hle im Untersberg',\n    'activityType'                     =&gt; 'Hiking',\n    'activityStartLocation'            =&gt; '47.72620173410345, 13.042174020936743',\n    'activityStartLocationType'        =&gt; 'coordinates',\n    'activityEndLocation'              =&gt; '47.70487271915757, 13.038710343883247',\n    'activityEndLocationType'          =&gt; 'coordinates',\n    'activityEarliestStartTime'        =&gt; '08:00:00',\n    'activityLatestStartTime'          =&gt; '14:00:00',\n    'activityEarliestEndTime'          =&gt; '10:00:00',\n    'activityLatestEndTime'            =&gt; '20:00:00',\n    'activityDurationMinutes'          =&gt; '300',\n\n    \/\/ Optional\n    'activityStartLocationDisplayName' =&gt; 'Untersbergbahn Talstation',\n    'activityEndLocationDisplayName'   =&gt; 'Eish\u00f6hle, Marktschellenberg',\n    'timezone'                         =&gt; 'Europe\/Vienna', \/\/ Set timezone in which all config times are given\n    'activityStartTimeLabel'           =&gt; 'Beginn',\n    'activityEndTimeLabel'             =&gt; 'Ende',\n    'apiBaseUrl'                       =&gt; 'https:\/\/api.zuugle-services.net',\n    'language'                         =&gt; 'EN', \/\/ Currently supported: EN, DE, FR, IT, TH, ES\n    'overrideUserStartLocation'        =&gt; 'Wien, Stephansplatz',\n    'overrideUserStartLocationType'    =&gt; 'address',\n    'displayStartDate'                 =&gt; null,\n    'displayEndDate'                   =&gt; null,\n    'destinationInputName'             =&gt; 'Destination Input Placeholder',\n    'containerMaxHeight'               =&gt; '650px',\n    'hideOverriddenActivityStartDate'  =&gt; true,\n\n    \/\/ Multiday parameters\n    'multiday'                         =&gt; false,\n    'overrideActivityStartDate'        =&gt; \"2025-05-20\", \/\/ Can also be used for single-day date\n    'overrideActivityEndDate'          =&gt; \"2025-05-25\",\n    'activityDurationDaysFixed'        =&gt; 2,\n\n    \/\/ Caching &amp; Sharing parameters\n    'cacheUserStartLocation'           =&gt; true,\n    'userStartLocationCacheTTLMinutes' =&gt; 15,\n    'share'                            =&gt; true,\n    'allowShareView'                   =&gt; true,\n    'shareURLPrefix'                   =&gt; '',\n\n    \/\/ ClientID and ClientSecret are typically managed by the plugin's settings page.\n    \/\/ Only include them here if you need to override for a specific instance.\n    \/\/ 'clientID' =&gt; 'your_client_id_override',\n    \/\/ 'clientSecret' =&gt; 'your_client_secret_override',\n];\n\n$widget_info = diana_greenconnect_get_block_html( $my_widget_attributes );\n\n\/\/ Output the HTML (e.g., in a template file or via a shortcode)\necho $widget_info['html'];\n?&gt;\n<\/code><\/pre>\n\n<p>When using this function, providing a stable <code>widgetId<\/code> is crucial for the caching feature to work correctly.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to external services provided by Zuugle Services GmbH to provide its transit planning functionality.<\/p>\n\n<ul>\n<li><strong>DianaWidget JavaScript Library<\/strong>: The core functionality of this plugin is provided by the <code>DianaWidget<\/code>, a JavaScript library that is loaded from a Content Delivery Network (CDN) at <code>https:\/\/diana.zuugle-services.net\/dist\/DianaWidget.bundle.js<\/code>. This script is loaded on pages where the Diana GreenConnect block is used to display the transit planning widget.<\/li>\n<li><p><strong>Zuugle Services API<\/strong>: To function, the widget needs to communicate with the Zuugle Services API, which has its main endpoint at <code>https:\/\/api.zuugle-services.net<\/code>. This plugin securely handles the authentication with this API.<\/p>\n\n<ul>\n<li><strong>What data is sent and when<\/strong>:\n\n<ul>\n<li>To obtain an access token, the plugin sends a <code>Client ID<\/code> and <code>Client Secret<\/code> (which are configured in the plugin\u2019s settings) to the token endpoint at <code>https:\/\/api.zuugle-services.net\/o\/token\/<\/code>. This happens on the server-side when a user visits a page containing the widget and a valid token is not already cached. No user data is sent in this step.<\/li>\n<li>When a user interacts with the widget to find transit connections, the widget sends the user-specified starting location, the pre-defined activity location, and the selected date and time to the Zuugle Services API to retrieve transit information.<\/li>\n<\/ul><\/li>\n<li><strong>Terms and Privacy<\/strong>:\n\n<ul>\n<li>The use of these external services is subject to the provider\u2019s terms and policies. You can find them here:\n\n<ul>\n<li><strong>Terms of Service (Diana GreenConnect):<\/strong> <a href=\"https:\/\/zuugle-services.com\/en\/terms-of-service\/\">Terms of Service<\/a><\/li>\n<li><strong>Terms &amp; Conditions:<\/strong> <a href=\"https:\/\/zuugle-services.com\/en\/terms\/\">Terms &amp; Conditions<\/a><\/li>\n<li><strong>Privacy Policy:<\/strong> <a href=\"https:\/\/zuugle-services.com\/en\/data-privacy\/\">Data Privacy<\/a><\/li>\n<\/ul><\/li>\n<\/ul><\/li>\n<\/ul><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li><strong>Download:<\/strong> Download the plugin ZIP file from the latest release.<\/li>\n<li><strong>Upload:<\/strong> In your WordPress admin panel, go to <code>Plugins<\/code> &gt; <code>Add New<\/code> &gt; <code>Upload Plugin<\/code>. Choose the ZIP file and click <code>Install Now<\/code>.<\/li>\n<li><strong>Activate:<\/strong> Activate the plugin through the <code>Plugins<\/code> menu in WordPress.<\/li>\n<li><strong>Configure Credentials:<\/strong>\n\n<ul>\n<li>Navigate to <code>Settings<\/code> &gt; <code>Diana GreenConnect<\/code> in your WordPress admin area.<\/li>\n<li>Enter your <code>Client ID<\/code> and <code>Client Secret<\/code> provided by Zuugle Services.<\/li>\n<li>Save the settings and test the connection.<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='where%20do%20i%20get%20a%20client%20id%20and%20client%20secret%3F'><h3>Where do I get a Client ID and Client Secret?<\/h3><\/dt>\n<dd><p>Please see the <strong>\"Getting Your API Credentials\"<\/strong> section under the <strong>Configuration<\/strong> heading for a step-by-step guide. You need to register on the <a href=\"https:\/\/zuugle-services.com\/en\/diana-dashboard\/\">zuugle-services.com<\/a> dashboard to obtain them.<\/p><\/dd>\n<dt id='the%20user%27s%20start%20location%20isn%27t%20being%20saved%2Fcached.%20why%3F'><h3>The user's start location isn't being saved\/cached. Why?<\/h3><\/dt>\n<dd><p>This happens if the widget doesn't have a stable ID. The caching feature relies on a persistent, unique ID for each widget instance.\n* <strong>For Blocks:<\/strong> This is handled automatically. If you have blocks from an older version, open the page and click \"Update\".\n* <strong>For Shortcodes &amp; Programmatic Usage:<\/strong> You <strong>must<\/strong> manually provide a unique and unchanging <code>widgetid<\/code> string in the shortcode or attributes array.<\/p><\/dd>\n<dt id='can%20i%20customize%20the%20appearance%20of%20the%20widget%3F'><h3>Can I customize the appearance of the widget?<\/h3><\/dt>\n<dd><p>Yes. The widget supports theming via CSS custom properties. You can add custom CSS to your theme to override these variables. See the <a href=\"https:\/\/github.com\/zuugle-services\/DianaWidget#styling--theming\">DianaWidget styling documentation<\/a> for details.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<p><strong>1.0.9<\/strong>\n* Fix issue regarding build directory, which does not exist on SVN<\/p>\n\n<p><strong>1.0.8<\/strong>\n* Fix Readme code formatting issues<\/p>\n\n<p><strong>1.0.7<\/strong>\n* Add german translations<\/p>\n\n<p><strong>1.0.6<\/strong>\n* Add settings link to plugin list entry\n* Add shortcode compatibility<\/p>\n\n<p><strong>1.0.5<\/strong>\n* Add promotional box for missing API credentials\n* Add configuration steps to Readme\n* Ajax credential verification<\/p>\n\n<p><strong>1.0.4<\/strong>\n* Update and clarify terms and policy links in Readme<\/p>\n\n<p><strong>1.0.3<\/strong>\n* Fix readme escaping and code formatting<\/p>\n\n<p><strong>1.0.2<\/strong>\n* Fix code according to WordPress plugin review\n* Rename Settings page to only 'Diana GreenConnect', without 'Widget'<\/p>\n\n<p><strong>1.0.1<\/strong>\n* Allow integer values for activityDurationMinutes in attributes<\/p>\n\n<p><strong>1.0.0<\/strong>\n* Initial release with Gutenberg block.\n* Settings page for API Client ID and Secret.\n* Server-side API token fetching and caching.\n* Comprehensive block attributes for widget configuration.\n* Support for multiple widget instances.<\/p>","raw_excerpt":"Diana GreenConnect is a trip-planning block that lets users schedule trips to and from activities with constraints like start\/end time and duration.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/239769","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=239769"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/zuugleservices"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=239769"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=239769"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=239769"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=239769"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=239769"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=239769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}