{"id":295770,"date":"2026-05-03T08:36:39","date_gmt":"2026-05-03T08:36:39","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/kurl-yourls\/"},"modified":"2026-07-31T06:44:14","modified_gmt":"2026-07-31T06:44:14","slug":"kurl-short-url-manager-yourls","status":"publish","type":"plugin","link":"https:\/\/pcm.wordpress.org\/plugins\/kurl-short-url-manager-yourls\/","author":20544515,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.8","stable_tag":"1.0.8","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"kURL \u2013 Short URL Manager for YOURLS","header_author":"Gerald Dri\u00dfner","header_description":"Modern YOURLS integration for WordPress with dashboard statistics, bulk link generation, sync and cleanup tools, logging, and editor tools.","assets_banners_color":"080b0f","last_updated":"2026-07-31 06:44:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/drissner.media","rating":5,"author_block_rating":0,"active_installs":20,"downloads":364,"num_ratings":2,"support_threads":1,"support_threads_resolved":1,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"geralddrissner","date":"2026-05-04 19:35:37"},"1.0.1":{"tag":"1.0.1","author":"geralddrissner","date":"2026-05-21 16:42:33"},"1.0.2":{"tag":"1.0.2","author":"geralddrissner","date":"2026-05-21 17:11:01"},"1.0.8":{"tag":"1.0.8","author":"geralddrissner","date":"2026-07-31 06:44:14"}},"upgrade_notice":{"1.0.8":"<p>Admin pages no longer wait for helper verification. The bundled YOURLS Helper remains version 1.1.5, so users already on helper 1.1.5 do not need to replace it.<\/p>","1.0.7":"<p>Improves compatibility when YOURLS returns an already-existing short URL. The bundled helper remains version 1.1.5 and does not need to be replaced when updating from 1.0.6.<\/p>","1.0.6":"<p>After updating WordPress, replace the optional YOURLS helper with bundled version 1.1.5 from <strong>kURL \u2192 Settings<\/strong>. Helper-dependent actions remain disabled until that exact helper version and its capabilities are verified.<\/p>","1.0.5":"<p>The helper remains optional and is included in the WordPress plugin package. If an older helper is detected on YOURLS, kURL blocks helper-dependent actions and directs the administrator to <strong>kURL \u2192 Settings<\/strong>, where the current <code>plugin.php<\/code> can be downloaded or copied.<\/p>","1.0.4":"<p>Install the bundled kURL Helper 1.1.0 on the YOURLS server after updating WordPress. Unversioned helpers and versions older than 1.0.1 are blocked from remote deletion. Version 1.1.0 is required for non-destructive regeneration and all current safety checks.<\/p>","1.0.3":"<p>Fixes remote deletion when using the kURL Helper. If you already installed the helper, replace its <code>plugin.php<\/code> file on the YOURLS server as well.<\/p>","1.0.1":"<p>Updated bundled French translation.<\/p>","1.0.0":"<p>Initial public release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3521347,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3521347,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3521347,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3521347,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.8"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3521368,"resolution":"1","location":"assets","locale":"","width":1600,"height":1069},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3521368,"resolution":"2","location":"assets","locale":"","width":1600,"height":828},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3521368,"resolution":"3","location":"assets","locale":"","width":1600,"height":439},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3521368,"resolution":"4","location":"assets","locale":"","width":371,"height":468}},"screenshots":{"1":"kURL dashboard with connection status, manual shortener, YOURLS statistics, recent activity, and saved shortlinks.","2":"kURL settings page for connecting WordPress to a self-hosted YOURLS installation and selecting supported post types.","3":"Bulk generator for creating short URLs in AJAX batches.","4":"kURL Shortlink box in the WordPress editor for custom slugs, generation, sync, and statistics refresh."}},"plugin_section":[],"plugin_tags":[18996,11104,5530,12095],"plugin_category":[],"plugin_contributors":[261699],"plugin_business_model":[],"class_list":["post-295770","plugin","type-plugin","status-publish","hentry","plugin_tags-custom-links","plugin_tags-shortlinks","plugin_tags-url-shortener","plugin_tags-yourls","plugin_contributors-geralddrissner","plugin_committers-geralddrissner"],"banners":{"banner":"https:\/\/ps.w.org\/kurl-short-url-manager-yourls\/assets\/banner-772x250.png?rev=3521347","banner_2x":"https:\/\/ps.w.org\/kurl-short-url-manager-yourls\/assets\/banner-1544x500.png?rev=3521347","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kurl-short-url-manager-yourls\/assets\/icon-128x128.png?rev=3521347","icon_2x":"https:\/\/ps.w.org\/kurl-short-url-manager-yourls\/assets\/icon-256x256.png?rev=3521347","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kurl-short-url-manager-yourls\/assets\/screenshot-1.png?rev=3521368","caption":"kURL dashboard with connection status, manual shortener, YOURLS statistics, recent activity, and saved shortlinks."},{"src":"https:\/\/ps.w.org\/kurl-short-url-manager-yourls\/assets\/screenshot-2.png?rev=3521368","caption":"kURL settings page for connecting WordPress to a self-hosted YOURLS installation and selecting supported post types."},{"src":"https:\/\/ps.w.org\/kurl-short-url-manager-yourls\/assets\/screenshot-3.png?rev=3521368","caption":"Bulk generator for creating short URLs in AJAX batches."},{"src":"https:\/\/ps.w.org\/kurl-short-url-manager-yourls\/assets\/screenshot-4.png?rev=3521368","caption":"kURL Shortlink box in the WordPress editor for custom slugs, generation, sync, and statistics refresh."}],"raw_content":"<!--section=description-->\n<p>kURL connects your WordPress site to your self-hosted YOURLS installation.<\/p>\n\n<p>The name kURL combines <strong>kurz URL<\/strong> \u2014 \u201cshort URL\u201d in German \u2014 with the familiar term URL. In other words, kURL is built for creating and managing short URLs from WordPress.<\/p>\n\n<p>It lets you create short URLs for posts, pages, and supported custom post types directly from the WordPress admin area. You can generate links manually, create them automatically when content is published, assign custom keywords, refresh click statistics, and process older content in bulk.<\/p>\n\n<p>kURL also includes migration tools for older Better YOURLS data, local logging for troubleshooting, and optional helper code for true remote deletion and safe reverse lookup on the YOURLS side.<\/p>\n\n<p>Requires a self-hosted YOURLS installation with API access. No third-party shortening service is included.<\/p>\n\n<h4>External service and data sent<\/h4>\n\n<p>kURL communicates only with the self-hosted YOURLS API endpoint configured by a WordPress administrator. Depending on the action, WordPress sends the YOURLS signature token, the target URL, an optional title or keyword, or an existing short URL. These data are used to create, inspect, edit, regenerate, or delete links and to retrieve click statistics. The plugin developer does not operate an intermediary service, receive these requests, or add tracking. Storage and processing on the YOURLS server are controlled by that server's operator and configuration.<\/p>\n\n<p>kURL stores logs under <code>wp-content\/uploads\/kurl-short-url-manager-yourls\/<\/code> with a non-guessable filename and Apache\/IIS deny files. If your server uses Nginx, add a deny rule for that directory because Nginx does not read <code>.htaccess<\/code>.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Create short URLs from the WordPress editor.<\/li>\n<li>Automatically create short URLs when content is published.<\/li>\n<li>Use custom keywords when creating short URLs.<\/li>\n<li>Generate short URLs manually for any target URL from the dashboard.<\/li>\n<li>Refresh and store click statistics from YOURLS.<\/li>\n<li>View saved links, latest links, top links, and recent YOURLS activity in the dashboard.<\/li>\n<li>Bulk-generate short URLs for existing content in AJAX batches.<\/li>\n<li>Import legacy data from the Better YOURLS plugin.<\/li>\n<li>Optional versioned YOURLS helper extension for remote deletion, safe long-URL lookup, and non-destructive regeneration.<\/li>\n<li>Activity and error logging for troubleshooting.<\/li>\n<li>Optional short URL column in WordPress content list screens.<\/li>\n<li>Experimental sync and cleanup tools.<\/li>\n<\/ul>\n\n<h3>Credits<\/h3>\n\n<p>French translation: Norbert Jung.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>kurl-short-url-manager-yourls<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install the plugin through the WordPress admin.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>kURL \u2192 Settings<\/strong> in the WordPress admin menu.<\/li>\n<li>Enter your YOURLS domain or API endpoint and your YOURLS signature token.<\/li>\n<li>Choose the post types for which kURL should be enabled.<\/li>\n<li>Save the settings.<\/li>\n<li>Click <strong>Test API<\/strong> to verify the connection.<\/li>\n<\/ol>\n\n<p>For remote deletion, safe reverse lookup, and safe regeneration, use the helper installation section under <strong>kURL \u2192 Settings<\/strong>. The helper is bundled inside the WordPress plugin: download its <code>plugin.php<\/code> directly from that page or copy the displayed code. No separate helper ZIP is required. kURL automatically verifies the installed helper after a plugin update and disables helper-dependent actions until the bundled version and capabilities are detected.<\/p>\n\n<p>By default, kURL uses WordPress's safe HTTP client, which rejects private and loopback API addresses. If WordPress and YOURLS intentionally communicate over a private network, an administrator can opt in to that endpoint with the <code>kurl_allow_private_api_url<\/code> filter after reviewing the SSRF implications.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20does%20kurl%20mean%3F\"><h3>What does kURL mean?<\/h3><\/dt>\n<dd><p>The \u201ck\u201d stands for <strong>kurz<\/strong>, the German word for \u201cshort\u201d. So kURL means \u201cshort URL\u201d.<\/p><\/dd>\n<dt id=\"what%20do%20i%20need%20to%20use%20this%20plugin%3F\"><h3>What do I need to use this plugin?<\/h3><\/dt>\n<dd><p>You need a self-hosted YOURLS installation with API access enabled and a valid signature token.<\/p><\/dd>\n<dt id=\"where%20do%20i%20find%20my%20yourls%20signature%20token%3F\"><h3>Where do I find my YOURLS signature token?<\/h3><\/dt>\n<dd><p>Log in to your YOURLS admin area, open <strong>Tools<\/strong>, and look for the secure passwordless API call section.<\/p><\/dd>\n<dt id=\"does%20kurl%20work%20with%20posts%2C%20pages%2C%20and%20custom%20post%20types%3F\"><h3>Does kURL work with posts, pages, and custom post types?<\/h3><\/dt>\n<dd><p>Yes. You can choose which public post types are enabled in <strong>kURL \u2192 Settings<\/strong>.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20replace%20the%20normal%20wordpress%20shortlink%3F\"><h3>Does this plugin replace the normal WordPress shortlink?<\/h3><\/dt>\n<dd><p>Yes. When a kURL short URL is saved for a post, the plugin filters WordPress shortlink output so the saved YOURLS URL can be used as the WordPress shortlink.<\/p><\/dd>\n<dt id=\"can%20i%20create%20short%20urls%20for%20urls%20that%20are%20not%20wordpress%20posts%3F\"><h3>Can I create short URLs for URLs that are not WordPress posts?<\/h3><\/dt>\n<dd><p>Yes. The dashboard includes a manual shortener where you can create or update a short URL for any target URL.<\/p><\/dd>\n<dt id=\"can%20i%20delete%20short%20urls%20remotely%20from%20wordpress%3F\"><h3>Can I delete short URLs remotely from WordPress?<\/h3><\/dt>\n<dd><p>Only if the optional kURL Helper extension is installed on your YOURLS server. Without it, kURL can unlink the short URL locally in WordPress, but it cannot delete the original entry from YOURLS.<\/p><\/dd>\n<dt id=\"can%20i%20migrate%20from%20better%20yourls%3F\"><h3>Can I migrate from Better YOURLS?<\/h3><\/dt>\n<dd><p>Yes. kURL includes migration tools for importing existing Better YOURLS data. Import first, verify a few posts, and only delete the old Better YOURLS data once everything looks correct.<\/p><\/dd>\n<dt id=\"what%20are%20the%20experimental%20sync%20and%20cleanup%20tools%3F\"><h3>What are the experimental sync and cleanup tools?<\/h3><\/dt>\n<dd><p>They let you compare WordPress content with YOURLS, import matching short URLs into WordPress, and clean stale local meta data. On larger sites, create a database backup before applying reconciliation changes.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Performance: Load the large admin and bulk classes only for WordPress admin, AJAX, and admin-post requests.<\/li>\n<li>Performance: Helper-version verification now runs through protected background AJAX after admin pages render instead of blocking the page-load path.<\/li>\n<li>Safety: Helper-dependent mutations keep their server-side verification gate; background status changes update the visible controls without reloading or discarding unsaved editor\/settings changes.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Treats YOURLS <code>error:url<\/code> responses containing a valid existing short URL as a usable result whether YOURLS delivers them with HTTP 200, 400, or 409. This improves compatibility across YOURLS releases and prevents false creation failures when a long URL already exists.<\/li>\n<li>Completes the bundled German translation for the current administration interface.<\/li>\n<li>The bundled YOURLS helper remains version 1.1.5; no helper update is required for this WordPress-side API fix.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Prevents a saved YOURLS signature from being reused or transmitted when the API endpoint is changed without entering the new endpoint's token.<\/li>\n<li>Normalizes all API requests to a query-free <code>yourls-api.php<\/code> endpoint so URL parameters cannot override the authenticated POST action or response format.<\/li>\n<li>Requires the exact bundled helper version and capabilities before helper-dependent actions run; helper 1.1.5 is included in this release.<\/li>\n<li>Blocks dashboard deletion, regeneration, and in-place updates while a short URL is referenced by WordPress posts.<\/li>\n<li>Validates target and short URLs as complete HTTP(S) URLs throughout the plugin and rejects ambiguous encoded keywords before remote mutations.<\/li>\n<li>Makes helper deletion and regeneration check the exact extracted keyword rather than a potentially different full-URL host alias.<\/li>\n<li>Adds stricter helper URL validation and GPL metadata, retains the complete bounded log window, removes invalid local URL metadata atomically, and guarantees temporary query filters are removed.<\/li>\n<li>Keeps editor keyword fields synchronized with the actual keyword returned by YOURLS and uses an accurate confirmation message for dashboard-only deletion.<\/li>\n<li>Documents the administrator-configured YOURLS service and the data sent to it, handles common pasted YOURLS admin\/API URLs, preserves a working connection when a malformed replacement endpoint is submitted, validates regeneration and dashboard statistics URLs through the same central HTTP(S) rules, and reports invalid URL records removed by cleanup.<\/li>\n<li>Makes helper 1.1.5 refuse delete, preferred-lookup, and regeneration requests whose supplied short URL is not recognized by the configured YOURLS installation, preventing an unrelated host with the same final path segment from identifying a destructive target.<\/li>\n<li>Locks bulk post type, batch size, and overwrite mode while a batch job is running so one job cannot switch data sets or mutation policy between requests.<\/li>\n<li>Rejects array-shaped request fields and malformed capability lists cleanly on both WordPress and YOURLS, instead of allowing PHP warnings or type errors to corrupt an API response.<\/li>\n<li>Removes the WordPress site URL from the outbound API user agent, invalidates legacy metadata caches through the WordPress metadata API, and refuses symlinked log paths during cleanup.<\/li>\n<li>Detects equivalent stored short-URL spellings before mutations, waits for an in-flight AJAX batch to finish before a stopped job can restart, bounds helper verification requests, and prevents cookies or malformed stored\/remote values from influencing helper actions.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Bundles the YOURLS helper source inside the single WordPress plugin package and serves it from Settings as an installable <code>plugin.php<\/code> file.<\/li>\n<li>Adds a protected <strong>Download bundled plugin.php<\/strong> button and retains the copy-to-clipboard option on the Settings page; no separate helper ZIP is needed.<\/li>\n<li>Automatically rechecks the helper immediately after every kURL update and at least once per day.<\/li>\n<li>Revalidates the helper within a short window before helper-dependent actions, instead of trusting an old saved detection flag.<\/li>\n<li>Compares the installed helper version and advertised capabilities with the version bundled in the current WordPress release.<\/li>\n<li>Disables remote deletion, reverse lookup, regeneration, overwrite, and helper-based reconciliation when the helper is outdated, unversioned, incomplete, or no longer reachable.<\/li>\n<li>Shows an administrator notice with a direct link to the built-in helper installation\/update instructions when an outdated helper is detected.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Reworked the YOURLS helper as version 1.1.0. It reports its version and capabilities, uses YOURLS-native keyword and URL handling, preserves case-sensitive base-62 keywords, checks whether a database deletion actually succeeded, and uses official YOURLS lookup functions.<\/li>\n<li>Replaced delete-then-create regeneration with <code>yourls_edit_link()<\/code>. A failed replacement now leaves the existing short URL intact and preserves its click count.<\/li>\n<li>Detects outdated or unversioned helpers and always shows the replacement helper code until the required version is installed.<\/li>\n<li>Tests unsaved API credentials without overwriting a working saved connection. The signature token is no longer rendered into the settings-page HTML.<\/li>\n<li>Uses WordPress safe HTTP requests by default to reduce SSRF risk. Private-network YOURLS installations can explicitly opt in through the <code>kurl_allow_private_api_url<\/code> filter.<\/li>\n<li>Improved empty, HTML, and otherwise invalid JSON response diagnostics.<\/li>\n<li>Verifies a saved short URL before reverse lookup so duplicate long URLs in YOURLS do not silently replace a correct local link.<\/li>\n<li>Fixed Better YOURLS bulk import mode: legacy links are now distinguished from links already managed by kURL, so the import mode can actually migrate them. Bulk overwrite now uses safe helper-based regeneration.<\/li>\n<li>Scoped the bulk and reconciliation cursor filters to their own <code>WP_Query<\/code> instances, preventing unrelated nested queries from inheriting the batch cursor.<\/li>\n<li>Prevented sync and reconciliation from creating replacements or reporting mismatches when verification failed because of a transient API, network, proxy, or authentication error.<\/li>\n<li>Distinguishes a YOURLS \u201cshort URL not found\u201d response from an HTML or empty endpoint 404, so a wrong API path is not treated as a missing link.<\/li>\n<li>Preserves legacy Better YOURLS links during automatic publish handling, clears the legacy fallback after an explicit unlink, and stores the actual returned keyword for generated links.<\/li>\n<li>Keeps a successfully created link when YOURLS adjusts a requested keyword, instead of leaving an untracked remote link after reporting a local error.<\/li>\n<li>Fixed both \u201cGenerate \/ Update\u201d controls so an existing short URL is edited in place through the safe helper instead of calling the create endpoint again.<\/li>\n<li>Prevents post-specific deletion and overwrite from breaking another WordPress post that references the same short URL; shared links are retained or blocked for review.<\/li>\n<li>Makes deletion idempotent: a missing remote entry can be unlinked cleanly, and an outdated helper no longer blocks the editor\u2019s explicitly local-unlink fallback. Shared-link checks preserve case-sensitive base-62 keywords even on case-insensitive WordPress database collations.<\/li>\n<li>Prevents API request parameters from overriding the configured signature, action, or JSON format.<\/li>\n<li>Corrected the editor keyword field\u2019s malformed readonly attribute and aligned remote deletion with WordPress\u2019s destructive post capability.<\/li>\n<li>Hardened log storage with a non-guessable filename, removed the old predictable log after migration, redacted API secrets from captured error bodies, added IIS protection, corrected the documented Nginx path, and made the dashboard count match the seven-day retention window.<\/li>\n<li>Added explicit bundled translation loading, safer endpoint normalization, a bounded API timeout, structured AJAX permission errors, and several smaller consistency checks for enabled post types and API responses.<\/li>\n<li>Random helper regeneration no longer changes YOURLS's shared next-ID counter, avoiding a counter rollback race between concurrent requests.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed remote deletion failing with \"Invalid JSON response from YOURLS\" when the kURL Helper extension was installed. The helper used a WordPress-only function (<code>wp_parse_url<\/code>) that does not exist on the YOURLS server; it now uses the native <code>parse_url<\/code>. Users who already installed the helper must replace its <code>plugin.php<\/code> file on the YOURLS server; updating the WordPress plugin alone does not update the separate YOURLS installation.<\/li>\n<li>Corrected the internal version constant, which was still reporting 1.0.0. This fixes the version shown on the dashboard and ensures the admin CSS\/JS cache-buster advances with each release.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added bundled starter translations for additional languages and cleaned existing German and Spanish translation files.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Updated the bundled French translation. Thanks to Norbert Jung for the contribution.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Manual and automatic short URL creation.<\/li>\n<li>Free-form manual shortener for any URL from the dashboard.<\/li>\n<li>Bulk generation for existing content.<\/li>\n<li>YOURLS statistics refresh and dashboard overview.<\/li>\n<li>Latest and top-link dashboard lists with caching.<\/li>\n<li>Better YOURLS migration tools.<\/li>\n<li>Optional helper extension for remote deletion and safe reverse lookup.<\/li>\n<li>Experimental sync, reconcile, and cleanup tools with AJAX batching.<\/li>\n<li>Bundled starter translations for German, French, and Spanish.<\/li>\n<\/ul>","raw_excerpt":"Connect WordPress to a self-hosted YOURLS instance to create, sync, manage, and track short URLs from the admin area.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/295770","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=295770"}],"author":[{"embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/geralddrissner"}],"wp:attachment":[{"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=295770"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=295770"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=295770"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=295770"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=295770"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcm.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=295770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}