{"id":169196,"date":"2023-01-25T12:53:43","date_gmt":"2023-01-25T12:53:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/easyfonts\/"},"modified":"2026-06-07T13:43:01","modified_gmt":"2026-06-07T13:43:01","slug":"easyfonts","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/easyfonts\/","author":20532876,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.2","stable_tag":"2.0.2","tested":"7.0","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Easy Fonts","header_author":"Uzair","header_description":"Host existing google fonts locally on your server","assets_banners_color":"e8e6f6","last_updated":"2026-06-07 13:43:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/fluxpress.io","header_author_uri":"https:\/\/fluxpress.io","rating":5,"author_block_rating":0,"active_installs":1000,"downloads":13592,"num_ratings":6,"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":"easywpstuff","date":"2023-01-25 16:00:34"},"1.0.1":{"tag":"1.0.1","author":"easywpstuff","date":"2023-01-26 12:34:44"},"1.0.2":{"tag":"1.0.2","author":"easywpstuff","date":"2023-01-28 07:23:13"},"1.0.3":{"tag":"1.0.3","author":"easywpstuff","date":"2023-01-29 15:44:34"},"1.0.4":{"tag":"1.0.4","author":"easywpstuff","date":"2023-02-26 12:13:00"},"1.1.0":{"tag":"1.1.0","author":"easywpstuff","date":"2023-05-24 07:17:15"},"1.1.1":{"tag":"1.1.1","author":"easywpstuff","date":"2023-09-01 12:18:05"},"1.1.2":{"tag":"1.1.2","author":"easywpstuff","date":"2023-12-31 14:12:58"},"1.1.3":{"tag":"1.1.3","author":"easywpstuff","date":"2025-04-08 11:57:45"},"1.1.4":{"tag":"1.1.4","author":"easywpstuff","date":"2025-04-08 11:57:45"},"1.2":{"tag":"1.2","author":"easywpstuff","date":"2025-10-05 17:22:49"},"1.3":{"tag":"1.3","author":"easywpstuff","date":"2026-04-12 08:55:28"},"2.0.0":{"tag":"2.0.0","author":"easywpstuff","date":"2026-06-02 17:52:09"},"2.0.1":{"tag":"2.0.1","author":"easywpstuff","date":"2026-06-05 17:23:02"},"2.0.2":{"tag":"2.0.2","author":"easywpstuff","date":"2026-06-07 13:43:01"}},"upgrade_notice":{"2.0.0":"<p>Major update: real-browser usage measurement, smart preloading, zero-CLS fallbacks, broader font detection (inline\/theme\/external\/webfont.js), subsets, CDN, and a redesigned admin. Recommended for everyone.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3563789,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3563789,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3563789,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3563789,"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.3","1.0.4","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.2","1.3","2.0.0","2.0.1","2.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3562588,"resolution":"1","location":"assets","locale":"","width":1614,"height":1517},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3562588,"resolution":"2","location":"assets","locale":"","width":1653,"height":1060},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3562588,"resolution":"3","location":"assets","locale":"","width":1625,"height":1497},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3562588,"resolution":"4","location":"assets","locale":"","width":1664,"height":3011}},"screenshots":{"1":"Dashboard \u2014 hosted font stats, maintenance, and live detector status","2":"Fonts \u2014 used vs unused families with per-weight Load and Preload control","3":"Settings \u2014 subsets, font-display, CDN, inline CSS, and more","4":"Usage \u2014 what actually renders, measured in real browsers"}},"plugin_section":[],"plugin_tags":[187460,259993,131785,3778,265502],"plugin_category":[54],"plugin_contributors":[216909],"plugin_business_model":[],"class_list":["post-169196","plugin","type-plugin","status-publish","hentry","plugin_tags-core-web-vitals","plugin_tags-font-optimization","plugin_tags-gdpr","plugin_tags-google-fonts","plugin_tags-host-google-fonts-locally","plugin_category-security-and-spam-protection","plugin_contributors-easywpstuff","plugin_committers-easywpstuff"],"banners":{"banner":"https:\/\/ps.w.org\/easyfonts\/assets\/banner-772x250.png?rev=3563789","banner_2x":"https:\/\/ps.w.org\/easyfonts\/assets\/banner-1544x500.png?rev=3563789","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/easyfonts\/assets\/icon-128x128.png?rev=3563789","icon_2x":"https:\/\/ps.w.org\/easyfonts\/assets\/icon-256x256.png?rev=3563789","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/easyfonts\/assets\/screenshot-1.png?rev=3562588","caption":"Dashboard \u2014 hosted font stats, maintenance, and live detector status"},{"src":"https:\/\/ps.w.org\/easyfonts\/assets\/screenshot-2.png?rev=3562588","caption":"Fonts \u2014 used vs unused families with per-weight Load and Preload control"},{"src":"https:\/\/ps.w.org\/easyfonts\/assets\/screenshot-3.png?rev=3562588","caption":"Settings \u2014 subsets, font-display, CDN, inline CSS, and more"},{"src":"https:\/\/ps.w.org\/easyfonts\/assets\/screenshot-4.png?rev=3562588","caption":"Usage \u2014 what actually renders, measured in real browsers"}],"raw_content":"<!--section=description-->\n<p><strong>EasyFonts<\/strong> is the smart way to <strong>host Google Fonts locally<\/strong> in WordPress. Activate it and your Google Fonts are detected, downloaded, and served from your own domain \u2014 no requests to Google, faster loading, and full <strong>GDPR compliance<\/strong>.<\/p>\n\n<p>Unlike basic font plugins, EasyFonts doesn't just self-host blindly. It <strong>measures which fonts actually render in real visitors' browsers<\/strong>, so it can preload your above-the-fold fonts, flag the ones you never use, and generate <strong>zero-CLS metric-matched fallbacks<\/strong> \u2014 the things that actually move your Core Web Vitals (LCP, CLS) scores.<\/p>\n\n<h4>Why host Google Fonts locally?<\/h4>\n\n<ol>\n<li><strong>GDPR \/ DSGVO:<\/strong> German courts have ruled that sending visitor IPs to Google Fonts without consent violates GDPR. Self-hosting removes the connection entirely \u2014 no data leaves your server.<\/li>\n<li><strong>Speed &amp; Core Web Vitals:<\/strong> Every call to <code>fonts.googleapis.com<\/code> and <code>fonts.gstatic.com<\/code> adds DNS lookups, connections, and render-blocking delay that hurt LCP and TTFB. Local hosting kills that latency.<\/li>\n<\/ol>\n\n<h4>What EasyFonts does<\/h4>\n\n<ul>\n<li><strong>Automatic local hosting<\/strong> \u2014 Detects Google Fonts loaded via <code>&lt;link&gt;<\/code> stylesheets, <code>@import<\/code> rules, inline <code>@font-face<\/code>, <strong>theme\/plugin CSS files<\/strong>, <strong>external\/CDN stylesheets<\/strong>, and the <strong>Web Font Loader (webfont.js)<\/strong> \u2014 then downloads and serves them locally.<\/li>\n<li><strong>Combine into one stylesheet<\/strong> \u2014 Merges all hosted font CSS into a single file, removes duplicate <code>@font-face<\/code> rules, and can <strong>inline it as minified CSS<\/strong> so it's not render-blocking.<\/li>\n<li><strong>Used vs Unused font discovery<\/strong> \u2014 Automatically identifies fonts that never render on real pages so you can disable unnecessary downloads and preloads.<\/li>\n<li><strong>Real usage measurement<\/strong> \u2014 A lightweight beacon measures which font families and weights actually render, and which appear above the fold \u2014 directly on your live pages, no loopback crawler.<\/li>\n<li><strong>Smart preloading<\/strong> \u2014 Auto-preloads the above-the-fold fonts that matter (capped, so you never over-preload), boosting LCP.<\/li>\n<li><strong>font-display control<\/strong> \u2014 Force <code>font-display: swap<\/code> (or block, fallback, optional, auto) on every face to fix \"Ensure text remains visible during webfont load.\"<\/li>\n<li><strong>Per-family &amp; per-weight control<\/strong> \u2014 Toggle Load and Preload for any family or individual weight; disable fonts you don't use.<\/li>\n<li><strong>Subset trimming<\/strong> \u2014 Keep only the character sets you need (Latin, Cyrillic, Greek, Vietnamese, Arabic, Devanagari, CJK and more) to cut font weight.<\/li>\n<li><strong>Zero-CLS fallbacks<\/strong> \u2014 Reads each font's real metrics and generates size-matched fallback faces (<code>size-adjust<\/code>, <code>ascent-override<\/code>) to eliminate layout shift while fonts load.<\/li>\n<li><strong>Async \/ JS-injected font blocking<\/strong> \u2014 Optionally catches Google Fonts injected by JavaScript at runtime and self-hosts them too (handles fonts most plugins miss).<\/li>\n<li><strong>Clean resource hints<\/strong> \u2014 Strips now-useless <code>preconnect<\/code>, <code>dns-prefetch<\/code>, and <code>preload<\/code> tags pointing at Google's servers.<\/li>\n<li><strong>Variable font support<\/strong> \u2014 Detects and hosts modern variable fonts as a single optimized file instead of many static weights.<\/li>\n<li><strong>CDN support<\/strong> \u2014 Serve hosted fonts and the stylesheet from your CDN.<\/li>\n<li><strong>Bunny Fonts support<\/strong> \u2014 Also self-hosts fonts from <code>fonts.bunny.net<\/code>.<\/li>\n<li><strong>Import \/ Export settings<\/strong> \u2014 Move your configuration between sites in one click.<\/li>\n<li><strong>Multisite ready<\/strong> \u2014 Works per-site across a network, with tables created automatically for new sites.<\/li>\n<li><strong>WP-CLI<\/strong> \u2014 Scan and manage fonts from the command line.<\/li>\n<li><strong>Page builder &amp; theme compatible<\/strong> \u2014 Elementor, Divi, Bricks, Beaver Builder, WPBakery, Oxygen, plus Astra, GeneratePress, Kadence, Blocksy, and WooCommerce. Editors are automatically excluded so your styling stays intact while you build.<\/li>\n<\/ul>\n\n<h4>Why choose EasyFonts over OMGF and other font plugins?<\/h4>\n\n<ul>\n<li><strong>It measures, not guesses.<\/strong> EasyFonts sees what actually renders in real browsers, so preload and fallbacks are based on data \u2014 not a static guess.<\/li>\n<li><strong>Detection most plugins charge for.<\/strong> Inline CSS, theme\/plugin CSS, external stylesheets, and Web Font Loader detection are <strong>free<\/strong> here \u2014 features that are paid add-ons elsewhere.<\/li>\n<li><strong>Zero-CLS fallbacks for any font<\/strong> \u2014 generated from real font metrics, not limited to a fixed list.<\/li>\n<li><strong>Async JS-injected fonts<\/strong> \u2014 caught and self-hosted, a common gap in other plugins.<\/li>\n<li><strong>Truly zero-config.<\/strong> Activate it and it works; everything else is optional fine-tuning.<\/li>\n<li><strong>No data sent anywhere.<\/strong> All processing is on your server.<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Install and activate EasyFonts.<\/li>\n<li>Open <strong>Easy Fonts<\/strong> in your admin menu.<\/li>\n<li>Click <strong>Optimize now<\/strong> (or just let visitors browse) \u2014 fonts are detected, self-hosted, and measured automatically.<\/li>\n<li>Review <strong>Used vs Unused<\/strong> fonts, fine-tune Load\/Preload, and adjust settings if you like.<\/li>\n<li>Done \u2014 your Google Fonts now load locally, faster, and GDPR-compliant.<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>easyfonts<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install via <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Activate the plugin through <strong>Plugins \u2192 Installed Plugins<\/strong>.<\/li>\n<li>Open <strong>Easy Fonts<\/strong> from the admin menu.<\/li>\n<li>Click <strong>Optimize now<\/strong> or visit your site's front end \u2014 fonts are downloaded and cached automatically.<\/li>\n<li>(Optional) Adjust subsets, font-display, CDN, preloading, and other settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20make%20my%20site%20gdpr%20compliant%20for%20google%20fonts%3F\"><h3>Does this make my site GDPR compliant for Google Fonts?<\/h3><\/dt>\n<dd><p>Yes. Once active, all Google Fonts are served from your own server \u2014 no requests to fonts.googleapis.com or fonts.gstatic.com, so no visitor IPs are sent to Google.<\/p><\/dd>\n<dt id=\"will%20it%20improve%20my%20pagespeed%20%2F%20core%20web%20vitals%20score%3F\"><h3>Will it improve my PageSpeed \/ Core Web Vitals score?<\/h3><\/dt>\n<dd><p>Yes. Removing external font connections, combining (or inlining) the stylesheet, preloading above-the-fold fonts, and adding zero-CLS fallbacks typically improve LCP and CLS in PageSpeed Insights, GTmetrix, and Lighthouse.<\/p><\/dd>\n<dt id=\"how%20is%20easyfonts%20different%20from%20just%20self-hosting%3F\"><h3>How is EasyFonts different from just self-hosting?<\/h3><\/dt>\n<dd><p>EasyFonts measures which fonts actually render in real browsers, then preloads the important ones, flags unused ones, and matches fallback metrics to prevent layout shift \u2014 going well beyond a static download-and-serve.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20my%20theme%20and%20page%20builder%3F\"><h3>Does it work with my theme and page builder?<\/h3><\/dt>\n<dd><p>Yes. It processes the final HTML output, so it catches fonts from any theme, plugin, or builder \u2014 Elementor, Divi, Bricks, Beaver Builder, WPBakery, Oxygen, Astra, GeneratePress, Kadence, and more. Builder editors are automatically excluded so fonts display correctly while editing.<\/p><\/dd>\n<dt id=\"does%20it%20support%20variable%20fonts%3F\"><h3>Does it support variable fonts?<\/h3><\/dt>\n<dd><p>Yes. EasyFonts detects variable fonts and hosts them as a single optimized file instead of many separate weight files.<\/p><\/dd>\n<dt id=\"does%20it%20support%20bunny%20fonts%3F\"><h3>Does it support Bunny Fonts?<\/h3><\/dt>\n<dd><p>Yes. Fonts from fonts.bunny.net are detected and self-hosted alongside Google Fonts.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20cdn%3F\"><h3>Can I use a CDN?<\/h3><\/dt>\n<dd><p>Yes. Point the CDN setting at your pull-zone and the hosted fonts and stylesheet are served through your CDN.<\/p><\/dd>\n<dt id=\"will%20it%20work%20with%20caching%20plugins%3F\"><h3>Will it work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes \u2014 WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, and others. After optimizing, clear your page cache so visitors get the updated HTML.<\/p><\/dd>\n<dt id=\"how%20do%20i%20clear%20the%20font%20cache%3F\"><h3>How do I clear the font cache?<\/h3><\/dt>\n<dd><p>Open <strong>Easy Fonts \u2192 Dashboard<\/strong> and click <strong>Empty cache<\/strong>. Fonts are re-detected automatically on the next visit or via <strong>Optimize now<\/strong>.<\/p><\/dd>\n<dt id=\"does%20it%20handle%20google%20fonts%20from%20multiple%20plugins%20at%20once%3F\"><h3>Does it handle Google Fonts from multiple plugins at once?<\/h3><\/dt>\n<dd><p>Yes. It finds font stylesheets across your whole page \u2014 themes, plugins, and builders \u2014 merges them into one file, and removes duplicates.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>New: per-page font scoping. Each page now loads only the fonts it actually uses. Many themes (e.g. Blocksy) enqueue their whole Google-fonts set on every page; Easy Fonts now measures what each page really renders (in a real browser) and leaves the unused families off that page's stylesheet \u2014 while still hosting them on the pages that do use them. Matching is done at the family level and is self-correcting: a font is scoped out only after the page has been measured, it returns automatically if the page starts using it, and a font is never dropped from a page that hasn't been measured yet.<\/li>\n<li>Fixed: a font declared on a page is no longer wrongly dropped from the combined CSS because of a weight\/style mismatch (e.g. a single-weight family used at a bold weight). Usage is now matched per family.<\/li>\n<li>Improved: the combined stylesheet is unique per page font-set and shared when identical. Pages that use the same fonts reuse the same cached file; a page with a different set gets its own. Identical sets are never regenerated, saving CPU and disk.<\/li>\n<li>Improved: used\/unused classification stays current. Beacon measurements now refresh hourly instead of being locked for a week, so a font that starts (or stops) being used is reflected quickly, and \"Optimize\" forces an immediate fresh measurement of the homepage.<\/li>\n<li>Fixed: preloads are accurate and page-specific. A font is preloaded on a page only when it actually renders above the fold there (matched per family, so a face the browser shows at a different weight than the hosted file \u2014 e.g. a single-weight family shown bold \u2014 still preloads correctly). A font above the fold on just one page is preloaded only on that page; a font above the fold on every page is preloaded everywhere from a cached set, with no per-page lookup. Your manual \"always preload\" choices are respected wherever the family is used.<\/li>\n<li>Fixed: page counts and usage are keyed by the page path, so cache-buster and probe parameters (and tracking\/builder query strings) can no longer inflate the dashboard with duplicate rows.<\/li>\n<li>Improved: URL exclusions now match precisely \u2014 \"\/cart\" no longer also excludes \"\/cart-guide\". Patterns match the exact path or a path-segment prefix, and support wildcards (e.g. \"\/shop\/*\").<\/li>\n<li>Improved: when the master toggle is off, Easy Fonts adds nothing at all to the front end (no measurement or helper scripts).<\/li>\n<li>Improved: front-end scripts are now served minified.<\/li>\n<li>Performance: fewer database writes per page render (font registration is batched), usage logging is batched into a single write and rate-limited per page, and a dead database index was retired.<\/li>\n<li>Security\/hardening: strict sanitisation of all values written into the generated @font-face CSS; stylesheet fetching is restricted to public hosts (internal\/private addresses are blocked) with parsed-host provider matching; and local stylesheet reads are limited to genuine .css files with path-traversal blocked.<\/li>\n<li>Developer: filters <code>easyfonts_page_scope_fonts<\/code> (set false to disable per-page scoping), <code>easyfonts_force_families<\/code> (always-load safelist), <code>easyfonts_preload_cap<\/code>, and <code>easyfonts_beacon_throttle_hours<\/code>.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Fixed: rare white screen \/ blank front-end on some hosts (esp. FastCGI\/cgi-fcgi). Font binaries are no longer downloaded during a visitor's page render \u2014 they are fetched by a non-blocking background warm request, so a slow or blocked outbound connection can never stall the page.<\/li>\n<li>Fixed: the output buffer now fails open \u2014 if anything goes wrong while optimising a page, the original HTML is always returned instead of a blank page.<\/li>\n<li>Improved: provider  tags are only removed once their fonts are confirmed hosted locally, so the page never loses its fonts while the cache warms.<\/li>\n<li>Improved: provider stylesheet CSS is cached, so font detection no longer hits the network on every page load.<\/li>\n<li>Hardened: guard for WordPress's HTML API, safer regex handling, and PHP 7.4 compatibility shims.<\/li>\n<li>Note: no settings, styling, or features changed. After activation (or after changing fonts) the first visit serves the original fonts for a moment while the cache warms in the background, then switches to self-hosted automatically. You can also warm immediately from Settings \u2192 Optimize.<\/li>\n<li>Fixed: the real cause of the blank front-end \u2014 two regular expressions that scanned the whole page (the inline  processor and the Web Font Loader remover) could exhaust the PCRE2 engine on large pages (e.g. page-builder inline CSS or big inline scripts) and either return nothing or crash the PHP worker, blanking the page with no catchable error. Both are now linear text scans that cannot backtrack or overflow.<\/li>\n<li>Hardened: every remaining regular expression that rewrites page\/CSS content now falls back to the original content if the engine fails, so a pattern can never blank the page. Added a final safety net that discards the processed page if it ever comes out empty.<\/li>\n<li>Added: a size cap for individual inline  blocks (filterable) to skip pathologically large blocks safely.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>New: real-browser usage measurement \u2014 see which fonts render and which are above the fold.<\/li>\n<li>New: smart auto-preload of above-the-fold fonts (capped) for better LCP; your manual choices are always respected.<\/li>\n<li>New: zero-CLS metric-matched fallback fonts generated from real font metrics.<\/li>\n<li>New: detect and self-host fonts from inline CSS, theme\/plugin CSS, external\/CDN stylesheets, and the Web Font Loader (webfont.js).<\/li>\n<li>New: optional async \/ JS-injected Google Fonts blocker.<\/li>\n<li>New: full subset selection (Latin, Cyrillic, Greek, Vietnamese, Arabic, Devanagari, CJK, and more).<\/li>\n<li>New: CDN support for hosted fonts and the stylesheet.<\/li>\n<li>New: inline the combined stylesheet as minified CSS (not render-blocking).<\/li>\n<li>New: per-family and per-weight Load \/ Preload control, with used vs unused grouping.<\/li>\n<li>New: settings Import \/ Export.<\/li>\n<li>New: Multisite support and WP-CLI commands.<\/li>\n<li>New: redesigned, faster admin interface.<\/li>\n<li>Improved: variable font detection and single-file hosting.<\/li>\n<li>Improved: font-display control across all @font-face declarations.<\/li>\n<li>Improved: resource-hint cleanup and duplicate @font-face removal.<\/li>\n<\/ul>","raw_excerpt":"Host Google Fonts locally, Auto combine and remove duplicate fonts, Auto preload. pass Core Web Vitals \u2014 GDPR compliant, auto-config.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/169196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=169196"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/easywpstuff"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=169196"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=169196"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=169196"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=169196"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=169196"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=169196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}