{"id":384701,"date":"2026-10-13T22:59:21","date_gmt":"2026-10-13T22:59:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/spacebay\/"},"modified":"2026-10-25T14:44:08","modified_gmt":"2026-10-25T14:44:08","slug":"spacebay","status":"publish","type":"plugin","link":"https:\/\/am.wordpress.org\/plugins\/spacebay\/","author":23394582,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"SpaceBay - Community, Activity Feed, Group Chat & Events","header_author":"WPAnchorBay","header_description":"A complete community platform for WordPress: spaces, discussion feeds, member profiles, notifications and moderation in a fast, app-like portal.","assets_banners_color":"6b7094","last_updated":"2026-10-25 14:44:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wpanchorbay.com\/spacebay","header_author_uri":"https:\/\/wpanchorbay.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":160,"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":"forhadkhan","date":"2026-10-13 22:59:07","revision":3745009},"1.1.0":{"tag":"1.1.0","author":"forhadkhan","date":"2026-10-25 14:44:08","revision":3764771}},"upgrade_notice":{"1.1.0":"<p>Security hardening, post length limits, post drafts, a community icon and sidebar heading layouts. Sites behind a proxy or CDN should add the spacebay_client_ip filter; see Site Health.<\/p>","1.0.0":"<p>Initial release of SpaceBay.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3745009,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3745009,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3745009,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3745009,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3764771,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"SpaceBay live preview\",\"description\":\"A community with sample spaces, members, posts, chats and events, ready to click through.\",\"author\":\"wpanchorbay\"},\"landingPage\":\"\\\/community\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"7.1.3\"},\"steps\":[{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-includes\\\/js\\\/dist\\\/hooks.min.js\",\"data\":\"\\\/*! This file is auto-generated *\\\/\\n(function() {\\n\\\"use strict\\\";var wp;(wp||={}).hooks=(()=>{var v=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var w=(e,n)=>{for(var s in n)v(e,s,{get:n[s],enumerable:!0})},D=(e,n,s,r)=>{if(n&&typeof n==\\\"object\\\"||typeof n==\\\"function\\\")for(let t of g(n))!I.call(e,t)&&t!==s&&v(e,t,{get:()=>n[t],enumerable:!(r=S(n,t))||r.enumerable});return e};var T=e=>D(v({},\\\"__esModule\\\",{value:!0}),e);var le={};w(le,{actions:()=>ae,addAction:()=>J,addFilter:()=>K,applyFilters:()=>N,applyFiltersAsync:()=>ee,createHooks:()=>F,currentAction:()=>te,currentFilter:()=>re,defaultHooks:()=>b,didAction:()=>ie,didFilter:()=>se,doAction:()=>X,doActionAsync:()=>Y,doingAction:()=>ne,doingFilter:()=>oe,filters:()=>ce,hasAction:()=>P,hasFilter:()=>Q,removeAction:()=>L,removeAllActions:()=>U,removeAllFilters:()=>W,removeFilter:()=>M});function z(e){return typeof e!=\\\"string\\\"||e===\\\"\\\"?(console.error(\\\"The namespace must be a non-empty string.\\\"),!1):\\\/^[a-zA-Z][a-zA-Z0-9_.\\\\-\\\\\\\/]*$\\\/.test(e)?!0:(console.error(\\\"The namespace can only contain numbers, letters, dashes, periods, underscores and slashes.\\\"),!1)}var m=z;function E(e){return typeof e!=\\\"string\\\"||e===\\\"\\\"?(console.error(\\\"The hook name must be a non-empty string.\\\"),!1):\\\/^__\\\/.test(e)?(console.error(\\\"The hook name cannot begin with `__`.\\\"),!1):\\\/^[a-zA-Z][a-zA-Z0-9_.-]*$\\\/.test(e)?!0:(console.error(\\\"The hook name can only contain numbers, letters, dashes, periods and underscores.\\\"),!1)}var f=E;function Z(e,n){return function(r,t,a,i=10){let c=e[n];if(!f(r)||!m(t))return;if(typeof a!=\\\"function\\\"){console.error(\\\"The hook callback must be a function.\\\");return}if(typeof i!=\\\"number\\\"){console.error(\\\"If specified, the hook priority must be a number.\\\");return}let l={callback:a,priority:i,namespace:t};if(c[r]){let o=c[r].handlers,d;for(d=o.length;d>0&&!(i>=o[d-1].priority);d--);d===o.length?o[d]=l:o.splice(d,0,l),c.__current.forEach(h=>{h.name===r&&h.currentIndex>=d&&h.currentIndex++})}else c[r]={handlers:[l],runs:0};r!==\\\"hookAdded\\\"&&e.doAction(\\\"hookAdded\\\",r,t,a,i)}}var H=Z;function C(e,n,s=!1){return function(t,a){let i=e[n];if(!f(t)||!s&&!m(a))return;if(!i[t])return 0;let c=0;if(s)c=i[t].handlers.length,i[t]={runs:i[t].runs,handlers:[]};else{let l=i[t].handlers;for(let o=l.length-1;o>=0;o--)l[o].namespace===a&&(l.splice(o,1),c++,i.__current.forEach(d=>{d.name===t&&d.currentIndex>=o&&d.currentIndex--}))}return t!==\\\"hookRemoved\\\"&&e.doAction(\\\"hookRemoved\\\",t,a),c}}var p=C;function O(e,n){return function(r,t){let a=e[n];return typeof t<\\\"u\\\"?r in a&&a[r].handlers.some(i=>i.namespace===t):r in a}}var _=O;function j(e,n,s,r){return function(a,...i){let c=e[n];c[a]||(c[a]={handlers:[],runs:0}),c[a].runs++;let l=c[a].handlers;if(!l||!l.length)return s?i[0]:void 0;let o={name:a,currentIndex:0};async function d(){try{c.__current.add(o);let u=s?i[0]:void 0;for(;o.currentIndex<l.length;)u=await l[o.currentIndex].callback.apply(null,i),s&&(i[0]=u),o.currentIndex++;return s?u:void 0}finally{c.__current.delete(o)}}function h(){try{c.__current.add(o);let u=s?i[0]:void 0;for(;o.currentIndex<l.length;)u=l[o.currentIndex].callback.apply(null,i),s&&(i[0]=u),o.currentIndex++;return s?u:void 0}finally{c.__current.delete(o)}}return(r?d:h)()}}var A=j;function $(e,n){return function(){let r=e[n];return Array.from(r.__current).at(-1)?.name??null}}var y=$;function V(e,n){return function(r){let t=e[n];return typeof r>\\\"u\\\"?t.__current.size>0:Array.from(t.__current).some(a=>a.name===r)}}var k=V;function q(e,n){return function(r){let t=e[n];if(f(r))return t[r]&&t[r].runs?t[r].runs:0}}var x=q;var B=class{actions;filters;addAction;addFilter;removeAction;removeFilter;hasAction;hasFilter;removeAllActions;removeAllFilters;doAction;doActionAsync;applyFilters;applyFiltersAsync;currentAction;currentFilter;doingAction;doingFilter;didAction;didFilter;constructor(){this.actions=Object.create(null),this.actions.__current=new Set,this.filters=Object.create(null),this.filters.__current=new Set,this.addAction=H(this,\\\"actions\\\"),this.addFilter=H(this,\\\"filters\\\"),this.removeAction=p(this,\\\"actions\\\"),this.removeFilter=p(this,\\\"filters\\\"),this.hasAction=_(this,\\\"actions\\\"),this.hasFilter=_(this,\\\"filters\\\"),this.removeAllActions=p(this,\\\"actions\\\",!0),this.removeAllFilters=p(this,\\\"filters\\\",!0),this.doAction=A(this,\\\"actions\\\",!1,!1),this.doActionAsync=A(this,\\\"actions\\\",!1,!0),this.applyFilters=A(this,\\\"filters\\\",!0,!1),this.applyFiltersAsync=A(this,\\\"filters\\\",!0,!0),this.currentAction=y(this,\\\"actions\\\"),this.currentFilter=y(this,\\\"filters\\\"),this.doingAction=k(this,\\\"actions\\\"),this.doingFilter=k(this,\\\"filters\\\"),this.didAction=x(this,\\\"actions\\\"),this.didFilter=x(this,\\\"filters\\\")}};function G(){return new B}var F=G;var b=F(),{addAction:J,addFilter:K,removeAction:L,removeFilter:M,hasAction:P,hasFilter:Q,removeAllActions:U,removeAllFilters:W,doAction:X,doActionAsync:Y,applyFilters:N,applyFiltersAsync:ee,currentAction:te,currentFilter:re,doingAction:ne,doingFilter:oe,didAction:ie,didFilter:se,actions:ae,filters:ce}=b;return T(le);})();\\n(window.wp ||= {}).hooks = wp.hooks;\\n})();\\n\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-includes\\\/js\\\/dist\\\/i18n.min.js\",\"data\":\"\\\/*! This file is auto-generated *\\\/\\n(function() {\\n\\\"use strict\\\";var wp;(wp||={}).i18n=(()=>{var nt=Object.create;var L=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var ut=Object.getPrototypeOf,lt=Object.prototype.hasOwnProperty;var ft=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports),ot=(t,r)=>{for(var e in r)L(t,e,{get:r[e],enumerable:!0})},O=(t,r,e,n)=>{if(r&&typeof r==\\\"object\\\"||typeof r==\\\"function\\\")for(let u of it(r))!lt.call(t,u)&&u!==e&&L(t,u,{get:()=>r[u],enumerable:!(n=at(r,u))||n.enumerable});return t};var st=(t,r,e)=>(e=t!=null?nt(ut(t)):{},O(r||!t||!t.__esModule?L(e,\\\"default\\\",{value:t,enumerable:!0}):e,t)),pt=t=>O(L({},\\\"__esModule\\\",{value:!0}),t);var $=ft((It,M)=>{M.exports=window.wp.hooks});var yt={};ot(yt,{__:()=>Z,_n:()=>G,_nx:()=>B,_x:()=>q,createI18n:()=>R,defaultI18n:()=>H,getLocaleData:()=>j,hasTranslation:()=>Q,isRTL:()=>J,resetLocaleData:()=>U,setLocaleData:()=>z,sprintf:()=>P,subscribe:()=>X});var ct=\\\/%(((\\\\d+)\\\\$)|(\\\\(([$_a-zA-Z][$_a-zA-Z0-9]*)\\\\)))?[ +0#-]*\\\\d*(\\\\.(\\\\d+|\\\\*))?(ll|[lhqL])?([cduxXefgsp%])\\\/g;function T(t,...r){var e=0;return Array.isArray(r[0])&&(r=r[0]),t.replace(ct,function(){var n,u,l,o,f;return n=arguments[3],u=arguments[5],l=arguments[7],o=arguments[9],o===\\\"%\\\"?\\\"%\\\":(l===\\\"*\\\"&&(l=r[e],e++),u===void 0?(n===void 0&&(n=e+1),e++,f=r[n-1]):r[0]&&typeof r[0]==\\\"object\\\"&&r[0].hasOwnProperty(u)&&(f=r[0][u]),o===\\\"f\\\"?f=parseFloat(f)||0:o===\\\"d\\\"&&(f=parseInt(f)||0),l!==void 0&&(o===\\\"f\\\"?f=f.toFixed(l):o===\\\"s\\\"&&(f=f.substr(0,l))),f??\\\"\\\")})}function P(t,...r){return T(t,...r)}var D,I,h,N;D={\\\"(\\\":9,\\\"!\\\":8,\\\"*\\\":7,\\\"\\\/\\\":7,\\\"%\\\":7,\\\"+\\\":6,\\\"-\\\":6,\\\"<\\\":5,\\\"<=\\\":5,\\\">\\\":5,\\\">=\\\":5,\\\"==\\\":4,\\\"!=\\\":4,\\\"&&\\\":3,\\\"||\\\":2,\\\"?\\\":1,\\\"?:\\\":1};I=[\\\"(\\\",\\\"?\\\"];h={\\\")\\\":[\\\"(\\\"],\\\":\\\":[\\\"?\\\",\\\"?:\\\"]};N=\\\/<=|>=|==|!=|&&|\\\\|\\\\||\\\\?:|\\\\(|!|\\\\*|\\\\\\\/|%|\\\\+|-|<|>|\\\\?|\\\\)|:\\\/;function b(t){for(var r=[],e=[],n,u,l,o;n=t.match(N);){for(u=n[0],l=t.substr(0,n.index).trim(),l&&r.push(l);o=e.pop();){if(h[u]){if(h[u][0]===o){u=h[u][1]||u;break}}else if(I.indexOf(o)>=0||D[o]<D[u]){e.push(o);break}r.push(o)}h[u]||e.push(u),t=t.substr(n.index+u.length)}return t=t.trim(),t&&r.push(t),r.concat(e.reverse())}var dt={\\\"!\\\":function(t){return!t},\\\"*\\\":function(t,r){return t*r},\\\"\\\/\\\":function(t,r){return t\\\/r},\\\"%\\\":function(t,r){return t%r},\\\"+\\\":function(t,r){return t+r},\\\"-\\\":function(t,r){return t-r},\\\"<\\\":function(t,r){return t<r},\\\"<=\\\":function(t,r){return t<=r},\\\">\\\":function(t,r){return t>r},\\\">=\\\":function(t,r){return t>=r},\\\"==\\\":function(t,r){return t===r},\\\"!=\\\":function(t,r){return t!==r},\\\"&&\\\":function(t,r){return t&&r},\\\"||\\\":function(t,r){return t||r},\\\"?:\\\":function(t,r,e){if(t)throw r;return e}};function g(t,r){var e=[],n,u,l,o,f,_;for(n=0;n<t.length;n++){if(f=t[n],o=dt[f],o){for(u=o.length,l=Array(u);u--;)l[u]=e.pop();try{_=o.apply(null,l)}catch(v){return v}}else r.hasOwnProperty(f)?_=r[f]:_=+f;e.push(_)}return e[0]}function A(t){var r=b(t);return function(e){return g(r,e)}}function E(t){var r=A(t);return function(e){return+r({n:e})}}var S={contextDelimiter:\\\"\\u0004\\\",onMissingKey:null};function _t(t){var r,e,n;for(r=t.split(\\\";\\\"),e=0;e<r.length;e++)if(n=r[e].trim(),n.indexOf(\\\"plural=\\\")===0)return n.substr(7)}function x(t,r){var e;this.data=t,this.pluralForms={},this.options={};for(e in S)this.options[e]=r!==void 0&&e in r?r[e]:S[e]}x.prototype.getPluralForm=function(t,r){var e=this.pluralForms[t],n,u,l;return e||(n=this.data[t][\\\"\\\"],l=n[\\\"Plural-Forms\\\"]||n[\\\"plural-forms\\\"]||n.plural_forms,typeof l!=\\\"function\\\"&&(u=_t(n[\\\"Plural-Forms\\\"]||n[\\\"plural-forms\\\"]||n.plural_forms),l=E(u)),e=this.pluralForms[t]=l),e(r)};x.prototype.dcnpgettext=function(t,r,e,n,u){var l,o,f;return u===void 0?l=0:l=this.getPluralForm(t,u),o=e,r&&(o=r+this.options.contextDelimiter+e),f=this.data[t][o],f&&f[l]?f[l]:(this.options.onMissingKey&&this.options.onMissingKey(e,t),l===0?e:n)};var K={\\\"\\\":{plural_forms(t){return t===1?0:1}}},vt=\\\/^i18n\\\\.(n?gettext|has_translation)(_|$)\\\/,R=(t,r,e)=>{let n=new x({}),u=new Set,l=()=>{u.forEach(a=>a())},o=a=>(u.add(a),()=>u.delete(a)),f=(a=\\\"default\\\")=>n.data[a],_=(a,i=\\\"default\\\")=>{n.data[i]={...n.data[i],...a},n.data[i][\\\"\\\"]={...K[\\\"\\\"],...n.data[i]?.[\\\"\\\"]},delete n.pluralForms[i]},v=(a,i)=>{_(a,i),l()},V=(a,i=\\\"default\\\")=>{n.data[i]={...n.data[i],...a,\\\"\\\":{...K[\\\"\\\"],...n.data[i]?.[\\\"\\\"],...a?.[\\\"\\\"]}},delete n.pluralForms[i],l()},W=(a,i)=>{n.data={},n.pluralForms={},v(a,i)},m=(a=\\\"default\\\",i,s,c,d)=>(n.data[a]||_(void 0,a),n.dcnpgettext(a,i,s,c,d)),y=a=>a||\\\"default\\\",Y=(a,i)=>{let s=m(i,void 0,a);return e?(s=e.applyFilters(\\\"i18n.gettext\\\",s,a,i),e.applyFilters(\\\"i18n.gettext_\\\"+y(i),s,a,i)):s},w=(a,i,s)=>{let c=m(s,i,a);return e?(c=e.applyFilters(\\\"i18n.gettext_with_context\\\",c,a,i,s),e.applyFilters(\\\"i18n.gettext_with_context_\\\"+y(s),c,a,i,s)):c},k=(a,i,s,c)=>{let d=m(c,void 0,a,i,s);return e?(d=e.applyFilters(\\\"i18n.ngettext\\\",d,a,i,s,c),e.applyFilters(\\\"i18n.ngettext_\\\"+y(c),d,a,i,s,c)):d},tt=(a,i,s,c,d)=>{let F=m(d,c,a,i,s);return e?(F=e.applyFilters(\\\"i18n.ngettext_with_context\\\",F,a,i,s,c,d),e.applyFilters(\\\"i18n.ngettext_with_context_\\\"+y(d),F,a,i,s,c,d)):F},rt=()=>w(\\\"ltr\\\",\\\"text direction\\\")===\\\"rtl\\\",et=(a,i,s)=>{let c=i?i+\\\"\\u0004\\\"+a:a,d=!!n.data?.[s??\\\"default\\\"]?.[c];return e&&(d=e.applyFilters(\\\"i18n.has_translation\\\",d,a,i,s),d=e.applyFilters(\\\"i18n.has_translation_\\\"+y(s),d,a,i,s)),d};if(t&&v(t,r),e){let a=i=>{vt.test(i)&&l()};e.addAction(\\\"hookAdded\\\",\\\"core\\\/i18n\\\",a),e.addAction(\\\"hookRemoved\\\",\\\"core\\\/i18n\\\",a)}return{getLocaleData:f,setLocaleData:v,addLocaleData:V,resetLocaleData:W,subscribe:o,__:Y,_x:w,_n:k,_nx:tt,isRTL:rt,hasTranslation:et}};var C=st($(),1);var p=R(void 0,void 0,C.defaultHooks),H=p,j=p.getLocaleData.bind(p),z=p.setLocaleData.bind(p),U=p.resetLocaleData.bind(p),X=p.subscribe.bind(p),Z=p.__.bind(p),q=p._x.bind(p),G=p._n.bind(p),B=p._nx.bind(p),J=p.isRTL.bind(p),Q=p.hasTranslation.bind(p);return pt(yt);})();\\n(window.wp ||= {}).i18n = wp.i18n;\\n})();\\n\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\\\/spacebay-preview-core-scripts.php\",\"data\":\"<?php\\n\\\/**\\n * Plugin Name: SpaceBay Playground Core Scripts\\n * Description: Preview-only: serve pinned WordPress hooks and i18n inline.\\n * License: GPL-2.0-or-later\\n *\\\/\\n\\ndefined( 'ABSPATH' ) || exit;\\n\\nadd_filter(\\n\\t'script_loader_tag',\\n\\tstatic function ( $tag, $handle ) {\\n\\t\\t$files = array(\\n\\t\\t\\t'wp-hooks' => 'hooks.min.js',\\n\\t\\t\\t'wp-i18n'  => 'i18n.min.js',\\n\\t\\t);\\n\\t\\tif ( ! isset( $files[ $handle ] ) ) {\\n\\t\\t\\treturn $tag;\\n\\t\\t}\\n\\t\\t$file = ABSPATH . 'wp-includes\\\/js\\\/dist\\\/' . $files[ $handle ];\\n\\t\\t$code = is_readable( $file ) ? file_get_contents( $file ) : false;\\n\\t\\tif ( false === $code || strlen( $code ) < 100 ) {\\n\\t\\t\\t\\\/\\\/ The Blueprint verifies these files before serving the demo.\\n\\t\\t\\t\\\/\\\/ Keep WordPress's standard loader if this MU plugin is used alone.\\n\\t\\t\\treturn $tag;\\n\\t\\t}\\n\\t\\treturn wp_get_inline_script_tag( $code, array( 'id' => $handle . '-js' ) );\\n\\t},\\n\\t10,\\n\\t2\\n);\\n\"},{\"step\":\"runPHP\",\"code\":\"<?php $expected=json_decode('{\\\"hooks.min.js\\\": \\\"fc774906082b59dedcfc55b8ef127783b6d056578ff4586a8ebbdb81bbe286f1\\\", \\\"i18n.min.js\\\": \\\"5083905862c2b7aa8a84c4f2313d359d2288fb25fbe1ff577fa7325eff2ed2d9\\\"}',true); foreach ($expected as $file=>$hash) { $path='\\\/wordpress\\\/wp-includes\\\/js\\\/dist\\\/'.$file; if (!is_file($path) || hash_file('sha256',$path)!==$hash) { throw new Exception('SpaceBay preview core script verification failed: '.$file); } }\"},{\"step\":\"setSiteOptions\",\"options\":{\"blogname\":\"SpaceBay Demo\",\"permalink_structure\":\"\\\/%postname%\\\/\"}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"spacebay\"},\"options\":{\"activate\":true}},{\"step\":\"wp-cli\",\"command\":\"wp spacebay demo\"},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3745009,"resolution":"1","location":"assets","locale":"","width":1920,"height":1200},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3745009,"resolution":"10","location":"assets","locale":"","width":1920,"height":1200},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3745009,"resolution":"2","location":"assets","locale":"","width":1920,"height":1200},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3745009,"resolution":"3","location":"assets","locale":"","width":1920,"height":1200},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3745009,"resolution":"4","location":"assets","locale":"","width":1920,"height":1200},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3745009,"resolution":"5","location":"assets","locale":"","width":1920,"height":1200},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3745009,"resolution":"6","location":"assets","locale":"","width":1920,"height":1200},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3745009,"resolution":"7","location":"assets","locale":"","width":1920,"height":1200},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3745009,"resolution":"8","location":"assets","locale":"","width":1920,"height":1200},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3745009,"resolution":"9","location":"assets","locale":"","width":1920,"height":1200}},"screenshots":{"1":"Community home with the activity feed: posts, photos, topics, likes and comments.","2":"Spaces: a group for every interest, public or private.","3":"Private messages and group chat.","4":"Events calendar with RSVP.","5":"A member's level, points and badges.","6":"Member directory with search.","7":"Weekly, monthly and all-time leaderboard.","8":"Community dashboard in wp-admin.","9":"Moderation review queue.","10":"Settings page."}},"plugin_section":[],"plugin_tags":[4798,2316,10122,15070,904],"plugin_category":[44],"plugin_contributors":[257990,250833],"plugin_business_model":[],"class_list":["post-384701","plugin","type-plugin","status-publish","hentry","plugin_tags-activity-feed","plugin_tags-community","plugin_tags-group-chat","plugin_tags-member-directory","plugin_tags-social-network","plugin_category-discussion-and-community","plugin_contributors-forhadkhan","plugin_contributors-wpanchorbay","plugin_committers-forhadkhan","plugin_committers-wpanchorbay"],"banners":{"banner":"https:\/\/ps.w.org\/spacebay\/assets\/banner-772x250.png?rev=3745009","banner_2x":"https:\/\/ps.w.org\/spacebay\/assets\/banner-1544x500.png?rev=3745009","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/spacebay\/assets\/icon-128x128.png?rev=3745009","icon_2x":"https:\/\/ps.w.org\/spacebay\/assets\/icon-256x256.png?rev=3745009","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/spacebay\/assets\/screenshot-1.png?rev=3745009","caption":"Community home with the activity feed: posts, photos, topics, likes and comments."},{"src":"https:\/\/ps.w.org\/spacebay\/assets\/screenshot-2.png?rev=3745009","caption":"Spaces: a group for every interest, public or private."},{"src":"https:\/\/ps.w.org\/spacebay\/assets\/screenshot-3.png?rev=3745009","caption":"Private messages and group chat."},{"src":"https:\/\/ps.w.org\/spacebay\/assets\/screenshot-4.png?rev=3745009","caption":"Events calendar with RSVP."},{"src":"https:\/\/ps.w.org\/spacebay\/assets\/screenshot-5.png?rev=3745009","caption":"A member's level, points and badges."},{"src":"https:\/\/ps.w.org\/spacebay\/assets\/screenshot-6.png?rev=3745009","caption":"Member directory with search."},{"src":"https:\/\/ps.w.org\/spacebay\/assets\/screenshot-7.png?rev=3745009","caption":"Weekly, monthly and all-time leaderboard."},{"src":"https:\/\/ps.w.org\/spacebay\/assets\/screenshot-8.png?rev=3745009","caption":"Community dashboard in wp-admin."},{"src":"https:\/\/ps.w.org\/spacebay\/assets\/screenshot-9.png?rev=3745009","caption":"Moderation review queue."},{"src":"https:\/\/ps.w.org\/spacebay\/assets\/screenshot-10.png?rev=3745009","caption":"Settings page."}],"raw_content":"<!--section=description-->\n<p><strong>SpaceBay is a WordPress community plugin that turns your site into a private social network your members actually come back to.<\/strong><\/p>\n\n<p>Spaces, an activity feed, private messages, group chat, events, a member directory, points, badges and a leaderboard all sit in one fast, app-like portal. It runs on your own WordPress site, so your members, your content and your data stay with you.<\/p>\n\n<p>No page builder is needed. SpaceBay brings its own community portal and fits any theme.<\/p>\n\n<p><a href=\"https:\/\/wpanchorbay.com\/plugins\/spacebay\/\">Plugin page<\/a> | <a href=\"https:\/\/docs.wpanchorbay.com\/spacebay\/\">Documentation<\/a> | <a href=\"https:\/\/wpanchorbay.com\/support\/\">Support<\/a><\/p>\n\n<h4>Who is SpaceBay for?<\/h4>\n\n<p>SpaceBay is built for makers, clubs, schools, creators and small teams who want an online community they own:<\/p>\n\n<ul>\n<li>A membership site that needs a members-only community area<\/li>\n<li>A club or association that wants a member directory and events with RSVP<\/li>\n<li>A school or course creator who wants a discussion space for students<\/li>\n<li>A brand that wants a customer community instead of a social media group<\/li>\n<li>A small team that wants a private space for posts, chat and events<\/li>\n<\/ul>\n\n<h4>Spaces: a group for every interest<\/h4>\n\n<p>Create a space for every topic, team or interest. Each space has its own feed and its own members. Members join the spaces they care about and see those posts in one place.<\/p>\n\n<h4>Activity feed that keeps the conversation going<\/h4>\n\n<ul>\n<li>Posts with photos, link previews and videos<\/li>\n<li>A focused window for writing, with a live character counter<\/li>\n<li>Post and comment length limits that you set<\/li>\n<li>@mentions, #hashtags and topics<\/li>\n<li>Likes, replies and comments<\/li>\n<li>Pinned posts and saved posts<\/li>\n<li>A feed in every space the member joins<\/li>\n<\/ul>\n\n<h4>Private messages and group chat<\/h4>\n\n<ul>\n<li>One-to-one private messages<\/li>\n<li>Group chat for several members<\/li>\n<li>Images in chats<\/li>\n<li>Unread counts and read receipts<\/li>\n<\/ul>\n\n<h4>Events with RSVP<\/h4>\n\n<ul>\n<li>Online or in-person events<\/li>\n<li>An event calendar<\/li>\n<li>\"Going\" and \"Maybe\" answers<\/li>\n<li>\"Add to calendar\" for every event<\/li>\n<\/ul>\n\n<h4>Member profiles and member directory<\/h4>\n\n<ul>\n<li>Profile photo and cover image<\/li>\n<li>Headline, about text, location and website<\/li>\n<li>Level and badges shown on the profile<\/li>\n<li>A member directory with search by name. It lists the people who belong to your community, not every user of your site.<\/li>\n<\/ul>\n\n<h4>Points, levels, badges and a leaderboard<\/h4>\n\n<p>Give members a reason to come back. Members earn points for posts, comments, likes and events.<\/p>\n\n<ul>\n<li>Nine badges<\/li>\n<li>Custom levels<\/li>\n<li>A community leaderboard<\/li>\n<\/ul>\n\n<h4>Notifications, in-app and by email<\/h4>\n\n<ul>\n<li>A notification bell with unread counts<\/li>\n<li>A notifications page<\/li>\n<li>Email notifications sent through your site's own mail<\/li>\n<li>Every member chooses which emails they get<\/li>\n<\/ul>\n\n<h4>Search, dark mode and mobile<\/h4>\n\n<ul>\n<li>Search posts, spaces and members<\/li>\n<li>Light and dark mode, following the visitor or your choice<\/li>\n<li>A phone layout that feels like a native app<\/li>\n<\/ul>\n\n<h4>Built for community managers<\/h4>\n\n<p>Everything lives under one WordPress menu.<\/p>\n\n<ul>\n<li><strong>Setup wizard<\/strong> \u2013 get your community running in minutes<\/li>\n<li><strong>Community dashboard<\/strong> \u2013 totals, items to review, members waiting and your community address, right in wp-admin<\/li>\n<li><strong>One Settings page<\/strong> \u2013 access, look, login, messages, points, events, moderation and emails in one place<\/li>\n<li><strong>Branding<\/strong> \u2013 your logo and brand color, light or dark mode, and a full-page app or a page inside your theme<\/li>\n<\/ul>\n\n<h4>Moderation that stops spam before members see it<\/h4>\n\n<ul>\n<li>Reported posts wait in a review queue<\/li>\n<li>First posts from new members wait in the review queue<\/li>\n<li>Approve or delete in one click<\/li>\n<li>Blocked words<\/li>\n<li>Member suspension<\/li>\n<\/ul>\n\n<h4>Works with the WordPress you already have<\/h4>\n\n<ul>\n<li><strong>Any theme<\/strong> \u2013 full-page app or inside your theme<\/li>\n<li><strong>Multisite<\/strong> \u2013 works on network sites<\/li>\n<li><strong>RTL<\/strong> \u2013 right-to-left languages are supported<\/li>\n<li><strong>Google and Facebook login<\/strong> \u2013 with your own free apps<\/li>\n<li><strong>Privacy tools<\/strong> \u2013 export and erase personal data with the WordPress privacy tools<\/li>\n<li><strong>REST API and hooks<\/strong> \u2013 actions, filters and template overrides for developers<\/li>\n<li><strong>WP-CLI<\/strong> \u2013 fill a test site with sample content<\/li>\n<\/ul>\n\n<h4>SpaceBay Pro<\/h4>\n\n<p>SpaceBay Pro is a separate add-on for bigger communities. The free plugin works fully on its own. If you deactivate Pro, your data stays.<\/p>\n\n<ul>\n<li><strong>Member shops<\/strong> \u2013 members open a shop on their profile and list what they make. Each product links to their own store. You approve shops and products.<\/li>\n<li><strong>Voice and video calls<\/strong> \u2013 start a call from any chat, browser to browser, for up to six people<\/li>\n<li><strong>Two-factor login<\/strong> \u2013 authenticator app or email codes, backup codes, and a policy for everyone or only for staff<\/li>\n<li><strong>Signup form builder<\/strong> \u2013 choose the fields, mark the required ones and set their order, with a live preview<\/li>\n<li><strong>Extra profile fields<\/strong> \u2013 add your own fields to member profiles<\/li>\n<li><strong>Badge editor<\/strong> \u2013 create badges with your own rules<\/li>\n<li><strong>Manual badges and points<\/strong> \u2013 give badges and points by hand<\/li>\n<li><strong>Event place limits<\/strong> \u2013 show \"3 places left\"<\/li>\n<li><strong>Event reminders<\/strong> \u2013 remind members before an event starts<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/wpanchorbay.com\/plugins\/spacebay\/\">Learn more about SpaceBay Pro<\/a><\/p>\n\n<h4>Source code<\/h4>\n\n<p>The community portal and the admin screens are Vue 3 apps. Their full, readable source code is included in this plugin, in the <code>src\/<\/code> folder. The files in <code>assets\/build\/<\/code> are built from it with <a href=\"https:\/\/vitejs.dev\/\">Vite<\/a> and are not minified.<\/p>\n\n<p>To build them yourself, use Node.js 20 or later and run these commands in the plugin folder:<\/p>\n\n<pre><code>npm ci\nnpm run build\n\npackage.json, `package-lock.json` and `vite.config.js` list the build tools and settings.\n<\/code><\/pre>\n\n<h4>Credits<\/h4>\n\n<p>The portal and admin screens are built with <a href=\"https:\/\/vuejs.org\/\">Vue<\/a>, <a href=\"https:\/\/router.vuejs.org\/\">Vue Router<\/a> and <a href=\"https:\/\/pinia.vuejs.org\/\">Pinia<\/a>, all under the MIT license. Their license notices are kept in the built files. Interface icons are from Phosphor Icons (MIT), https:\/\/phosphoricons.com. Illustrations and the SpaceBay mark are made for SpaceBay and are GPL-licensed with the plugin.<\/p>\n\n<h3>External services<\/h3>\n\n<p>SpaceBay works without any external service. The features below are optional and only contact a third party when you turn them on.<\/p>\n\n<h4>Google login<\/h4>\n\n<p>If you turn on Google login and add your own Google app credentials, members who choose \"Log in with Google\" are sent to Google to sign in. Google then returns the member's basic profile data (such as name, email address and profile photo) to your site. No data is sent to Google until a member chooses this login.<\/p>\n\n<ul>\n<li>Service: Google Sign-In, provided by Google LLC<\/li>\n<li><a href=\"https:\/\/policies.google.com\/terms\">Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/policies.google.com\/privacy\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>Facebook login<\/h4>\n\n<p>If you turn on Facebook login and add your own Facebook app credentials, members who choose \"Log in with Facebook\" are sent to Facebook to sign in. Facebook then returns the member's basic profile data (such as name, email address and profile photo) to your site. No data is sent to Facebook until a member chooses this login.<\/p>\n\n<ul>\n<li>Service: Facebook Login, provided by Meta Platforms, Inc.<\/li>\n<li><a href=\"https:\/\/www.facebook.com\/terms.php\">Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/www.facebook.com\/privacy\/policy\/\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>Link previews<\/h4>\n\n<p>When a member adds a link to a post, your site requests that web page to read its title, description and image for the preview. The website being linked to receives a request from your server. Previews need the PHP cURL extension and a direct connection: when your site sends its requests through a proxy, no previews are fetched.<\/p>\n\n<!--section=installation-->\n<h4>Install from your WordPress dashboard<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins &gt; Add New Plugin<\/strong>.<\/li>\n<li>Search for <strong>SpaceBay<\/strong>.<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Open <strong>SpaceBay<\/strong> in the WordPress admin menu.<\/li>\n<li>Follow the setup wizard to name your community, set your branding and create your first spaces.<\/li>\n<li>Invite your first members.<\/li>\n<\/ol>\n\n<h4>Install manually<\/h4>\n\n<ol>\n<li>Download the plugin zip file.<\/li>\n<li>Go to <strong>Plugins &gt; Add New Plugin &gt; Upload Plugin<\/strong>.<\/li>\n<li>Choose the zip file and click <strong>Install Now<\/strong>.<\/li>\n<li>Click <strong>Activate<\/strong>, then follow the setup wizard.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20spacebay%20free%3F\"><h3>Is SpaceBay free?<\/h3><\/dt>\n<dd><p>Yes. SpaceBay is free and includes spaces, the activity feed, private messages, group chat, events, profiles, the member directory, points, levels, badges, the leaderboard, notifications and moderation. SpaceBay Pro is an optional add-on for extra tools.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20page%20builder%20or%20a%20special%20theme%3F\"><h3>Do I need a page builder or a special theme?<\/h3><\/dt>\n<dd><p>No. SpaceBay brings its own community portal. You can show it as a full-page app or as a page inside your current theme.<\/p><\/dd>\n<dt id=\"is%20there%20a%20limit%20on%20how%20long%20a%20post%20can%20be%3F\"><h3>Is there a limit on how long a post can be?<\/h3><\/dt>\n<dd><p>Yes. Under <strong>Settings &gt; Posts and uploads<\/strong> you set the longest post (500 to 50,000 characters, 20,000 by default) and the longest comment (200 to 10,000, 5,000 by default). If you lower a limit, older long posts stay as they are and can still be edited to be shorter. Developers can change the limits with the <code>spacebay_post_max_length<\/code>, <code>spacebay_comment_max_length<\/code> and <code>spacebay_message_max_length<\/code> filters.<\/p><\/dd>\n<dt id=\"my%20site%20is%20behind%20a%20proxy%20or%20cdn.%20is%20there%20anything%20to%20set%20up%3F\"><h3>My site is behind a proxy or CDN. Is there anything to set up?<\/h3><\/dt>\n<dd><p>Yes. SpaceBay limits login attempts for each visitor's network address. Behind a proxy or CDN, all visitors can look like one address. Add the <code>spacebay_client_ip<\/code> filter and return the visitor's real address. When SpaceBay thinks your site is behind a proxy and the filter is missing, <strong>Tools &gt; Site Health<\/strong> tells you. The <a href=\"https:\/\/docs.wpanchorbay.com\/spacebay\/\">documentation<\/a> has the details.<\/p><\/dd>\n<dt id=\"does%20my%20community%20data%20stay%20on%20my%20site%3F\"><h3>Does my community data stay on my site?<\/h3><\/dt>\n<dd><p>Yes. Your community runs on your own WordPress site. Members, posts, messages and events are stored in your own database.<\/p><\/dd>\n<dt id=\"can%20i%20create%20private%20groups%3F\"><h3>Can I create private groups?<\/h3><\/dt>\n<dd><p>SpaceBay organizes your community into spaces. Each space has its own feed and its own members, and you control community access from the Settings page.<\/p><\/dd>\n<dt id=\"does%20spacebay%20have%20private%20messaging%3F\"><h3>Does SpaceBay have private messaging?<\/h3><\/dt>\n<dd><p>Yes. Members can send one-to-one private messages and create group chats, with images, unread counts and read receipts. People added to a group chat later see the messages written after they joined.<\/p><\/dd>\n<dt id=\"are%20images%20in%20private%20messages%20and%20private%20spaces%20really%20private%3F\"><h3>Are images in private messages and private spaces really private?<\/h3><\/dt>\n<dd><p>Yes. Images in private messages and in private or secret spaces, and images in all posts when the community is for members only, are stored in a separate folder inside your uploads folder and are only shown, through your site, to people who may read the message or space. Others get \"not found\". On Apache and IIS the folder is closed by the files SpaceBay puts in it. nginx ignores those files, so the folder has a long random name; to close it completely, add this rule to your nginx server block and reload nginx:<\/p>\n\n<pre><code>location ^~ \/wp-content\/uploads\/spacebay-private\/ { internal; }\n<\/code><\/pre>\n\n<p>Change the path if your uploads folder is somewhere else. Uploaded photos have their hidden details, such as the GPS location, removed.<\/p><\/dd>\n<dt id=\"how%20do%20i%20stop%20spam%20in%20my%20community%3F\"><h3>How do I stop spam in my community?<\/h3><\/dt>\n<dd><p>Reported posts and first posts from new members wait in your review queue, so members only see them after you approve them. You can also set blocked words and suspend members.<\/p><\/dd>\n<dt id=\"can%20members%20log%20in%20with%20google%20or%20facebook%3F\"><h3>Can members log in with Google or Facebook?<\/h3><\/dt>\n<dd><p>Yes. You can turn on Google and Facebook login with your own free apps. Both are optional and off until you set them up. For safety, a social login only joins an existing account whose email address the member has confirmed, by signing up with that service or by resetting their password once; otherwise the member is asked to log in with their password.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20mobile%3F\"><h3>Does it work on mobile?<\/h3><\/dt>\n<dd><p>Yes. The community portal has a phone layout that feels like a native app, and it supports light and dark mode.<\/p><\/dd>\n<dt id=\"does%20spacebay%20work%20with%20wordpress%20multisite%20and%20rtl%20languages%3F\"><h3>Does SpaceBay work with WordPress Multisite and RTL languages?<\/h3><\/dt>\n<dd><p>Yes. SpaceBay works on network sites and supports right-to-left languages.<\/p><\/dd>\n<dt id=\"does%20spacebay%20support%20gdpr%20requests%3F\"><h3>Does SpaceBay support GDPR requests?<\/h3><\/dt>\n<dd><p>SpaceBay connects to the WordPress privacy tools, so you can export and erase a member's personal data.<\/p><\/dd>\n<dt id=\"can%20developers%20extend%20spacebay%3F\"><h3>Can developers extend SpaceBay?<\/h3><\/dt>\n<dd><p>Yes. SpaceBay has a REST API, action and filter hooks, and template overrides. A WP-CLI command fills a test site with sample content.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20deactivate%20spacebay%20pro%3F\"><h3>What happens to my data if I deactivate SpaceBay Pro?<\/h3><\/dt>\n<dd><p>Your data stays. The free plugin keeps working without Pro.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20help%3F\"><h3>Where can I get help?<\/h3><\/dt>\n<dd><p>Read the <a href=\"https:\/\/docs.wpanchorbay.com\/spacebay\/\">documentation<\/a> or contact <a href=\"https:\/\/wpanchorbay.com\/support\/\">support<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: a short \"new post\" bar that opens a focused window (full screen on phones) with a character counter, a clear reason when Post is off, an optional title, topics and a \"Discard?\" check.<\/li>\n<li>New: \"Save draft\" keeps an unfinished post in that browser (one per member; text, title, space and topics, not images). It returns when the window reopens and is cleared on post or logout.<\/li>\n<li>New: a community icon under Settings &gt; Appearance, used in the sidebar heading and as the browser tab icon. Without one, your site icon is used. 512 x 512 pixels or more works best.<\/li>\n<li>New: nine sidebar heading layouts, from \"Automatic\" to icon, logo or name only, with a live preview and a hint when an icon or logo is missing.<\/li>\n<li>New: set the longest post (500 to 50,000 characters) and comment (200 to 10,000) under Settings &gt; Posts and uploads. Lowering a limit never locks old posts. Filters: <code>spacebay_post_max_length<\/code>, <code>spacebay_comment_max_length<\/code>, <code>spacebay_message_max_length<\/code>.<\/li>\n<li>New: a photo-only switch. Every new post then needs an image, and the text is an optional caption. Comments and messages are not affected.<\/li>\n<li>New: short text-only posts can show in larger type (admin switch; limit 140 characters by default, 40 to 280).<\/li>\n<li>New: Site Health detects a proxy or CDN and points to the <code>spacebay_client_ip<\/code> filter.<\/li>\n<li>Changed: \/community\/register now goes to the sign-up page.<\/li>\n<li>Security: login limits count every spelling of one account together and cap failed logins per address.<\/li>\n<li>Security: the members directory and profile pages show only community members, not every site user.<\/li>\n<li>Security: starting chats, creating groups and adding people is limited per hour. The first email to someone who has not written in a chat has no message text, chat title or sender name.<\/li>\n<li>Security: only community members can be @mentioned or messaged by other members. Replies in a chat stay open.<\/li>\n<li>Fixed: long posts are no longer cut short without warning when the limit was raised.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Build a community on your own site: spaces, activity feed, group chat, events, member directory, points, badges and a leaderboard.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/384701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=384701"}],"author":[{"embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wpanchorbay"}],"wp:attachment":[{"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=384701"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=384701"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=384701"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=384701"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=384701"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/am.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=384701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}