{"id":322632,"date":"2026-07-30T12:25:18","date_gmt":"2026-07-30T12:25:18","guid":{"rendered":"https:\/\/de.wordpress.org\/plugins\/adengine-free-ad-inserter-manager\/"},"modified":"2026-07-30T14:37:59","modified_gmt":"2026-07-30T14:37:59","slug":"hafenstudios-ads","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/hafenstudios-ads\/","author":23511618,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.8.5","stable_tag":"1.8.5","tested":"7.0.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Hafenstudios Ads \u2013 Ad Placement Manager","header_author":"hafenstudios","header_description":"A privacy-aware ad placement manager for WordPress: automatic placements, shortcodes, widgets, targeting, consent handling, lazy loading and lightweight stats.","assets_banners_color":"129986","last_updated":"2026-07-30 14:37:59","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/hafenstudios.com\/","header_author_uri":"https:\/\/hafenstudios.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":44,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.8.4":{"tag":"1.8.4","author":"hafenstudios","date":"2026-07-30 12:24:57"},"1.8.5":{"tag":"1.8.5","author":"hafenstudios","date":"2026-07-30 14:37:59"}},"upgrade_notice":{"1.8.4":"<p>Renaming only: the plugin is now called &quot;Hafenstudios Ad Placement Manager&quot;. Your ad blocks, settings and statistics stay exactly as they are.<\/p>","1.8.2":"<p>The legacy <code>[sai_ad]<\/code> and <code>[sai_ad_group]<\/code> shortcodes from AdEngine were removed. If you still have them in your content, switch to <code>[adjet_ad]<\/code> and <code>[adjet_ad_group]<\/code>.<\/p>","1.8.1":"<p>Maintenance release: valid declared URLs and all JavaScript\/CSS moved into properly enqueued files. No action needed.<\/p>","1.8.0":"<p>Adds a built-in cookie-consent banner (Google Consent Mode v2) and a native SendFox newsletter integration. Both optional; the plugin stays fully functional without them.<\/p>","1.7.0":"<p>Big update since 1.6.0: template gallery, guided assistant with optional AI copy suggestions (bring your own Anthropic key, stored encrypted), a Google AdSense assistant, site-wide overlays and first-run onboarding. Free stays fully functional.<\/p>","1.6.0":"<p>Adds the manage_adjet capability, a REST API and a statistics chart. No action required.<\/p>","1.5.0":"<p>Rebrand with a refreshed admin interface. Existing ad blocks, settings and stats are migrated automatically.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3628546,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3628546,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3628546,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3628546,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"adjet\/ad":{"name":"adjet\/ad","title":"Adjet Ad"}},"tagged_versions":["1.8.4","1.8.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3628784,"resolution":"1","location":"assets","locale":"","width":2560,"height":1600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3628784,"resolution":"2","location":"assets","locale":"","width":2560,"height":1600},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3628784,"resolution":"3","location":"assets","locale":"","width":2560,"height":1600},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3628784,"resolution":"4","location":"assets","locale":"","width":2560,"height":1600},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3628784,"resolution":"5","location":"assets","locale":"","width":2560,"height":1600},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3628784,"resolution":"6","location":"assets","locale":"","width":2560,"height":1600}},"screenshots":{"1":"The ad blocks overview with impressions, clicks and CTR per block.","2":"The template gallery: pick a purpose, fill in the fields, no HTML needed.","3":"The guided editor with live preview while you type.","4":"The AdSense assistant: Publisher-ID, slot and format, nothing else.","5":"Placement options, device targeting and consent gating for a single block.","6":"Local statistics with the 30-day chart, rendered server-side without any external service."}},"plugin_section":[],"plugin_tags":[2533,321,148,368,80],"plugin_category":[35,43],"plugin_contributors":[273845],"plugin_business_model":[],"class_list":["post-322632","plugin","type-plugin","status-publish","hentry","plugin_tags-ad-manager","plugin_tags-ads","plugin_tags-adsense","plugin_tags-advertising","plugin_tags-shortcode","plugin_category-advertising","plugin_category-customization","plugin_contributors-hafenstudios","plugin_committers-hafenstudios"],"banners":{"banner":"https:\/\/ps.w.org\/hafenstudios-ads\/assets\/banner-772x250.png?rev=3628546","banner_2x":"https:\/\/ps.w.org\/hafenstudios-ads\/assets\/banner-1544x500.png?rev=3628546","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/hafenstudios-ads\/assets\/icon-128x128.png?rev=3628546","icon_2x":"https:\/\/ps.w.org\/hafenstudios-ads\/assets\/icon-256x256.png?rev=3628546","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/hafenstudios-ads\/assets\/screenshot-1.png?rev=3628784","caption":"The ad blocks overview with impressions, clicks and CTR per block."},{"src":"https:\/\/ps.w.org\/hafenstudios-ads\/assets\/screenshot-2.png?rev=3628784","caption":"The template gallery: pick a purpose, fill in the fields, no HTML needed."},{"src":"https:\/\/ps.w.org\/hafenstudios-ads\/assets\/screenshot-3.png?rev=3628784","caption":"The guided editor with live preview while you type."},{"src":"https:\/\/ps.w.org\/hafenstudios-ads\/assets\/screenshot-4.png?rev=3628784","caption":"The AdSense assistant: Publisher-ID, slot and format, nothing else."},{"src":"https:\/\/ps.w.org\/hafenstudios-ads\/assets\/screenshot-5.png?rev=3628784","caption":"Placement options, device targeting and consent gating for a single block."},{"src":"https:\/\/ps.w.org\/hafenstudios-ads\/assets\/screenshot-6.png?rev=3628784","caption":"Local statistics with the 30-day chart, rendered server-side without any external service."}],"raw_content":"<!--section=description-->\n<p>Hafenstudios Ad Placement Manager is a friendly ad operations cockpit for WordPress publishers and part of the hafenstudios plugin family. Create multiple ad blocks, choose where they appear, control who sees them, and keep an eye on impressions, clicks and CTR \u2014 without sending any analytics to an external server.<\/p>\n\n<h4>Highlights<\/h4>\n\n<ul>\n<li>Clean, focused admin interface with brand bar, KPI cards and clear navigation tabs.<\/li>\n<li>Automatic placements before content, after content, after paragraph N or after the first image.<\/li>\n<li>Manual placement via shortcode <code>[adjet_ad id=\"1\"]<\/code>, widget or Gutenberg block.<\/li>\n<li>Weighted ad rotation via <code>[adjet_ad_group name=\"header\"]<\/code>.<\/li>\n<li>Device targeting for desktop, tablet and mobile.<\/li>\n<li>Post type targeting plus exclusions for posts, categories, tags and custom terms.<\/li>\n<li>Optional \"Advertisement\" label with editable text.<\/li>\n<li>Lazy loading via IntersectionObserver.<\/li>\n<li>Consent-cookie gating for common consent tools.<\/li>\n<li>Optional anonymous local impression and click statistics.<\/li>\n<li>Campaign scheduling with optional start and end time.<\/li>\n<li>One-click duplicate and pause\/activate actions for faster workflow.<\/li>\n<li>Code editor and admin-side live preview that does not execute scripts.<\/li>\n<li>AdSense Wizard: Publisher-ID + Slot-ID are enough for responsive AdSense units.<\/li>\n<li>Optional AdSense Auto Ads script loader with clear settings.<\/li>\n<li>30-day statistics chart (impressions and clicks) rendered inline, no external libraries.<\/li>\n<li>Least-privilege capability <code>manage_adjet<\/code> with an optional editor-access toggle.<\/li>\n<li>Template gallery with ready-to-use banners, notification bars and popups; premium templates unlock with Pro.<\/li>\n<li>REST API (<code>adjet\/v1<\/code>) for ad blocks, stats and settings via Application Passwords.<\/li>\n<li>Guided assistant with optional AI copy suggestions (bring your own Anthropic Claude key).<\/li>\n<li>Built-in cookie-consent banner template with Google Consent Mode v2 support.<\/li>\n<li>Native SendFox newsletter opt-in (bring your own token) with double opt-in.<\/li>\n<li>First-run onboarding that routes you to AdSense, a template or your own HTML.<\/li>\n<li>JSON import and export with file-size\/type checks.<\/li>\n<li>Clean uninstall routine.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>The plugin does not contact hafenstudios servers from the WordPress admin area or frontend. Optional statistics are stored locally in your own WordPress database. Third-party ad code pasted into an ad block may contact external services; configure your consent solution accordingly.<\/p>\n\n<h4>External services<\/h4>\n\n<p>The plugin works fully without any external service. Two integrations are optional and only ever run when you explicitly enable them:<\/p>\n\n<ul>\n<li>Google AdSense (frontend): if you configure an AdSense ad unit or enable Auto Ads, the frontend loads Google's <code>adsbygoogle.js<\/code> from <code>pagead2.googlesyndication.com<\/code> to display ads. Terms: https:\/\/www.google.com\/adsense\/localized-terms \u2014 Privacy: https:\/\/policies.google.com\/privacy<\/li>\n<li>Anthropic Claude (admin only, bring-your-own-key): the optional \"AI suggestions\" button in the ad assistant sends the template's field labels, your site name\/description and any brief you type to the Anthropic API (<code>api.anthropic.com<\/code>) to generate draft ad copy. This happens only after you enter your own Anthropic API key in the settings and click the button; no key, no request. The key is stored encrypted and used server-side only. Terms: https:\/\/www.anthropic.com\/legal\/commercial-terms \u2014 Privacy: https:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<li>SendFox (bring-your-own-token): if you connect SendFox in the settings and use the \"Newsletter (SendFox)\" template, visitor email addresses submitted through that form are sent to the SendFox API (<code>api.sendfox.com<\/code>) to be added to your list. This happens only when you have connected a SendFox access token. The token is stored encrypted and used server-side only. Terms: https:\/\/sendfox.com\/tos \u2014 Privacy: https:\/\/sendfox.com\/privacy<\/li>\n<\/ul>\n\n<h4>Security<\/h4>\n\n<p>The plugin uses capability checks, nonces for form actions, sanitization on save and escaping on output. Raw ad code is only stored unchanged for users with the <code>unfiltered_html<\/code> capability.<\/p>\n\n<h4>Localization<\/h4>\n\n<ul>\n<li>Source language: German (default UI).<\/li>\n<li>Included starter translations: English, Spanish, French and Dutch.<\/li>\n<\/ul>\n\n<h4>Support<\/h4>\n\n<p>This plugin is developed and maintained by hafenstudios. For direct support you can reach us by e-mail at moin@hafenstudios.com or by phone at +49 174 3935796. You are also welcome to use the plugin support forum on WordPress.org.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the ZIP via Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open the new \"Hafenstudios Ads\" menu and create your first ad block.<\/li>\n<li>Optional: configure the ad label, consent-cookie settings and local statistics.<\/li>\n<\/ol>\n\n<p>Upgrading from \"AdEngine \u2013 Free Ad Inserter &amp; Manager\"? Just install this plugin \u2014 your ad blocks, settings and statistics are migrated automatically on first load.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20work%20with%20adsense%3F\"><h3>Does this plugin work with AdSense?<\/h3><\/dt>\n<dd><p>Yes. You can either paste original AdSense code as custom code or use the AdSense Wizard with your Publisher-ID and Slot-ID. The plugin then generates a responsive ad unit and loads the AdSense script on the frontend when needed.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20manually%3F\"><h3>Can I use it manually?<\/h3><\/dt>\n<dd><p>Yes. Use the shortcode <code>[adjet_ad id=\"1\"]<\/code>, the shortcode <code>[adjet_ad_group name=\"header\"]<\/code>, the included widget or the Gutenberg block.<\/p><\/dd>\n<dt id=\"does%20it%20replace%20a%20consent%20tool%3F\"><h3>Does it replace a consent tool?<\/h3><\/dt>\n<dd><p>No. The plugin can wait for a configured consent cookie, but it does not provide legal advice or a cookie banner.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20track%20users%20externally%3F\"><h3>Does this plugin track users externally?<\/h3><\/dt>\n<dd><p>No. The optional statistics feature stores anonymous aggregated counts locally in your WordPress database.<\/p><\/dd>\n<dt id=\"can%20editors%20manage%20ads%20without%20being%20administrators%3F\"><h3>Can editors manage ads without being administrators?<\/h3><\/dt>\n<dd><p>Yes. Enable \"Zugriff f\u00fcr Redakteure\" in Settings to grant the <code>manage_adjet<\/code> capability to the editor role. Administrators always have access.<\/p><\/dd>\n<dt id=\"is%20there%20a%20rest%20api%3F\"><h3>Is there a REST API?<\/h3><\/dt>\n<dd><p>Yes. The <code>adjet\/v1<\/code> namespace exposes ad blocks (<code>\/blocks<\/code>, CRUD), statistics (<code>\/stats<\/code>) and settings (<code>\/settings<\/code>). Authenticate with an Application Password; access requires the <code>manage_adjet<\/code> capability.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.8.5<\/h4>\n\n<ul>\n<li>The plugin now speaks English by default: all source strings were translated from German to English, and German ships as a complete translation that loads automatically on German sites. Before this release, every site saw the German interface regardless of its language.<\/li>\n<li>Removed the broken placeholder translation files (en\/es\/fr\/nl) that did not actually translate anything; Spanish, French and Dutch will return via wordpress.org language packs.<\/li>\n<li>Added the six directory screenshots.<\/li>\n<\/ul>\n\n<h4>1.8.4<\/h4>\n\n<ul>\n<li>Renamed the plugin to \"Hafenstudios Ads \u2013 Ad Placement Manager\" and changed the text domain to <code>hafenstudios-ads<\/code>, following the WordPress.org plugin review. No functional changes.<\/li>\n<li>Internal prefixes, option names, shortcodes and the REST namespace are deliberately unchanged, so existing ad blocks, settings and statistics keep working.<\/li>\n<\/ul>\n\n<h4>1.8.2<\/h4>\n\n<ul>\n<li>Removed the legacy <code>[sai_ad]<\/code> and <code>[sai_ad_group]<\/code> shortcode aliases, so every public name this plugin registers now carries the <code>adjet<\/code> prefix. Use <code>[adjet_ad]<\/code> and <code>[adjet_ad_group]<\/code> instead.<\/li>\n<li>The Google AdSense loader is now enqueued with <code>wp_enqueue_script()<\/code> only; the custom script-tag filter that added the optional <code>crossorigin<\/code> attribute has been dropped.<\/li>\n<li>Documented the output escaping contract of the ad render pipeline directly at the shortcode, block and <code>the_content<\/code> callbacks.<\/li>\n<\/ul>\n\n<h4>1.8.1<\/h4>\n\n<ul>\n<li>Fixed the Plugin URI and the SendFox terms link so all declared URLs resolve.<\/li>\n<li>Moved all frontend and admin JavaScript and CSS out of inline <code>&lt;script&gt;<\/code>\/<code>&lt;style&gt;<\/code> tags into properly enqueued files: base styles now load as <code>public\/frontend.css<\/code>, the AdSense unit call, the popup\/exit-intent\/cookie-consent behaviour and the admin live preview run from enqueued scripts. No behaviour change.<\/li>\n<li>Hardened and documented output escaping around the ad render pipeline (generated markup is escaped; raw custom code stays gated behind the <code>unfiltered_html<\/code> capability, like the core Custom HTML block).<\/li>\n<li>Switched all direct database access to prepared statements using the <code>%i<\/code> table-identifier placeholder, which raises the minimum WordPress version to 6.2.<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>Added a built-in Cookie-Consent banner template: visitors accept or decline, it sets the consent signal your consent-gated ads wait for, and it emits Google Consent Mode v2 updates. No separate consent plugin needed.<\/li>\n<li>Added a native SendFox newsletter integration (bring your own SendFox access token): the new \"Newsletter (SendFox)\" template subscribes visitors straight into your chosen list. SendFox handles the double opt-in.<\/li>\n<li>Added a public opt-in endpoint protected by nonce, honeypot and rate limiting; the token is stored encrypted and used server-side only.<\/li>\n<li>Generalised the assistant with a third mapper type (provider) so more email providers can hook in later.<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>Added a template gallery with ready-to-use ads, banners, notification bars and popups (free), plus Pro-badged premium templates and a Free\/Pro foundation with an upgrade page. Free stays fully functional.<\/li>\n<li>Added a guided assistant: pick a template and just fill in fields (title, text, link, colour) with a live preview instead of writing HTML. Field values are stored and stay editable; \"HTML selbst bearbeiten\" switches to the raw editor.<\/li>\n<li>Added a guided Google AdSense assistant: enter Publisher-ID, Slot-ID and format, and the plugin builds the responsive unit.<\/li>\n<li>Added optional AI copy suggestions in the assistant: bring your own Anthropic Claude API key and let the AI draft titles, texts and button labels as fully editable suggestions. One request per click, never automatic; the key is stored encrypted (libsodium) and used server-side only.<\/li>\n<li>Added a site-wide \"overlay\" placement so popups, exit-intent and notification bars display and self-trigger.<\/li>\n<li>Added a first-run onboarding panel that routes you to AdSense, a template or your own HTML.<\/li>\n<li>Refined the admin: save-in-editor confirmation, compact icon actions, a collapsible \"Erweitert\" section, and Hans, the hand-drawn hafenstudios captain mascot.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Added a least-privilege capability <code>manage_adjet<\/code> (administrators keep access via a manage_options fallback) plus an optional editor-access toggle in Settings.<\/li>\n<li>Added a REST API under <code>adjet\/v1<\/code> for ad blocks, statistics and settings (Application Password auth).<\/li>\n<li>Added a 30-day impressions\/clicks chart to the statistics page, rendered inline as SVG without external libraries.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Rebranded the plugin as part of the hafenstudios plugin family.<\/li>\n<li>Redesigned the admin interface in the clean hafenstudios\/Linkjet design language (brand bar, tab navigation, teal accent, KPI and content cards).<\/li>\n<li>Migrated shortcodes to <code>[adjet_ad]<\/code> and <code>[adjet_ad_group]<\/code>; the legacy <code>[sai_ad]<\/code> \/ <code>[sai_ad_group]<\/code> shortcodes keep working as aliases.<\/li>\n<li>Automatic data migration from a previous AdEngine install (ad blocks, settings and statistics).<\/li>\n<li>Added object-cache-backed statistics totals to reduce database load.<\/li>\n<li>Fixed AdSense script enqueue to always carry a version and cleaned up Plugin Check notices.<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>Renamed the public plugin title to comply with WordPress.org naming restrictions.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Refined admin interface with cleaner hero, glass navigation, stronger cards and better responsive behavior.<\/li>\n<li>Improved backend usability, visual hierarchy and AdSense onboarding cues.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added AdSense Wizard for easy responsive AdSense ad units using Publisher-ID and Slot-ID.<\/li>\n<li>Added optional AdSense Auto Ads frontend loader.<\/li>\n<li>Added dynamic Gutenberg block for manual placements.<\/li>\n<li>Added weighted ad rotation groups.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Added campaign scheduling with optional start\/end time.<\/li>\n<li>Added one-click duplicate and pause\/activate actions.<\/li>\n<li>Added automatic placement after the first image.<\/li>\n<li>Added WordPress code editor integration and a safer admin-side live preview.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added optional local statistics toggle.<\/li>\n<li>Hardened import flow with JSON extension and file-size validation.<\/li>\n<li>Improved security posture around raw ad code.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added backend styling with hero area and KPI cards.<\/li>\n<li>Added localization starter files.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added label, AMP exclusion, server-side device detection, minimum word count, max-per-post, exclusion lists, lazy loading, consent gating, stats, import\/export and uninstall routine.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial version.<\/li>\n<\/ul>","raw_excerpt":"Place and manage ads and AdSense blocks with auto-placement, shortcodes, targeting, consent gating, lazy loading and local stats.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/322632","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=322632"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/hafenstudios"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=322632"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=322632"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=322632"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=322632"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=322632"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=322632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}