{"id":326688,"date":"2026-06-22T19:44:52","date_gmt":"2026-06-22T19:44:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/themeplus\/"},"modified":"2026-06-22T19:44:39","modified_gmt":"2026-06-22T19:44:39","slug":"themeplus","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/themeplus\/","author":23463506,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"6.8","requires_php":"8.0","requires_plugins":null,"header_name":"ThemePlus","header_author":"Faruk Ahmed","header_description":"A modern, React-powered theme options framework. 30 field types, white-label support, conditional logic \u2014 free forever.","assets_banners_color":"635a96","last_updated":"2026-06-22 19:44:39","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.fronttheme.com\/products\/themeplus","header_author_uri":"https:\/\/fronttheme.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":34,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"farukahmed","date":"2026-06-22 19:44:39"}},"upgrade_notice":{"1.0.0":"<p>Initial release \u2014 no upgrade steps required.<\/p>"},"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3582314,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3582314,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3582314,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3582314,"resolution":"1","location":"assets","locale":"","width":2000,"height":1087},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3582314,"resolution":"2","location":"assets","locale":"","width":2000,"height":1200},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3582314,"resolution":"3","location":"assets","locale":"","width":2000,"height":1227},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3582314,"resolution":"4","location":"assets","locale":"","width":2000,"height":1227},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3582314,"resolution":"5","location":"assets","locale":"","width":2000,"height":1227},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3582314,"resolution":"6","location":"assets","locale":"","width":2000,"height":1227},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3582314,"resolution":"7","location":"assets","locale":"","width":2000,"height":1227}},"screenshots":{"1":"ThemePlus admin panel \u2014 clean, modern React UI with sidebar navigation","2":"All 30 field types \u2014 complete field type overview","3":"Typography field \u2014 Google Fonts browser with live preview and subset selection","4":"Custom Fonts module \u2014 upload and manage self-hosted WOFF2\/WOFF fonts","5":"Conditional logic \u2014 fields shown and hidden based on other field values","6":"Import\/Export \u2014 one-click backup and restore of all settings","7":"Developer Panel \u2014 field metadata, current values, and code snippets","8":"Dark mode \u2014 full dark color scheme matching WordPress admin"}},"plugin_section":[],"plugin_tags":[3809,3002,268403,10192,148177],"plugin_category":[],"plugin_contributors":[268404],"plugin_business_model":[],"class_list":["post-326688","plugin","type-plugin","status-publish","hentry","plugin_tags-admin-panel","plugin_tags-framework","plugin_tags-options-panel","plugin_tags-theme-options","plugin_tags-theme-settings","plugin_contributors-farukahmed","plugin_committers-farukahmed"],"banners":{"banner":"https:\/\/ps.w.org\/themeplus\/assets\/banner-772x250.png?rev=3582314","banner_2x":"https:\/\/ps.w.org\/themeplus\/assets\/banner-1544x500.png?rev=3582314","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/themeplus\/assets\/icon.svg?rev=3582314","icon":"https:\/\/ps.w.org\/themeplus\/assets\/icon.svg?rev=3582314","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/themeplus\/assets\/screenshot-1.png?rev=3582314","caption":"ThemePlus admin panel \u2014 clean, modern React UI with sidebar navigation"},{"src":"https:\/\/ps.w.org\/themeplus\/assets\/screenshot-2.png?rev=3582314","caption":"All 30 field types \u2014 complete field type overview"},{"src":"https:\/\/ps.w.org\/themeplus\/assets\/screenshot-3.png?rev=3582314","caption":"Typography field \u2014 Google Fonts browser with live preview and subset selection"},{"src":"https:\/\/ps.w.org\/themeplus\/assets\/screenshot-4.png?rev=3582314","caption":"Custom Fonts module \u2014 upload and manage self-hosted WOFF2\/WOFF fonts"},{"src":"https:\/\/ps.w.org\/themeplus\/assets\/screenshot-5.png?rev=3582314","caption":"Conditional logic \u2014 fields shown and hidden based on other field values"},{"src":"https:\/\/ps.w.org\/themeplus\/assets\/screenshot-6.png?rev=3582314","caption":"Import\/Export \u2014 one-click backup and restore of all settings"},{"src":"https:\/\/ps.w.org\/themeplus\/assets\/screenshot-7.png?rev=3582314","caption":"Developer Panel \u2014 field metadata, current values, and code snippets"}],"raw_content":"<!--section=description-->\n<p><strong>ThemePlus is a free, open-source WordPress theme options framework built for developers who want a modern, lightweight React-powered options panel \u2014 no legacy dependencies, no upsells, no license keys.<\/strong><\/p>\n\n<p>Built from scratch with React, Vite, and modern PHP 8, ThemePlus delivers a polished admin interface, 30 field types, full white-label support, Google Fonts integration, custom font uploads, Import\/Export, conditional logic, a REST API, and a Developer Panel \u2014 all free, with no license keys and no upsells.<\/p>\n\n<h4>30 Field Types<\/h4>\n\n<p>Every input a theme could need, organized into clean categories:<\/p>\n\n<ul>\n<li><strong>Text<\/strong> \u2014 Text, Textarea<\/li>\n<li><strong>Number<\/strong> \u2014 Number \/ Spinner, Slider<\/li>\n<li><strong>Choice<\/strong> \u2014 Select, Button Set, Radio, Checkbox, Select Image<\/li>\n<li><strong>Toggle<\/strong> \u2014 Toggle \/ Switch<\/li>\n<li><strong>Color<\/strong> \u2014 Color Picker, Gradient Picker<\/li>\n<li><strong>Media<\/strong> \u2014 Image, Gallery, Icon (FontAwesome 6)<\/li>\n<li><strong>Layout<\/strong> \u2014 Typography, Dimensions, Spacing, Border<\/li>\n<li><strong>Special<\/strong> \u2014 Info, Section, Raw, Shortcode<\/li>\n<li><strong>Date<\/strong> \u2014 Date Picker (date only or date + time)<\/li>\n<li><strong>Social<\/strong> \u2014 Social Media Links (20 platforms)<\/li>\n<li><strong>Code<\/strong> \u2014 Code Editor (CSS, JavaScript, HTML)<\/li>\n<li><strong>Advanced<\/strong> \u2014 Repeater, Background, Link, Group<\/li>\n<\/ul>\n\n<p>Every field has a verified, documented value shape. For example:<\/p>\n\n<ul>\n<li><code>image<\/code> returns <code>{ id, url, width, height, alt, title }<\/code> \u2014 empty array when no image selected<\/li>\n<li><code>gallery<\/code> returns an array of <code>{ id, url, alt }<\/code> rows<\/li>\n<li><code>border<\/code> returns <code>{ width, style, color, radius }<\/code><\/li>\n<li><code>social_media<\/code> returns an array of <code>{ platform, url }<\/code> rows<\/li>\n<li><code>repeater<\/code> returns an array of row arrays keyed by sub-field id<\/li>\n<li><code>gradient_picker<\/code> returns a complete CSS <code>linear-gradient()<\/code> string<\/li>\n<\/ul>\n\n<h4>White-Label Support<\/h4>\n\n<p>ThemePlus is designed to disappear into your theme. Configure <code>themeplus_framework_config()<\/code> with your theme's name, slug, option key, and icon \u2014 your users see your theme's own settings panel, never \"ThemePlus\".<\/p>\n\n<p><strong>Convention:<\/strong> section and subsection <code>icon<\/code> takes a FontAwesome name only (<code>'pen'<\/code>). The Icon <em>field<\/em> default takes the full FontAwesome class (<code>'fa-solid fa-star'<\/code>). The plugin translates its own fallback strings; your theme translates its config strings in your own text domain.<\/p>\n\n<h4>Google Fonts + Custom Fonts<\/h4>\n\n<p>The Typography field includes a searchable browser of 1,899 Google Fonts with live preview, weight and style selection, subset support, and automatic font enqueueing on the frontend. Skip Google Fonts entirely and upload self-hosted fonts (WOFF2, WOFF) via the built-in Custom Fonts module \u2014 magic-byte verified, capability-gated, and output into <code>@font-face<\/code> rules automatically.<\/p>\n\n<p><strong>Note:<\/strong> Custom fonts are stored as Media Library attachments and are not affected by Reset All or Reset Section \u2014 use the per-font Delete button to remove uploaded files.<\/p>\n\n<h4>Conditional Logic<\/h4>\n\n<p>Show or hide any field based on the value of another. Supports 10 operators and three relation formats:<\/p>\n\n<p><strong>Operators:<\/strong> <code>==<\/code>, <code>!=<\/code>, <code>&gt;<\/code>, <code>&lt;<\/code>, <code>&gt;=<\/code>, <code>&lt;=<\/code>, <code>contains<\/code>, <code>!contains<\/code>, <code>empty<\/code>, <code>!empty<\/code><\/p>\n\n<p><strong>Single condition:<\/strong>\n    'required' =&gt; ['sidebar_position', '==', 'left']<\/p>\n\n<p><strong>Multiple AND conditions:<\/strong>\n    'required' =&gt; [['enable_header', '==', true], ['header_style', '!=', 'minimal']]<\/p>\n\n<p><strong>Multiple OR conditions:<\/strong>\n    'required' =&gt; ['relation' =&gt; 'OR', 'conditions' =&gt; [['mode', '==', 'simple'], ['mode', '==', 'expert']]]<\/p>\n\n<p><strong>Array value (matches any):<\/strong>\n    'required' =&gt; ['header_elements', 'contains', 'search']<\/p>\n\n<p><strong>Dot-notation sub-key:<\/strong>\n    'required' =&gt; ['body_typography.font-family', '==', 'Inter']<\/p>\n\n<p><strong>empty \/ !empty note:<\/strong> <code>false<\/code> and <code>0<\/code> are NOT considered empty \u2014 only truly absent values, empty strings, empty arrays, and <code>null<\/code>.<\/p>\n\n<h4>Sections and Subsections<\/h4>\n\n<p>Organize theme options into a hierarchical sidebar. Add sections with <code>themeplus_add_section()<\/code>, nest subsections inline via the <code>subsections<\/code> key, or attach subsections from a separate hook with <code>themeplus_add_subsection()<\/code> \u2014 the pattern for child themes and extension plugins.<\/p>\n\n<h4>Import \/ Export<\/h4>\n\n<p>Backup and restore all theme settings with one click. Import\/Export handles JSON serialization and restores defaults cleanly.<\/p>\n\n<h4>REST API<\/h4>\n\n<p>Full REST API under the <code>themeplus\/v1<\/code> namespace \u2014 get options, save options, reset all, reset section, get configuration. All endpoints require the configured capability (default <code>edit_theme_options<\/code>) with nonce verification. Options are sanitized per field type before storage.<\/p>\n\n<h4>Developer Panel<\/h4>\n\n<p>Enable dev mode (<code>define('THEMEPLUS_DEV', true)<\/code>) to access a Developer Panel showing every registered field with its current value, PHP data type, and copy-ready code snippets for all three access patterns. Includes field statistics by type and section.<\/p>\n\n<h4>Security<\/h4>\n\n<ul>\n<li>All saved options pass through a per-field-type sanitizer (<code>ThemePlus_Sanitizer<\/code>) \u2014 unknown keys are dropped, values are validated against registered field configuration<\/li>\n<li>REST endpoints are capability-gated with nonce verification<\/li>\n<li>Font uploads are MIME-type and magic-byte verified<\/li>\n<li>Output is escaped at every render point<\/li>\n<\/ul>\n\n<h4>GPL Licensed \u2014 Free Forever<\/h4>\n\n<p>ThemePlus is GPL-2.0-or-later \u2014 the same license as WordPress itself. Use it in personal projects, client work, and commercial ThemeForest themes without restriction.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin can optionally connect to Google Fonts (fonts.googleapis.com) when a Typography field is configured to use a Google Font. The selected font family name is sent to Google's servers to load the font stylesheet.<\/p>\n\n<ul>\n<li>Google Fonts is only requested when a typography field value contains a Google Font name \u2014 it is never loaded by default<\/li>\n<li>No personal data is sent \u2014 only font family names and subset preferences<\/li>\n<li>Google Privacy Policy: https:\/\/policies.google.com\/privacy<\/li>\n<li>Google Fonts Terms: https:\/\/developers.google.com\/fonts\/terms<\/li>\n<\/ul>\n\n<p>To avoid any Google Fonts requests entirely, use only system fonts or upload self-hosted fonts via the Custom Fonts module.<\/p>\n\n<!--section=installation-->\n<h4>From WordPress.org<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong><\/li>\n<li>Search for <strong>ThemePlus<\/strong><\/li>\n<li>Click <strong>Install Now<\/strong> then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<h4>Upload ZIP<\/h4>\n\n<ol>\n<li>Download <code>themeplus.zip<\/code> from <a href=\"https:\/\/github.com\/fronttheme\/themeplus\/releases\">GitHub Releases<\/a><\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong><\/li>\n<li>Upload the ZIP and activate<\/li>\n<\/ol>\n\n<h4>After Activation<\/h4>\n\n<p>ThemePlus does nothing on its own \u2014 it is a framework for theme developers. To add a settings panel to your theme:<\/p>\n\n<ol>\n<li>Copy <code>includes\/config\/sample-config.php<\/code> from the plugin into your theme (rename <code>my_theme_<\/code> prefixes to your own)<\/li>\n<li>Include it in <code>functions.php<\/code>: <code>require_once get_template_directory() . '\/inc\/themeplus-config.php';<\/code><\/li>\n<li>Configure <code>themeplus_framework_config()<\/code> with your theme's details<\/li>\n<li>Add sections and fields using <code>themeplus_add_section()<\/code><\/li>\n<li>Retrieve values with <code>themeplus_get_option('field_id')<\/code><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20themeplus%20really%20free%3F\"><h3>Is ThemePlus really free?<\/h3><\/dt>\n<dd><p>Yes, completely. ThemePlus is open-source and GPL-2.0-or-later. There are no premium tiers, no feature locks, and no license keys.<\/p><\/dd>\n<dt id=\"can%20themeplus%20replace%20my%20current%20theme%20options%20framework%3F\"><h3>Can ThemePlus replace my current theme options framework?<\/h3><\/dt>\n<dd><p>ThemePlus provides 30 field types, white-label support, conditional logic, Google Fonts, custom fonts, Import\/Export, a REST API, and a Developer Panel \u2014 all in a modern React UI. It is designed as a complete, standalone theme options solution for WordPress theme developers.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20php%208.0%2B%3F\"><h3>Does it work with PHP 8.0+?<\/h3><\/dt>\n<dd><p>Yes. ThemePlus requires PHP 8.0 or higher and uses PHP 8 type hints, union types, and named arguments throughout.<\/p><\/dd>\n<dt id=\"how%20do%20i%20retrieve%20an%20option%20value%20in%20my%20theme%3F\"><h3>How do I retrieve an option value in my theme?<\/h3><\/dt>\n<dd><p>$value = themeplus_get_option( 'field_id', 'default_value' );<\/p>\n\n<p>For structured fields like image, border, or repeater, the return value is an array \u2014 see the field shapes in the Description section above.<\/p><\/dd>\n<dt id=\"what%20is%20the%20correct%20way%20to%20use%20the%20icon%20field%20vs%20section%20icons%3F\"><h3>What is the correct way to use the icon field vs section icons?<\/h3><\/dt>\n<dd><p>Section and subsection <code>icon<\/code> takes a FontAwesome <strong>name only<\/strong>: <code>'pen'<\/code>, <code>'palette'<\/code>, <code>'code'<\/code>. The Icon <strong>field<\/strong> <code>default<\/code> takes the <strong>full FontAwesome class<\/strong>: <code>'fa-solid fa-star'<\/code>, <code>'fa-brands fa-github'<\/code>. The picker modal handles selection in the UI \u2014 the default is only the stored fallback.<\/p><\/dd>\n<dt id=\"can%20i%20use%20themeplus%20in%20a%20themeforest%20theme%3F\"><h3>Can I use ThemePlus in a ThemeForest theme?<\/h3><\/dt>\n<dd><p>Yes. ThemePlus is GPL-licensed and can be bundled with commercial themes. The recommended approach for ThemeForest is TGM Plugin Activation so buyers can install it from your theme package.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multisite%3F\"><h3>Does it support multisite?<\/h3><\/dt>\n<dd><p>The plugin activates per-site. The uninstall routine cleans up options across all sites on the network.<\/p><\/dd>\n<dt id=\"why%20are%20my%20custom%20fonts%20not%20reset%20when%20i%20click%20reset%20all%3F\"><h3>Why are my custom fonts not reset when I click Reset All?<\/h3><\/dt>\n<dd><p>Custom fonts are uploaded files stored in the Media Library \u2014 not option values. Reset All and Reset Section only affect your option values. Use the Delete button in the Custom Fonts section to remove uploaded font files. This is intentional: resetting settings should never silently delete uploaded assets.<\/p><\/dd>\n<dt id=\"does%20the%20typography%20field%20load%20google%20fonts%20automatically%3F\"><h3>Does the Typography field load Google Fonts automatically?<\/h3><\/dt>\n<dd><p>Yes. Any typography field set to a Google Font is automatically enqueued on the frontend via a combined Google Fonts URL. System fonts and custom uploaded fonts are detected and excluded from the Google Fonts request automatically.<\/p><\/dd>\n<dt id=\"what%20is%20the%20developer%20panel%3F\"><h3>What is the Developer Panel?<\/h3><\/dt>\n<dd><p>When <code>define('THEMEPLUS_DEV', true)<\/code> is added to <code>wp-config.php<\/code>, a Developer Panel appears in the sidebar showing every registered field with its current saved value, PHP data type, dependency metadata, and code snippets for <code>themeplus_get_option()<\/code>, direct array access, and <code>themeplus_update_option()<\/code>. Remove the constant on production sites.<\/p><\/dd>\n<dt id=\"can%20i%20add%20a%20subsection%20from%20a%20child%20theme%20or%20extension%20plugin%3F\"><h3>Can I add a subsection from a child theme or extension plugin?<\/h3><\/dt>\n<dd><p>Yes \u2014 use <code>themeplus_add_subsection( 'parent_section_id', [ ...subsection config... ] )<\/code> from your own <code>init<\/code> hook (priority 20 or later, after the parent section is registered). This is the recommended pattern for child themes and addon plugins extending a parent theme's panel.<\/p><\/dd>\n<dt id=\"does%20themeplus%20support%20empty%2F%21empty%20conditional%20logic%20on%20false%20and%200%3F\"><h3>Does ThemePlus support empty\/!empty conditional logic on false and 0?<\/h3><\/dt>\n<dd><p>No \u2014 intentionally. <code>false<\/code> and <code>0<\/code> are NOT considered empty. Only truly absent values, empty strings, empty arrays, and <code>null<\/code> trigger <code>empty<\/code>. This matches PHP's <code>empty()<\/code> semantics for booleans and integers, which is the least surprising behavior for theme developers.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>30 field types: Text, Textarea, Number, Spinner, Slider, Select, Button Set, Radio, Checkbox, Select Image, Toggle, Switch, Color Picker, Gradient Picker, Image, Gallery, Icon, Typography, Dimensions, Spacing, Border, Info, Section, Raw, Shortcode, Date Picker, Social Media, Code Editor, Repeater, Background, Link, Group<\/li>\n<li>React 18 + WordPress components admin UI<\/li>\n<li>White-label support via themeplus_framework_config()<\/li>\n<li>Sections and subsections with priority ordering and themeplus_add_subsection() API<\/li>\n<li>Conditional logic: 10 operators, AND\/OR relations, array values, dot-notation sub-keys<\/li>\n<li>Google Fonts integration: 1,899 fonts, live preview, subset selection, auto-enqueue<\/li>\n<li>Custom Fonts module: WOFF2\/WOFF upload, magic-byte verification, @font-face generation<\/li>\n<li>Per-field-type sanitization on all saved options via ThemePlus_Sanitizer<\/li>\n<li>REST API: themeplus\/v1 \u2014 get, save, reset-all, reset-section, config<\/li>\n<li>Developer Panel with field metadata and code snippets (dev mode only)<\/li>\n<li>Live field search across titles, subtitles, descriptions, and IDs<\/li>\n<li>Import\/Export settings as JSON<\/li>\n<li>Unsaved changes detection with navigation warning<\/li>\n<li>Dark and light mode<\/li>\n<li>Helper functions: themeplus_get_option(), themeplus_update_option(), themeplus_add_section(), themeplus_add_subsection()<\/li>\n<li>Full i18n\/l10n support with .pot file<\/li>\n<\/ul>","raw_excerpt":"A modern, React-powered WordPress theme options framework. 30 field types, white-label support, conditional logic \u2014 free forever.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/326688","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=326688"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/farukahmed"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=326688"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=326688"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=326688"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=326688"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=326688"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=326688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}