From 6387d8e6e6284fd22ba872dd8640ccf54ead4db8 Mon Sep 17 00:00:00 2001 From: Alex Moon Date: Tue, 17 Jun 2025 15:21:57 -0700 Subject: [PATCH 01/10] WIP --- examples/next/template-hierarchy/.wp-env.json | 23 + examples/next/template-hierarchy/README.md | 18 + .../template-hierarchy/example-app/.gitignore | 41 ++ .../template-hierarchy/example-app/README.md | 40 ++ .../example-app/jsconfig.json | 7 + .../example-app/next.config.mjs | 6 + .../example-app/package.json | 16 + .../example-app/public/favicon.ico | Bin 0 -> 25931 bytes .../example-app/public/file.svg | 1 + .../example-app/public/globe.svg | 1 + .../example-app/public/next.svg | 1 + .../example-app/public/vercel.svg | 1 + .../example-app/public/window.svg | 1 + .../example-app/src/pages/_app.js | 5 + .../example-app/src/pages/_document.js | 13 + .../example-app/src/pages/api/hello.js | 5 + .../example-app/src/pages/index.js | 117 ++++ .../example-app/src/styles/Home.module.css | 168 +++++ .../example-app/src/styles/globals.css | 42 ++ examples/next/template-hierarchy/package.json | 22 + .../template-hierarchy/wp-env/db/database.sql | 629 ++++++++++++++++++ .../template-hierarchy/wp-env/setup/.htaccess | 15 + 22 files changed, 1172 insertions(+) create mode 100644 examples/next/template-hierarchy/.wp-env.json create mode 100644 examples/next/template-hierarchy/README.md create mode 100644 examples/next/template-hierarchy/example-app/.gitignore create mode 100644 examples/next/template-hierarchy/example-app/README.md create mode 100644 examples/next/template-hierarchy/example-app/jsconfig.json create mode 100644 examples/next/template-hierarchy/example-app/next.config.mjs create mode 100644 examples/next/template-hierarchy/example-app/package.json create mode 100644 examples/next/template-hierarchy/example-app/public/favicon.ico create mode 100644 examples/next/template-hierarchy/example-app/public/file.svg create mode 100644 examples/next/template-hierarchy/example-app/public/globe.svg create mode 100644 examples/next/template-hierarchy/example-app/public/next.svg create mode 100644 examples/next/template-hierarchy/example-app/public/vercel.svg create mode 100644 examples/next/template-hierarchy/example-app/public/window.svg create mode 100644 examples/next/template-hierarchy/example-app/src/pages/_app.js create mode 100644 examples/next/template-hierarchy/example-app/src/pages/_document.js create mode 100644 examples/next/template-hierarchy/example-app/src/pages/api/hello.js create mode 100644 examples/next/template-hierarchy/example-app/src/pages/index.js create mode 100644 examples/next/template-hierarchy/example-app/src/styles/Home.module.css create mode 100644 examples/next/template-hierarchy/example-app/src/styles/globals.css create mode 100644 examples/next/template-hierarchy/package.json create mode 100644 examples/next/template-hierarchy/wp-env/db/database.sql create mode 100644 examples/next/template-hierarchy/wp-env/setup/.htaccess diff --git a/examples/next/template-hierarchy/.wp-env.json b/examples/next/template-hierarchy/.wp-env.json new file mode 100644 index 00000000..224937d4 --- /dev/null +++ b/examples/next/template-hierarchy/.wp-env.json @@ -0,0 +1,23 @@ +{ + "phpVersion": "8.3", + "plugins": [ + "https://github.com/wp-graphql/wp-graphql/releases/latest/download/wp-graphql.zip" + ], + "themes": ["https://downloads.wordpress.org/theme/nude.1.2.zip"], + "config": { + "WP_DEBUG": true, + "SCRIPT_DEBUG": false, + "GRAPHQL_DEBUG": true, + "WP_DEBUG_LOG": true, + "WP_DEBUG_DISPLAY": false, + "SAVEQUERIES": false + }, + "mappings": { + "db": "./wp-env/db", + "wp-content/uploads": "./wp-env/uploads", + ".htaccess": "./wp-env/setup/.htaccess" + }, + "lifecycleScripts": { + "afterStart": "wp-env run cli -- wp theme activate nude && wp-env run cli -- wp theme delete --all && wp-env run cli -- wp rewrite structure '/%postname%/' && wp-env run cli -- wp rewrite flush" + } +} diff --git a/examples/next/template-hierarchy/README.md b/examples/next/template-hierarchy/README.md new file mode 100644 index 00000000..ad71d533 --- /dev/null +++ b/examples/next/template-hierarchy/README.md @@ -0,0 +1,18 @@ +# Astro Template HIerarchy and Data fetching w/URQL Example + +In this example we show how to implement the WP Template Hierarchy in Astro for use with a Headless WordPress backend using WPGraphQL. We use URQL for all routing and fetching page content. + +## Getting Started + +> [!IMPORTANT] +> Docker Desktop needs to be installed to run WordPress locally. + +1. Run `npm run example:setup` to install dependencies and configure the local WP server. +2. Run `npm run example:start` to start the WP server and Astro development server. + +> [!NOTE] +> When you kill the long running process this will not shutdown the local WP instance, only Astro. You must run `npm run example:stop` to kill the local WP server. + +## Trouble Shooting + +To reset the WP server and re-run setup you can run `npm run example:prune` and confirm "Yes" at any prompts. diff --git a/examples/next/template-hierarchy/example-app/.gitignore b/examples/next/template-hierarchy/example-app/.gitignore new file mode 100644 index 00000000..5ef6a520 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/next/template-hierarchy/example-app/README.md b/examples/next/template-hierarchy/example-app/README.md new file mode 100644 index 00000000..eb8aec46 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/README.md @@ -0,0 +1,40 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/pages/api-reference/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. + +[API routes](https://nextjs.org/docs/pages/building-your-application/routing/api-routes) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`. + +The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/pages/building-your-application/routing/api-routes) instead of React pages. + +This project uses [`next/font`](https://nextjs.org/docs/pages/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn-pages-router) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/pages/building-your-application/deploying) for more details. diff --git a/examples/next/template-hierarchy/example-app/jsconfig.json b/examples/next/template-hierarchy/example-app/jsconfig.json new file mode 100644 index 00000000..b8d6842d --- /dev/null +++ b/examples/next/template-hierarchy/example-app/jsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/examples/next/template-hierarchy/example-app/next.config.mjs b/examples/next/template-hierarchy/example-app/next.config.mjs new file mode 100644 index 00000000..d5456a15 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/next.config.mjs @@ -0,0 +1,6 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, +}; + +export default nextConfig; diff --git a/examples/next/template-hierarchy/example-app/package.json b/examples/next/template-hierarchy/example-app/package.json new file mode 100644 index 00000000..21fbceb8 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/package.json @@ -0,0 +1,16 @@ +{ + "name": "example-app", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "react": "^19.0.0", + "react-dom": "^19.0.0", + "next": "15.3.3" + } +} diff --git a/examples/next/template-hierarchy/example-app/public/favicon.ico b/examples/next/template-hierarchy/example-app/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 zcmeHv30#a{`}aL_*G&7qml|y<+KVaDM2m#dVr!KsA!#An?kSQM(q<_dDNCpjEux83 zLb9Z^XxbDl(w>%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/examples/next/template-hierarchy/example-app/public/file.svg b/examples/next/template-hierarchy/example-app/public/file.svg new file mode 100644 index 00000000..004145cd --- /dev/null +++ b/examples/next/template-hierarchy/example-app/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/next/template-hierarchy/example-app/public/globe.svg b/examples/next/template-hierarchy/example-app/public/globe.svg new file mode 100644 index 00000000..567f17b0 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/next/template-hierarchy/example-app/public/next.svg b/examples/next/template-hierarchy/example-app/public/next.svg new file mode 100644 index 00000000..5174b28c --- /dev/null +++ b/examples/next/template-hierarchy/example-app/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/next/template-hierarchy/example-app/public/vercel.svg b/examples/next/template-hierarchy/example-app/public/vercel.svg new file mode 100644 index 00000000..77053960 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/next/template-hierarchy/example-app/public/window.svg b/examples/next/template-hierarchy/example-app/public/window.svg new file mode 100644 index 00000000..b2b2a44f --- /dev/null +++ b/examples/next/template-hierarchy/example-app/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/next/template-hierarchy/example-app/src/pages/_app.js b/examples/next/template-hierarchy/example-app/src/pages/_app.js new file mode 100644 index 00000000..b97e52fc --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/pages/_app.js @@ -0,0 +1,5 @@ +import "@/styles/globals.css"; + +export default function App({ Component, pageProps }) { + return ; +} diff --git a/examples/next/template-hierarchy/example-app/src/pages/_document.js b/examples/next/template-hierarchy/example-app/src/pages/_document.js new file mode 100644 index 00000000..b2fff8b4 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/pages/_document.js @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from "next/document"; + +export default function Document() { + return ( + + + +
+ + + + ); +} diff --git a/examples/next/template-hierarchy/example-app/src/pages/api/hello.js b/examples/next/template-hierarchy/example-app/src/pages/api/hello.js new file mode 100644 index 00000000..aee21e9a --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/pages/api/hello.js @@ -0,0 +1,5 @@ +// Next.js API route support: https://nextjs.org/docs/api-routes/introduction + +export default function handler(req, res) { + res.status(200).json({ name: "John Doe" }); +} diff --git a/examples/next/template-hierarchy/example-app/src/pages/index.js b/examples/next/template-hierarchy/example-app/src/pages/index.js new file mode 100644 index 00000000..c6599e77 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/pages/index.js @@ -0,0 +1,117 @@ +import Head from "next/head"; +import Image from "next/image"; +import { Geist, Geist_Mono } from "next/font/google"; +import styles from "@/styles/Home.module.css"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export default function Home() { + return ( + <> + + Create Next App + + + + +
+
+ Next.js logo +
    +
  1. + Get started by editing src/pages/index.js. +
  2. +
  3. Save and see your changes instantly.
  4. +
+ + +
+ +
+ + ); +} diff --git a/examples/next/template-hierarchy/example-app/src/styles/Home.module.css b/examples/next/template-hierarchy/example-app/src/styles/Home.module.css new file mode 100644 index 00000000..a11c8f31 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/styles/Home.module.css @@ -0,0 +1,168 @@ +.page { + --gray-rgb: 0, 0, 0; + --gray-alpha-200: rgba(var(--gray-rgb), 0.08); + --gray-alpha-100: rgba(var(--gray-rgb), 0.05); + + --button-primary-hover: #383838; + --button-secondary-hover: #f2f2f2; + + display: grid; + grid-template-rows: 20px 1fr 20px; + align-items: center; + justify-items: center; + min-height: 100svh; + padding: 80px; + gap: 64px; + font-family: var(--font-geist-sans); +} + +@media (prefers-color-scheme: dark) { + .page { + --gray-rgb: 255, 255, 255; + --gray-alpha-200: rgba(var(--gray-rgb), 0.145); + --gray-alpha-100: rgba(var(--gray-rgb), 0.06); + + --button-primary-hover: #ccc; + --button-secondary-hover: #1a1a1a; + } +} + +.main { + display: flex; + flex-direction: column; + gap: 32px; + grid-row-start: 2; +} + +.main ol { + font-family: var(--font-geist-mono); + padding-left: 0; + margin: 0; + font-size: 14px; + line-height: 24px; + letter-spacing: -0.01em; + list-style-position: inside; +} + +.main li:not(:last-of-type) { + margin-bottom: 8px; +} + +.main code { + font-family: inherit; + background: var(--gray-alpha-100); + padding: 2px 4px; + border-radius: 4px; + font-weight: 600; +} + +.ctas { + display: flex; + gap: 16px; +} + +.ctas a { + appearance: none; + border-radius: 128px; + height: 48px; + padding: 0 20px; + border: none; + border: 1px solid transparent; + transition: + background 0.2s, + color 0.2s, + border-color 0.2s; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + font-size: 16px; + line-height: 20px; + font-weight: 500; +} + +a.primary { + background: var(--foreground); + color: var(--background); + gap: 8px; +} + +a.secondary { + border-color: var(--gray-alpha-200); + min-width: 158px; +} + +.footer { + grid-row-start: 3; + display: flex; + gap: 24px; +} + +.footer a { + display: flex; + align-items: center; + gap: 8px; +} + +.footer img { + flex-shrink: 0; +} + +/* Enable hover only on non-touch devices */ +@media (hover: hover) and (pointer: fine) { + a.primary:hover { + background: var(--button-primary-hover); + border-color: transparent; + } + + a.secondary:hover { + background: var(--button-secondary-hover); + border-color: transparent; + } + + .footer a:hover { + text-decoration: underline; + text-underline-offset: 4px; + } +} + +@media (max-width: 600px) { + .page { + padding: 32px; + padding-bottom: 80px; + } + + .main { + align-items: center; + } + + .main ol { + text-align: center; + } + + .ctas { + flex-direction: column; + } + + .ctas a { + font-size: 14px; + height: 40px; + padding: 0 16px; + } + + a.secondary { + min-width: auto; + } + + .footer { + flex-wrap: wrap; + align-items: center; + justify-content: center; + } +} + +@media (prefers-color-scheme: dark) { + .logo { + filter: invert(); + } +} diff --git a/examples/next/template-hierarchy/example-app/src/styles/globals.css b/examples/next/template-hierarchy/example-app/src/styles/globals.css new file mode 100644 index 00000000..e3734be1 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/styles/globals.css @@ -0,0 +1,42 @@ +:root { + --background: #ffffff; + --foreground: #171717; +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +html, +body { + max-width: 100vw; + overflow-x: hidden; +} + +body { + color: var(--foreground); + background: var(--background); + font-family: Arial, Helvetica, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +a { + color: inherit; + text-decoration: none; +} + +@media (prefers-color-scheme: dark) { + html { + color-scheme: dark; + } +} diff --git a/examples/next/template-hierarchy/package.json b/examples/next/template-hierarchy/package.json new file mode 100644 index 00000000..e2680863 --- /dev/null +++ b/examples/next/template-hierarchy/package.json @@ -0,0 +1,22 @@ +{ + "name": "template-hierarchy-data-fetching-urql", + "type": "module", + "version": "0.0.1", + "scripts": { + "example:bootstrap": "npm install & npm run app:install", + "example:start": "pnpm run wp:start && npm run app:dev", + "example:setup": "npm run example:bootstrap && npm run wp:start && npm run wp:db:import && npm run example:stop", + "example:stop": "npm run wp:stop", + "example:prune": "npm run wp:destroy && npm run example:setup && npm run example:start", + "app:dev": "cd example-app && pwd && npm run dev && cd ..", + "app:install": "cd ./example-app && npm install && cd ..", + "wp:start": "wp-env start", + "wp:stop": "wp-env stop", + "wp:destroy": "wp-env destroy --config ./wp-env/wp-env.json", + "wp:db:export": "wp-env run cli -- wp db export /var/www/html/db/database.sql", + "wp:db:import": "wp-env run cli -- wp db import /var/www/html/db/database.sql" + }, + "devDependencies": { + "@wordpress/env": "^10.21.0" + } +} diff --git a/examples/next/template-hierarchy/wp-env/db/database.sql b/examples/next/template-hierarchy/wp-env/db/database.sql new file mode 100644 index 00000000..76893385 --- /dev/null +++ b/examples/next/template-hierarchy/wp-env/db/database.sql @@ -0,0 +1,629 @@ +/*M!999999\- enable the sandbox mode */ +-- MariaDB dump 10.19-11.4.5-MariaDB, for Linux (aarch64) +-- +-- Host: mysql Database: wordpress +-- ------------------------------------------------------ +-- Server version 11.7.2-MariaDB-ubu2404 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*M!100616 SET @OLD_NOTE_VERBOSITY=@@NOTE_VERBOSITY, NOTE_VERBOSITY=0 */; + +-- +-- Table structure for table `wp_commentmeta` +-- + +DROP TABLE IF EXISTS `wp_commentmeta`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_commentmeta` ( + `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `comment_id` bigint(20) unsigned NOT NULL DEFAULT 0, + `meta_key` varchar(255) DEFAULT NULL, + `meta_value` longtext DEFAULT NULL, + PRIMARY KEY (`meta_id`), + KEY `comment_id` (`comment_id`), + KEY `meta_key` (`meta_key`(191)) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_commentmeta` +-- + +LOCK TABLES `wp_commentmeta` WRITE; +/*!40000 ALTER TABLE `wp_commentmeta` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_commentmeta` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_comments` +-- + +DROP TABLE IF EXISTS `wp_comments`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_comments` ( + `comment_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `comment_post_ID` bigint(20) unsigned NOT NULL DEFAULT 0, + `comment_author` tinytext NOT NULL, + `comment_author_email` varchar(100) NOT NULL DEFAULT '', + `comment_author_url` varchar(200) NOT NULL DEFAULT '', + `comment_author_IP` varchar(100) NOT NULL DEFAULT '', + `comment_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `comment_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `comment_content` text NOT NULL, + `comment_karma` int(11) NOT NULL DEFAULT 0, + `comment_approved` varchar(20) NOT NULL DEFAULT '1', + `comment_agent` varchar(255) NOT NULL DEFAULT '', + `comment_type` varchar(20) NOT NULL DEFAULT 'comment', + `comment_parent` bigint(20) unsigned NOT NULL DEFAULT 0, + `user_id` bigint(20) unsigned NOT NULL DEFAULT 0, + PRIMARY KEY (`comment_ID`), + KEY `comment_post_ID` (`comment_post_ID`), + KEY `comment_approved_date_gmt` (`comment_approved`,`comment_date_gmt`), + KEY `comment_date_gmt` (`comment_date_gmt`), + KEY `comment_parent` (`comment_parent`), + KEY `comment_author_email` (`comment_author_email`(10)) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_comments` +-- + +LOCK TABLES `wp_comments` WRITE; +/*!40000 ALTER TABLE `wp_comments` DISABLE KEYS */; +INSERT INTO `wp_comments` VALUES +(1,1,'A WordPress Commenter','wapuu@wordpress.example','https://wordpress.org/','','2025-04-09 23:13:13','2025-04-09 23:13:13','Hi, this is a comment.\nTo get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.\nCommenter avatars come from Gravatar.',0,'post-trashed','','comment',0,0), +(2,6,'A WordPress Commenter','wapuu@wordpress.example','https://wordpress.org/','','2025-04-09 18:29:34','2025-04-09 18:29:34','Hi, this is a comment.\nTo get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.\nCommenter avatars come from Gravatar.',0,'1','','comment',0,0); +/*!40000 ALTER TABLE `wp_comments` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_links` +-- + +DROP TABLE IF EXISTS `wp_links`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_links` ( + `link_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `link_url` varchar(255) NOT NULL DEFAULT '', + `link_name` varchar(255) NOT NULL DEFAULT '', + `link_image` varchar(255) NOT NULL DEFAULT '', + `link_target` varchar(25) NOT NULL DEFAULT '', + `link_description` varchar(255) NOT NULL DEFAULT '', + `link_visible` varchar(20) NOT NULL DEFAULT 'Y', + `link_owner` bigint(20) unsigned NOT NULL DEFAULT 1, + `link_rating` int(11) NOT NULL DEFAULT 0, + `link_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `link_rel` varchar(255) NOT NULL DEFAULT '', + `link_notes` mediumtext NOT NULL, + `link_rss` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`link_id`), + KEY `link_visible` (`link_visible`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_links` +-- + +LOCK TABLES `wp_links` WRITE; +/*!40000 ALTER TABLE `wp_links` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_links` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_options` +-- + +DROP TABLE IF EXISTS `wp_options`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_options` ( + `option_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `option_name` varchar(191) NOT NULL DEFAULT '', + `option_value` longtext NOT NULL, + `autoload` varchar(20) NOT NULL DEFAULT 'yes', + PRIMARY KEY (`option_id`), + UNIQUE KEY `option_name` (`option_name`), + KEY `autoload` (`autoload`) +) ENGINE=InnoDB AUTO_INCREMENT=167 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_options` +-- + +LOCK TABLES `wp_options` WRITE; +/*!40000 ALTER TABLE `wp_options` DISABLE KEYS */; +INSERT INTO `wp_options` VALUES +(1,'cron','a:12:{i:1744240394;a:2:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1744240416;a:3:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:21:\"wp_update_user_counts\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744240417;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1744240418;a:1:{s:29:\"wp-graphql_tracker_send_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"weekly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:604800;}}}i:1744240429;a:1:{s:30:\"wp_delete_temp_updater_backups\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"weekly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:604800;}}}i:1744240476;a:1:{s:28:\"wp_update_comment_type_batch\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1744243993;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744245793;a:1:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744247593;a:1:{s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744326794;a:1:{s:30:\"wp_site_health_scheduled_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"weekly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:604800;}}}i:1744326838;a:1:{s:26:\"importer_scheduled_cleanup\";a:1:{s:32:\"c9059feef497c200e69cb9956a81f005\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:1:{i:0;i:5;}}}}s:7:\"version\";i:2;}','on'), +(2,'siteurl','http://localhost:8888','on'), +(3,'home','http://localhost:8888','on'), +(4,'blogname','template-hierarchy-data-fetching-urql','on'), +(5,'blogdescription','','on'), +(6,'users_can_register','0','on'), +(7,'admin_email','wordpress@example.com','on'), +(8,'start_of_week','1','on'), +(9,'use_balanceTags','0','on'), +(10,'use_smilies','1','on'), +(11,'require_name_email','1','on'), +(12,'comments_notify','1','on'), +(13,'posts_per_rss','10','on'), +(14,'rss_use_excerpt','0','on'), +(15,'mailserver_url','mail.example.com','on'), +(16,'mailserver_login','login@example.com','on'), +(17,'mailserver_pass','','on'), +(18,'mailserver_port','110','on'), +(19,'default_category','1','on'), +(20,'default_comment_status','open','on'), +(21,'default_ping_status','open','on'), +(22,'default_pingback_flag','1','on'), +(23,'posts_per_page','10','on'), +(24,'date_format','F j, Y','on'), +(25,'time_format','g:i a','on'), +(26,'links_updated_date_format','F j, Y g:i a','on'), +(27,'comment_moderation','0','on'), +(28,'moderation_notify','1','on'), +(29,'permalink_structure','/%postname%/','on'), +(30,'rewrite_rules','a:95:{s:11:\"^wp-json/?$\";s:22:\"index.php?rest_route=/\";s:14:\"^wp-json/(.*)?\";s:33:\"index.php?rest_route=/$matches[1]\";s:21:\"^index.php/wp-json/?$\";s:22:\"index.php?rest_route=/\";s:24:\"^index.php/wp-json/(.*)?\";s:33:\"index.php?rest_route=/$matches[1]\";s:17:\"^wp-sitemap\\.xml$\";s:23:\"index.php?sitemap=index\";s:17:\"^wp-sitemap\\.xsl$\";s:36:\"index.php?sitemap-stylesheet=sitemap\";s:23:\"^wp-sitemap-index\\.xsl$\";s:34:\"index.php?sitemap-stylesheet=index\";s:48:\"^wp-sitemap-([a-z]+?)-([a-z\\d_-]+?)-(\\d+?)\\.xml$\";s:75:\"index.php?sitemap=$matches[1]&sitemap-subtype=$matches[2]&paged=$matches[3]\";s:34:\"^wp-sitemap-([a-z]+?)-(\\d+?)\\.xml$\";s:47:\"index.php?sitemap=$matches[1]&paged=$matches[2]\";s:10:\"graphql/?$\";s:22:\"index.php?graphql=true\";s:47:\"category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:52:\"index.php?category_name=$matches[1]&feed=$matches[2]\";s:42:\"category/(.+?)/(feed|rdf|rss|rss2|atom)/?$\";s:52:\"index.php?category_name=$matches[1]&feed=$matches[2]\";s:23:\"category/(.+?)/embed/?$\";s:46:\"index.php?category_name=$matches[1]&embed=true\";s:35:\"category/(.+?)/page/?([0-9]{1,})/?$\";s:53:\"index.php?category_name=$matches[1]&paged=$matches[2]\";s:17:\"category/(.+?)/?$\";s:35:\"index.php?category_name=$matches[1]\";s:44:\"tag/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?tag=$matches[1]&feed=$matches[2]\";s:39:\"tag/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?tag=$matches[1]&feed=$matches[2]\";s:20:\"tag/([^/]+)/embed/?$\";s:36:\"index.php?tag=$matches[1]&embed=true\";s:32:\"tag/([^/]+)/page/?([0-9]{1,})/?$\";s:43:\"index.php?tag=$matches[1]&paged=$matches[2]\";s:14:\"tag/([^/]+)/?$\";s:25:\"index.php?tag=$matches[1]\";s:45:\"type/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?post_format=$matches[1]&feed=$matches[2]\";s:40:\"type/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?post_format=$matches[1]&feed=$matches[2]\";s:21:\"type/([^/]+)/embed/?$\";s:44:\"index.php?post_format=$matches[1]&embed=true\";s:33:\"type/([^/]+)/page/?([0-9]{1,})/?$\";s:51:\"index.php?post_format=$matches[1]&paged=$matches[2]\";s:15:\"type/([^/]+)/?$\";s:33:\"index.php?post_format=$matches[1]\";s:12:\"robots\\.txt$\";s:18:\"index.php?robots=1\";s:13:\"favicon\\.ico$\";s:19:\"index.php?favicon=1\";s:12:\"sitemap\\.xml\";s:24:\"index.php??sitemap=index\";s:48:\".*wp-(atom|rdf|rss|rss2|feed|commentsrss2)\\.php$\";s:18:\"index.php?feed=old\";s:20:\".*wp-app\\.php(/.*)?$\";s:19:\"index.php?error=403\";s:18:\".*wp-register.php$\";s:23:\"index.php?register=true\";s:32:\"feed/(feed|rdf|rss|rss2|atom)/?$\";s:27:\"index.php?&feed=$matches[1]\";s:27:\"(feed|rdf|rss|rss2|atom)/?$\";s:27:\"index.php?&feed=$matches[1]\";s:8:\"embed/?$\";s:21:\"index.php?&embed=true\";s:20:\"page/?([0-9]{1,})/?$\";s:28:\"index.php?&paged=$matches[1]\";s:41:\"comments/feed/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?&feed=$matches[1]&withcomments=1\";s:36:\"comments/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?&feed=$matches[1]&withcomments=1\";s:17:\"comments/embed/?$\";s:21:\"index.php?&embed=true\";s:44:\"search/(.+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:40:\"index.php?s=$matches[1]&feed=$matches[2]\";s:39:\"search/(.+)/(feed|rdf|rss|rss2|atom)/?$\";s:40:\"index.php?s=$matches[1]&feed=$matches[2]\";s:20:\"search/(.+)/embed/?$\";s:34:\"index.php?s=$matches[1]&embed=true\";s:32:\"search/(.+)/page/?([0-9]{1,})/?$\";s:41:\"index.php?s=$matches[1]&paged=$matches[2]\";s:14:\"search/(.+)/?$\";s:23:\"index.php?s=$matches[1]\";s:47:\"author/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?author_name=$matches[1]&feed=$matches[2]\";s:42:\"author/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?author_name=$matches[1]&feed=$matches[2]\";s:23:\"author/([^/]+)/embed/?$\";s:44:\"index.php?author_name=$matches[1]&embed=true\";s:35:\"author/([^/]+)/page/?([0-9]{1,})/?$\";s:51:\"index.php?author_name=$matches[1]&paged=$matches[2]\";s:17:\"author/([^/]+)/?$\";s:33:\"index.php?author_name=$matches[1]\";s:69:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:80:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]\";s:64:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$\";s:80:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]\";s:45:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/embed/?$\";s:74:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&embed=true\";s:57:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/page/?([0-9]{1,})/?$\";s:81:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&paged=$matches[4]\";s:39:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$\";s:63:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]\";s:56:\"([0-9]{4})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:64:\"index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]\";s:51:\"([0-9]{4})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$\";s:64:\"index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]\";s:32:\"([0-9]{4})/([0-9]{1,2})/embed/?$\";s:58:\"index.php?year=$matches[1]&monthnum=$matches[2]&embed=true\";s:44:\"([0-9]{4})/([0-9]{1,2})/page/?([0-9]{1,})/?$\";s:65:\"index.php?year=$matches[1]&monthnum=$matches[2]&paged=$matches[3]\";s:26:\"([0-9]{4})/([0-9]{1,2})/?$\";s:47:\"index.php?year=$matches[1]&monthnum=$matches[2]\";s:43:\"([0-9]{4})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?year=$matches[1]&feed=$matches[2]\";s:38:\"([0-9]{4})/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?year=$matches[1]&feed=$matches[2]\";s:19:\"([0-9]{4})/embed/?$\";s:37:\"index.php?year=$matches[1]&embed=true\";s:31:\"([0-9]{4})/page/?([0-9]{1,})/?$\";s:44:\"index.php?year=$matches[1]&paged=$matches[2]\";s:13:\"([0-9]{4})/?$\";s:26:\"index.php?year=$matches[1]\";s:27:\".?.+?/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:37:\".?.+?/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:57:\".?.+?/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:52:\".?.+?/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:52:\".?.+?/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:33:\".?.+?/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:16:\"(.?.+?)/embed/?$\";s:41:\"index.php?pagename=$matches[1]&embed=true\";s:20:\"(.?.+?)/trackback/?$\";s:35:\"index.php?pagename=$matches[1]&tb=1\";s:40:\"(.?.+?)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:47:\"index.php?pagename=$matches[1]&feed=$matches[2]\";s:35:\"(.?.+?)/(feed|rdf|rss|rss2|atom)/?$\";s:47:\"index.php?pagename=$matches[1]&feed=$matches[2]\";s:28:\"(.?.+?)/page/?([0-9]{1,})/?$\";s:48:\"index.php?pagename=$matches[1]&paged=$matches[2]\";s:35:\"(.?.+?)/comment-page-([0-9]{1,})/?$\";s:48:\"index.php?pagename=$matches[1]&cpage=$matches[2]\";s:24:\"(.?.+?)(?:/([0-9]+))?/?$\";s:47:\"index.php?pagename=$matches[1]&page=$matches[2]\";s:27:\"[^/]+/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:37:\"[^/]+/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:57:\"[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:52:\"[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:52:\"[^/]+/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:33:\"[^/]+/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:16:\"([^/]+)/embed/?$\";s:37:\"index.php?name=$matches[1]&embed=true\";s:20:\"([^/]+)/trackback/?$\";s:31:\"index.php?name=$matches[1]&tb=1\";s:40:\"([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?name=$matches[1]&feed=$matches[2]\";s:35:\"([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?name=$matches[1]&feed=$matches[2]\";s:28:\"([^/]+)/page/?([0-9]{1,})/?$\";s:44:\"index.php?name=$matches[1]&paged=$matches[2]\";s:35:\"([^/]+)/comment-page-([0-9]{1,})/?$\";s:44:\"index.php?name=$matches[1]&cpage=$matches[2]\";s:24:\"([^/]+)(?:/([0-9]+))?/?$\";s:43:\"index.php?name=$matches[1]&page=$matches[2]\";s:16:\"[^/]+/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:26:\"[^/]+/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:46:\"[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:41:\"[^/]+/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:41:\"[^/]+/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:22:\"[^/]+/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";}','on'), +(31,'hack_file','0','on'), +(32,'blog_charset','UTF-8','on'), +(33,'moderation_keys','','off'), +(34,'active_plugins','a:1:{i:1;s:25:\"wp-graphql/wp-graphql.php\";}','on'), +(35,'category_base','','on'), +(36,'ping_sites','http://rpc.pingomatic.com/','on'), +(37,'comment_max_links','2','on'), +(38,'gmt_offset','0','on'), +(39,'default_email_category','1','on'), +(40,'recently_edited','','off'), +(41,'template','nude','on'), +(42,'stylesheet','nude','on'), +(43,'comment_registration','0','on'), +(44,'html_type','text/html','on'), +(45,'use_trackback','0','on'), +(46,'default_role','subscriber','on'), +(47,'db_version','58975','on'), +(48,'uploads_use_yearmonth_folders','1','on'), +(49,'upload_path','','on'), +(50,'blog_public','1','on'), +(51,'default_link_category','2','on'), +(52,'show_on_front','posts','on'), +(53,'tag_base','','on'), +(54,'show_avatars','1','on'), +(55,'avatar_rating','G','on'), +(56,'upload_url_path','','on'), +(57,'thumbnail_size_w','150','on'), +(58,'thumbnail_size_h','150','on'), +(59,'thumbnail_crop','1','on'), +(60,'medium_size_w','300','on'), +(61,'medium_size_h','300','on'), +(62,'avatar_default','mystery','on'), +(63,'large_size_w','1024','on'), +(64,'large_size_h','1024','on'), +(65,'image_default_link_type','none','on'), +(66,'image_default_size','','on'), +(67,'image_default_align','','on'), +(68,'close_comments_for_old_posts','0','on'), +(69,'close_comments_days_old','14','on'), +(70,'thread_comments','1','on'), +(71,'thread_comments_depth','5','on'), +(72,'page_comments','0','on'), +(73,'comments_per_page','50','on'), +(74,'default_comments_page','newest','on'), +(75,'comment_order','asc','on'), +(76,'sticky_posts','a:0:{}','on'), +(77,'widget_categories','a:0:{}','on'), +(78,'widget_text','a:0:{}','on'), +(79,'widget_rss','a:0:{}','on'), +(80,'uninstall_plugins','a:0:{}','off'), +(81,'timezone_string','','on'), +(82,'page_for_posts','0','on'), +(83,'page_on_front','0','on'), +(84,'default_post_format','0','on'), +(85,'link_manager_enabled','0','on'), +(86,'finished_splitting_shared_terms','1','on'), +(87,'site_icon','0','on'), +(88,'medium_large_size_w','768','on'), +(89,'medium_large_size_h','0','on'), +(90,'wp_page_for_privacy_policy','3','on'), +(91,'show_comments_cookies_opt_in','1','on'), +(92,'admin_email_lifespan','1759792393','on'), +(93,'disallowed_keys','','off'), +(94,'comment_previously_approved','1','on'), +(95,'auto_plugin_theme_update_emails','a:0:{}','off'), +(96,'auto_update_core_dev','enabled','on'), +(97,'auto_update_core_minor','enabled','on'), +(98,'auto_update_core_major','enabled','on'), +(99,'wp_force_deactivated_plugins','a:0:{}','on'), +(100,'wp_attachment_pages_enabled','0','on'), +(101,'initial_db_version','58975','on'), +(102,'wp_user_roles','a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:61:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;s:10:\"list_users\";b:1;s:12:\"remove_users\";b:1;s:13:\"promote_users\";b:1;s:18:\"edit_theme_options\";b:1;s:13:\"delete_themes\";b:1;s:6:\"export\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}','on'), +(103,'fresh_site','0','off'), +(104,'user_count','1','off'), +(105,'widget_block','a:6:{i:2;a:1:{s:7:\"content\";s:19:\"\";}i:3;a:1:{s:7:\"content\";s:154:\"

Recent Posts

\";}i:4;a:1:{s:7:\"content\";s:227:\"

Recent Comments

\";}i:5;a:1:{s:7:\"content\";s:146:\"

Archives

\";}i:6;a:1:{s:7:\"content\";s:150:\"

Categories

\";}s:12:\"_multiwidget\";i:1;}','auto'), +(106,'sidebars_widgets','a:2:{s:19:\"wp_inactive_widgets\";a:5:{i:0;s:7:\"block-2\";i:1;s:7:\"block-3\";i:2;s:7:\"block-4\";i:3;s:7:\"block-5\";i:4;s:7:\"block-6\";}s:13:\"array_version\";i:3;}','auto'), +(107,'widget_pages','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(108,'widget_calendar','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(109,'widget_archives','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(110,'widget_media_audio','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(111,'widget_media_image','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(112,'widget_media_gallery','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(113,'widget_media_video','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(114,'widget_meta','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(115,'widget_search','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(116,'widget_recent-posts','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(117,'widget_recent-comments','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(118,'widget_tag_cloud','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(119,'widget_nav_menu','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(120,'widget_custom_html','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), +(121,'_transient_wp_core_block_css_files','a:2:{s:7:\"version\";s:5:\"6.7.2\";s:5:\"files\";a:540:{i:0;s:23:\"archives/editor-rtl.css\";i:1;s:27:\"archives/editor-rtl.min.css\";i:2;s:19:\"archives/editor.css\";i:3;s:23:\"archives/editor.min.css\";i:4;s:22:\"archives/style-rtl.css\";i:5;s:26:\"archives/style-rtl.min.css\";i:6;s:18:\"archives/style.css\";i:7;s:22:\"archives/style.min.css\";i:8;s:20:\"audio/editor-rtl.css\";i:9;s:24:\"audio/editor-rtl.min.css\";i:10;s:16:\"audio/editor.css\";i:11;s:20:\"audio/editor.min.css\";i:12;s:19:\"audio/style-rtl.css\";i:13;s:23:\"audio/style-rtl.min.css\";i:14;s:15:\"audio/style.css\";i:15;s:19:\"audio/style.min.css\";i:16;s:19:\"audio/theme-rtl.css\";i:17;s:23:\"audio/theme-rtl.min.css\";i:18;s:15:\"audio/theme.css\";i:19;s:19:\"audio/theme.min.css\";i:20;s:21:\"avatar/editor-rtl.css\";i:21;s:25:\"avatar/editor-rtl.min.css\";i:22;s:17:\"avatar/editor.css\";i:23;s:21:\"avatar/editor.min.css\";i:24;s:20:\"avatar/style-rtl.css\";i:25;s:24:\"avatar/style-rtl.min.css\";i:26;s:16:\"avatar/style.css\";i:27;s:20:\"avatar/style.min.css\";i:28;s:21:\"button/editor-rtl.css\";i:29;s:25:\"button/editor-rtl.min.css\";i:30;s:17:\"button/editor.css\";i:31;s:21:\"button/editor.min.css\";i:32;s:20:\"button/style-rtl.css\";i:33;s:24:\"button/style-rtl.min.css\";i:34;s:16:\"button/style.css\";i:35;s:20:\"button/style.min.css\";i:36;s:22:\"buttons/editor-rtl.css\";i:37;s:26:\"buttons/editor-rtl.min.css\";i:38;s:18:\"buttons/editor.css\";i:39;s:22:\"buttons/editor.min.css\";i:40;s:21:\"buttons/style-rtl.css\";i:41;s:25:\"buttons/style-rtl.min.css\";i:42;s:17:\"buttons/style.css\";i:43;s:21:\"buttons/style.min.css\";i:44;s:22:\"calendar/style-rtl.css\";i:45;s:26:\"calendar/style-rtl.min.css\";i:46;s:18:\"calendar/style.css\";i:47;s:22:\"calendar/style.min.css\";i:48;s:25:\"categories/editor-rtl.css\";i:49;s:29:\"categories/editor-rtl.min.css\";i:50;s:21:\"categories/editor.css\";i:51;s:25:\"categories/editor.min.css\";i:52;s:24:\"categories/style-rtl.css\";i:53;s:28:\"categories/style-rtl.min.css\";i:54;s:20:\"categories/style.css\";i:55;s:24:\"categories/style.min.css\";i:56;s:19:\"code/editor-rtl.css\";i:57;s:23:\"code/editor-rtl.min.css\";i:58;s:15:\"code/editor.css\";i:59;s:19:\"code/editor.min.css\";i:60;s:18:\"code/style-rtl.css\";i:61;s:22:\"code/style-rtl.min.css\";i:62;s:14:\"code/style.css\";i:63;s:18:\"code/style.min.css\";i:64;s:18:\"code/theme-rtl.css\";i:65;s:22:\"code/theme-rtl.min.css\";i:66;s:14:\"code/theme.css\";i:67;s:18:\"code/theme.min.css\";i:68;s:22:\"columns/editor-rtl.css\";i:69;s:26:\"columns/editor-rtl.min.css\";i:70;s:18:\"columns/editor.css\";i:71;s:22:\"columns/editor.min.css\";i:72;s:21:\"columns/style-rtl.css\";i:73;s:25:\"columns/style-rtl.min.css\";i:74;s:17:\"columns/style.css\";i:75;s:21:\"columns/style.min.css\";i:76;s:33:\"comment-author-name/style-rtl.css\";i:77;s:37:\"comment-author-name/style-rtl.min.css\";i:78;s:29:\"comment-author-name/style.css\";i:79;s:33:\"comment-author-name/style.min.css\";i:80;s:29:\"comment-content/style-rtl.css\";i:81;s:33:\"comment-content/style-rtl.min.css\";i:82;s:25:\"comment-content/style.css\";i:83;s:29:\"comment-content/style.min.css\";i:84;s:26:\"comment-date/style-rtl.css\";i:85;s:30:\"comment-date/style-rtl.min.css\";i:86;s:22:\"comment-date/style.css\";i:87;s:26:\"comment-date/style.min.css\";i:88;s:31:\"comment-edit-link/style-rtl.css\";i:89;s:35:\"comment-edit-link/style-rtl.min.css\";i:90;s:27:\"comment-edit-link/style.css\";i:91;s:31:\"comment-edit-link/style.min.css\";i:92;s:32:\"comment-reply-link/style-rtl.css\";i:93;s:36:\"comment-reply-link/style-rtl.min.css\";i:94;s:28:\"comment-reply-link/style.css\";i:95;s:32:\"comment-reply-link/style.min.css\";i:96;s:30:\"comment-template/style-rtl.css\";i:97;s:34:\"comment-template/style-rtl.min.css\";i:98;s:26:\"comment-template/style.css\";i:99;s:30:\"comment-template/style.min.css\";i:100;s:42:\"comments-pagination-numbers/editor-rtl.css\";i:101;s:46:\"comments-pagination-numbers/editor-rtl.min.css\";i:102;s:38:\"comments-pagination-numbers/editor.css\";i:103;s:42:\"comments-pagination-numbers/editor.min.css\";i:104;s:34:\"comments-pagination/editor-rtl.css\";i:105;s:38:\"comments-pagination/editor-rtl.min.css\";i:106;s:30:\"comments-pagination/editor.css\";i:107;s:34:\"comments-pagination/editor.min.css\";i:108;s:33:\"comments-pagination/style-rtl.css\";i:109;s:37:\"comments-pagination/style-rtl.min.css\";i:110;s:29:\"comments-pagination/style.css\";i:111;s:33:\"comments-pagination/style.min.css\";i:112;s:29:\"comments-title/editor-rtl.css\";i:113;s:33:\"comments-title/editor-rtl.min.css\";i:114;s:25:\"comments-title/editor.css\";i:115;s:29:\"comments-title/editor.min.css\";i:116;s:23:\"comments/editor-rtl.css\";i:117;s:27:\"comments/editor-rtl.min.css\";i:118;s:19:\"comments/editor.css\";i:119;s:23:\"comments/editor.min.css\";i:120;s:22:\"comments/style-rtl.css\";i:121;s:26:\"comments/style-rtl.min.css\";i:122;s:18:\"comments/style.css\";i:123;s:22:\"comments/style.min.css\";i:124;s:20:\"cover/editor-rtl.css\";i:125;s:24:\"cover/editor-rtl.min.css\";i:126;s:16:\"cover/editor.css\";i:127;s:20:\"cover/editor.min.css\";i:128;s:19:\"cover/style-rtl.css\";i:129;s:23:\"cover/style-rtl.min.css\";i:130;s:15:\"cover/style.css\";i:131;s:19:\"cover/style.min.css\";i:132;s:22:\"details/editor-rtl.css\";i:133;s:26:\"details/editor-rtl.min.css\";i:134;s:18:\"details/editor.css\";i:135;s:22:\"details/editor.min.css\";i:136;s:21:\"details/style-rtl.css\";i:137;s:25:\"details/style-rtl.min.css\";i:138;s:17:\"details/style.css\";i:139;s:21:\"details/style.min.css\";i:140;s:20:\"embed/editor-rtl.css\";i:141;s:24:\"embed/editor-rtl.min.css\";i:142;s:16:\"embed/editor.css\";i:143;s:20:\"embed/editor.min.css\";i:144;s:19:\"embed/style-rtl.css\";i:145;s:23:\"embed/style-rtl.min.css\";i:146;s:15:\"embed/style.css\";i:147;s:19:\"embed/style.min.css\";i:148;s:19:\"embed/theme-rtl.css\";i:149;s:23:\"embed/theme-rtl.min.css\";i:150;s:15:\"embed/theme.css\";i:151;s:19:\"embed/theme.min.css\";i:152;s:19:\"file/editor-rtl.css\";i:153;s:23:\"file/editor-rtl.min.css\";i:154;s:15:\"file/editor.css\";i:155;s:19:\"file/editor.min.css\";i:156;s:18:\"file/style-rtl.css\";i:157;s:22:\"file/style-rtl.min.css\";i:158;s:14:\"file/style.css\";i:159;s:18:\"file/style.min.css\";i:160;s:23:\"footnotes/style-rtl.css\";i:161;s:27:\"footnotes/style-rtl.min.css\";i:162;s:19:\"footnotes/style.css\";i:163;s:23:\"footnotes/style.min.css\";i:164;s:23:\"freeform/editor-rtl.css\";i:165;s:27:\"freeform/editor-rtl.min.css\";i:166;s:19:\"freeform/editor.css\";i:167;s:23:\"freeform/editor.min.css\";i:168;s:22:\"gallery/editor-rtl.css\";i:169;s:26:\"gallery/editor-rtl.min.css\";i:170;s:18:\"gallery/editor.css\";i:171;s:22:\"gallery/editor.min.css\";i:172;s:21:\"gallery/style-rtl.css\";i:173;s:25:\"gallery/style-rtl.min.css\";i:174;s:17:\"gallery/style.css\";i:175;s:21:\"gallery/style.min.css\";i:176;s:21:\"gallery/theme-rtl.css\";i:177;s:25:\"gallery/theme-rtl.min.css\";i:178;s:17:\"gallery/theme.css\";i:179;s:21:\"gallery/theme.min.css\";i:180;s:20:\"group/editor-rtl.css\";i:181;s:24:\"group/editor-rtl.min.css\";i:182;s:16:\"group/editor.css\";i:183;s:20:\"group/editor.min.css\";i:184;s:19:\"group/style-rtl.css\";i:185;s:23:\"group/style-rtl.min.css\";i:186;s:15:\"group/style.css\";i:187;s:19:\"group/style.min.css\";i:188;s:19:\"group/theme-rtl.css\";i:189;s:23:\"group/theme-rtl.min.css\";i:190;s:15:\"group/theme.css\";i:191;s:19:\"group/theme.min.css\";i:192;s:21:\"heading/style-rtl.css\";i:193;s:25:\"heading/style-rtl.min.css\";i:194;s:17:\"heading/style.css\";i:195;s:21:\"heading/style.min.css\";i:196;s:19:\"html/editor-rtl.css\";i:197;s:23:\"html/editor-rtl.min.css\";i:198;s:15:\"html/editor.css\";i:199;s:19:\"html/editor.min.css\";i:200;s:20:\"image/editor-rtl.css\";i:201;s:24:\"image/editor-rtl.min.css\";i:202;s:16:\"image/editor.css\";i:203;s:20:\"image/editor.min.css\";i:204;s:19:\"image/style-rtl.css\";i:205;s:23:\"image/style-rtl.min.css\";i:206;s:15:\"image/style.css\";i:207;s:19:\"image/style.min.css\";i:208;s:19:\"image/theme-rtl.css\";i:209;s:23:\"image/theme-rtl.min.css\";i:210;s:15:\"image/theme.css\";i:211;s:19:\"image/theme.min.css\";i:212;s:29:\"latest-comments/style-rtl.css\";i:213;s:33:\"latest-comments/style-rtl.min.css\";i:214;s:25:\"latest-comments/style.css\";i:215;s:29:\"latest-comments/style.min.css\";i:216;s:27:\"latest-posts/editor-rtl.css\";i:217;s:31:\"latest-posts/editor-rtl.min.css\";i:218;s:23:\"latest-posts/editor.css\";i:219;s:27:\"latest-posts/editor.min.css\";i:220;s:26:\"latest-posts/style-rtl.css\";i:221;s:30:\"latest-posts/style-rtl.min.css\";i:222;s:22:\"latest-posts/style.css\";i:223;s:26:\"latest-posts/style.min.css\";i:224;s:18:\"list/style-rtl.css\";i:225;s:22:\"list/style-rtl.min.css\";i:226;s:14:\"list/style.css\";i:227;s:18:\"list/style.min.css\";i:228;s:22:\"loginout/style-rtl.css\";i:229;s:26:\"loginout/style-rtl.min.css\";i:230;s:18:\"loginout/style.css\";i:231;s:22:\"loginout/style.min.css\";i:232;s:25:\"media-text/editor-rtl.css\";i:233;s:29:\"media-text/editor-rtl.min.css\";i:234;s:21:\"media-text/editor.css\";i:235;s:25:\"media-text/editor.min.css\";i:236;s:24:\"media-text/style-rtl.css\";i:237;s:28:\"media-text/style-rtl.min.css\";i:238;s:20:\"media-text/style.css\";i:239;s:24:\"media-text/style.min.css\";i:240;s:19:\"more/editor-rtl.css\";i:241;s:23:\"more/editor-rtl.min.css\";i:242;s:15:\"more/editor.css\";i:243;s:19:\"more/editor.min.css\";i:244;s:30:\"navigation-link/editor-rtl.css\";i:245;s:34:\"navigation-link/editor-rtl.min.css\";i:246;s:26:\"navigation-link/editor.css\";i:247;s:30:\"navigation-link/editor.min.css\";i:248;s:29:\"navigation-link/style-rtl.css\";i:249;s:33:\"navigation-link/style-rtl.min.css\";i:250;s:25:\"navigation-link/style.css\";i:251;s:29:\"navigation-link/style.min.css\";i:252;s:33:\"navigation-submenu/editor-rtl.css\";i:253;s:37:\"navigation-submenu/editor-rtl.min.css\";i:254;s:29:\"navigation-submenu/editor.css\";i:255;s:33:\"navigation-submenu/editor.min.css\";i:256;s:25:\"navigation/editor-rtl.css\";i:257;s:29:\"navigation/editor-rtl.min.css\";i:258;s:21:\"navigation/editor.css\";i:259;s:25:\"navigation/editor.min.css\";i:260;s:24:\"navigation/style-rtl.css\";i:261;s:28:\"navigation/style-rtl.min.css\";i:262;s:20:\"navigation/style.css\";i:263;s:24:\"navigation/style.min.css\";i:264;s:23:\"nextpage/editor-rtl.css\";i:265;s:27:\"nextpage/editor-rtl.min.css\";i:266;s:19:\"nextpage/editor.css\";i:267;s:23:\"nextpage/editor.min.css\";i:268;s:24:\"page-list/editor-rtl.css\";i:269;s:28:\"page-list/editor-rtl.min.css\";i:270;s:20:\"page-list/editor.css\";i:271;s:24:\"page-list/editor.min.css\";i:272;s:23:\"page-list/style-rtl.css\";i:273;s:27:\"page-list/style-rtl.min.css\";i:274;s:19:\"page-list/style.css\";i:275;s:23:\"page-list/style.min.css\";i:276;s:24:\"paragraph/editor-rtl.css\";i:277;s:28:\"paragraph/editor-rtl.min.css\";i:278;s:20:\"paragraph/editor.css\";i:279;s:24:\"paragraph/editor.min.css\";i:280;s:23:\"paragraph/style-rtl.css\";i:281;s:27:\"paragraph/style-rtl.min.css\";i:282;s:19:\"paragraph/style.css\";i:283;s:23:\"paragraph/style.min.css\";i:284;s:35:\"post-author-biography/style-rtl.css\";i:285;s:39:\"post-author-biography/style-rtl.min.css\";i:286;s:31:\"post-author-biography/style.css\";i:287;s:35:\"post-author-biography/style.min.css\";i:288;s:30:\"post-author-name/style-rtl.css\";i:289;s:34:\"post-author-name/style-rtl.min.css\";i:290;s:26:\"post-author-name/style.css\";i:291;s:30:\"post-author-name/style.min.css\";i:292;s:26:\"post-author/editor-rtl.css\";i:293;s:30:\"post-author/editor-rtl.min.css\";i:294;s:22:\"post-author/editor.css\";i:295;s:26:\"post-author/editor.min.css\";i:296;s:25:\"post-author/style-rtl.css\";i:297;s:29:\"post-author/style-rtl.min.css\";i:298;s:21:\"post-author/style.css\";i:299;s:25:\"post-author/style.min.css\";i:300;s:33:\"post-comments-form/editor-rtl.css\";i:301;s:37:\"post-comments-form/editor-rtl.min.css\";i:302;s:29:\"post-comments-form/editor.css\";i:303;s:33:\"post-comments-form/editor.min.css\";i:304;s:32:\"post-comments-form/style-rtl.css\";i:305;s:36:\"post-comments-form/style-rtl.min.css\";i:306;s:28:\"post-comments-form/style.css\";i:307;s:32:\"post-comments-form/style.min.css\";i:308;s:27:\"post-content/editor-rtl.css\";i:309;s:31:\"post-content/editor-rtl.min.css\";i:310;s:23:\"post-content/editor.css\";i:311;s:27:\"post-content/editor.min.css\";i:312;s:26:\"post-content/style-rtl.css\";i:313;s:30:\"post-content/style-rtl.min.css\";i:314;s:22:\"post-content/style.css\";i:315;s:26:\"post-content/style.min.css\";i:316;s:23:\"post-date/style-rtl.css\";i:317;s:27:\"post-date/style-rtl.min.css\";i:318;s:19:\"post-date/style.css\";i:319;s:23:\"post-date/style.min.css\";i:320;s:27:\"post-excerpt/editor-rtl.css\";i:321;s:31:\"post-excerpt/editor-rtl.min.css\";i:322;s:23:\"post-excerpt/editor.css\";i:323;s:27:\"post-excerpt/editor.min.css\";i:324;s:26:\"post-excerpt/style-rtl.css\";i:325;s:30:\"post-excerpt/style-rtl.min.css\";i:326;s:22:\"post-excerpt/style.css\";i:327;s:26:\"post-excerpt/style.min.css\";i:328;s:34:\"post-featured-image/editor-rtl.css\";i:329;s:38:\"post-featured-image/editor-rtl.min.css\";i:330;s:30:\"post-featured-image/editor.css\";i:331;s:34:\"post-featured-image/editor.min.css\";i:332;s:33:\"post-featured-image/style-rtl.css\";i:333;s:37:\"post-featured-image/style-rtl.min.css\";i:334;s:29:\"post-featured-image/style.css\";i:335;s:33:\"post-featured-image/style.min.css\";i:336;s:34:\"post-navigation-link/style-rtl.css\";i:337;s:38:\"post-navigation-link/style-rtl.min.css\";i:338;s:30:\"post-navigation-link/style.css\";i:339;s:34:\"post-navigation-link/style.min.css\";i:340;s:28:\"post-template/editor-rtl.css\";i:341;s:32:\"post-template/editor-rtl.min.css\";i:342;s:24:\"post-template/editor.css\";i:343;s:28:\"post-template/editor.min.css\";i:344;s:27:\"post-template/style-rtl.css\";i:345;s:31:\"post-template/style-rtl.min.css\";i:346;s:23:\"post-template/style.css\";i:347;s:27:\"post-template/style.min.css\";i:348;s:24:\"post-terms/style-rtl.css\";i:349;s:28:\"post-terms/style-rtl.min.css\";i:350;s:20:\"post-terms/style.css\";i:351;s:24:\"post-terms/style.min.css\";i:352;s:24:\"post-title/style-rtl.css\";i:353;s:28:\"post-title/style-rtl.min.css\";i:354;s:20:\"post-title/style.css\";i:355;s:24:\"post-title/style.min.css\";i:356;s:26:\"preformatted/style-rtl.css\";i:357;s:30:\"preformatted/style-rtl.min.css\";i:358;s:22:\"preformatted/style.css\";i:359;s:26:\"preformatted/style.min.css\";i:360;s:24:\"pullquote/editor-rtl.css\";i:361;s:28:\"pullquote/editor-rtl.min.css\";i:362;s:20:\"pullquote/editor.css\";i:363;s:24:\"pullquote/editor.min.css\";i:364;s:23:\"pullquote/style-rtl.css\";i:365;s:27:\"pullquote/style-rtl.min.css\";i:366;s:19:\"pullquote/style.css\";i:367;s:23:\"pullquote/style.min.css\";i:368;s:23:\"pullquote/theme-rtl.css\";i:369;s:27:\"pullquote/theme-rtl.min.css\";i:370;s:19:\"pullquote/theme.css\";i:371;s:23:\"pullquote/theme.min.css\";i:372;s:39:\"query-pagination-numbers/editor-rtl.css\";i:373;s:43:\"query-pagination-numbers/editor-rtl.min.css\";i:374;s:35:\"query-pagination-numbers/editor.css\";i:375;s:39:\"query-pagination-numbers/editor.min.css\";i:376;s:31:\"query-pagination/editor-rtl.css\";i:377;s:35:\"query-pagination/editor-rtl.min.css\";i:378;s:27:\"query-pagination/editor.css\";i:379;s:31:\"query-pagination/editor.min.css\";i:380;s:30:\"query-pagination/style-rtl.css\";i:381;s:34:\"query-pagination/style-rtl.min.css\";i:382;s:26:\"query-pagination/style.css\";i:383;s:30:\"query-pagination/style.min.css\";i:384;s:25:\"query-title/style-rtl.css\";i:385;s:29:\"query-title/style-rtl.min.css\";i:386;s:21:\"query-title/style.css\";i:387;s:25:\"query-title/style.min.css\";i:388;s:20:\"query/editor-rtl.css\";i:389;s:24:\"query/editor-rtl.min.css\";i:390;s:16:\"query/editor.css\";i:391;s:20:\"query/editor.min.css\";i:392;s:19:\"quote/style-rtl.css\";i:393;s:23:\"quote/style-rtl.min.css\";i:394;s:15:\"quote/style.css\";i:395;s:19:\"quote/style.min.css\";i:396;s:19:\"quote/theme-rtl.css\";i:397;s:23:\"quote/theme-rtl.min.css\";i:398;s:15:\"quote/theme.css\";i:399;s:19:\"quote/theme.min.css\";i:400;s:23:\"read-more/style-rtl.css\";i:401;s:27:\"read-more/style-rtl.min.css\";i:402;s:19:\"read-more/style.css\";i:403;s:23:\"read-more/style.min.css\";i:404;s:18:\"rss/editor-rtl.css\";i:405;s:22:\"rss/editor-rtl.min.css\";i:406;s:14:\"rss/editor.css\";i:407;s:18:\"rss/editor.min.css\";i:408;s:17:\"rss/style-rtl.css\";i:409;s:21:\"rss/style-rtl.min.css\";i:410;s:13:\"rss/style.css\";i:411;s:17:\"rss/style.min.css\";i:412;s:21:\"search/editor-rtl.css\";i:413;s:25:\"search/editor-rtl.min.css\";i:414;s:17:\"search/editor.css\";i:415;s:21:\"search/editor.min.css\";i:416;s:20:\"search/style-rtl.css\";i:417;s:24:\"search/style-rtl.min.css\";i:418;s:16:\"search/style.css\";i:419;s:20:\"search/style.min.css\";i:420;s:20:\"search/theme-rtl.css\";i:421;s:24:\"search/theme-rtl.min.css\";i:422;s:16:\"search/theme.css\";i:423;s:20:\"search/theme.min.css\";i:424;s:24:\"separator/editor-rtl.css\";i:425;s:28:\"separator/editor-rtl.min.css\";i:426;s:20:\"separator/editor.css\";i:427;s:24:\"separator/editor.min.css\";i:428;s:23:\"separator/style-rtl.css\";i:429;s:27:\"separator/style-rtl.min.css\";i:430;s:19:\"separator/style.css\";i:431;s:23:\"separator/style.min.css\";i:432;s:23:\"separator/theme-rtl.css\";i:433;s:27:\"separator/theme-rtl.min.css\";i:434;s:19:\"separator/theme.css\";i:435;s:23:\"separator/theme.min.css\";i:436;s:24:\"shortcode/editor-rtl.css\";i:437;s:28:\"shortcode/editor-rtl.min.css\";i:438;s:20:\"shortcode/editor.css\";i:439;s:24:\"shortcode/editor.min.css\";i:440;s:24:\"site-logo/editor-rtl.css\";i:441;s:28:\"site-logo/editor-rtl.min.css\";i:442;s:20:\"site-logo/editor.css\";i:443;s:24:\"site-logo/editor.min.css\";i:444;s:23:\"site-logo/style-rtl.css\";i:445;s:27:\"site-logo/style-rtl.min.css\";i:446;s:19:\"site-logo/style.css\";i:447;s:23:\"site-logo/style.min.css\";i:448;s:27:\"site-tagline/editor-rtl.css\";i:449;s:31:\"site-tagline/editor-rtl.min.css\";i:450;s:23:\"site-tagline/editor.css\";i:451;s:27:\"site-tagline/editor.min.css\";i:452;s:26:\"site-tagline/style-rtl.css\";i:453;s:30:\"site-tagline/style-rtl.min.css\";i:454;s:22:\"site-tagline/style.css\";i:455;s:26:\"site-tagline/style.min.css\";i:456;s:25:\"site-title/editor-rtl.css\";i:457;s:29:\"site-title/editor-rtl.min.css\";i:458;s:21:\"site-title/editor.css\";i:459;s:25:\"site-title/editor.min.css\";i:460;s:24:\"site-title/style-rtl.css\";i:461;s:28:\"site-title/style-rtl.min.css\";i:462;s:20:\"site-title/style.css\";i:463;s:24:\"site-title/style.min.css\";i:464;s:26:\"social-link/editor-rtl.css\";i:465;s:30:\"social-link/editor-rtl.min.css\";i:466;s:22:\"social-link/editor.css\";i:467;s:26:\"social-link/editor.min.css\";i:468;s:27:\"social-links/editor-rtl.css\";i:469;s:31:\"social-links/editor-rtl.min.css\";i:470;s:23:\"social-links/editor.css\";i:471;s:27:\"social-links/editor.min.css\";i:472;s:26:\"social-links/style-rtl.css\";i:473;s:30:\"social-links/style-rtl.min.css\";i:474;s:22:\"social-links/style.css\";i:475;s:26:\"social-links/style.min.css\";i:476;s:21:\"spacer/editor-rtl.css\";i:477;s:25:\"spacer/editor-rtl.min.css\";i:478;s:17:\"spacer/editor.css\";i:479;s:21:\"spacer/editor.min.css\";i:480;s:20:\"spacer/style-rtl.css\";i:481;s:24:\"spacer/style-rtl.min.css\";i:482;s:16:\"spacer/style.css\";i:483;s:20:\"spacer/style.min.css\";i:484;s:20:\"table/editor-rtl.css\";i:485;s:24:\"table/editor-rtl.min.css\";i:486;s:16:\"table/editor.css\";i:487;s:20:\"table/editor.min.css\";i:488;s:19:\"table/style-rtl.css\";i:489;s:23:\"table/style-rtl.min.css\";i:490;s:15:\"table/style.css\";i:491;s:19:\"table/style.min.css\";i:492;s:19:\"table/theme-rtl.css\";i:493;s:23:\"table/theme-rtl.min.css\";i:494;s:15:\"table/theme.css\";i:495;s:19:\"table/theme.min.css\";i:496;s:24:\"tag-cloud/editor-rtl.css\";i:497;s:28:\"tag-cloud/editor-rtl.min.css\";i:498;s:20:\"tag-cloud/editor.css\";i:499;s:24:\"tag-cloud/editor.min.css\";i:500;s:23:\"tag-cloud/style-rtl.css\";i:501;s:27:\"tag-cloud/style-rtl.min.css\";i:502;s:19:\"tag-cloud/style.css\";i:503;s:23:\"tag-cloud/style.min.css\";i:504;s:28:\"template-part/editor-rtl.css\";i:505;s:32:\"template-part/editor-rtl.min.css\";i:506;s:24:\"template-part/editor.css\";i:507;s:28:\"template-part/editor.min.css\";i:508;s:27:\"template-part/theme-rtl.css\";i:509;s:31:\"template-part/theme-rtl.min.css\";i:510;s:23:\"template-part/theme.css\";i:511;s:27:\"template-part/theme.min.css\";i:512;s:30:\"term-description/style-rtl.css\";i:513;s:34:\"term-description/style-rtl.min.css\";i:514;s:26:\"term-description/style.css\";i:515;s:30:\"term-description/style.min.css\";i:516;s:27:\"text-columns/editor-rtl.css\";i:517;s:31:\"text-columns/editor-rtl.min.css\";i:518;s:23:\"text-columns/editor.css\";i:519;s:27:\"text-columns/editor.min.css\";i:520;s:26:\"text-columns/style-rtl.css\";i:521;s:30:\"text-columns/style-rtl.min.css\";i:522;s:22:\"text-columns/style.css\";i:523;s:26:\"text-columns/style.min.css\";i:524;s:19:\"verse/style-rtl.css\";i:525;s:23:\"verse/style-rtl.min.css\";i:526;s:15:\"verse/style.css\";i:527;s:19:\"verse/style.min.css\";i:528;s:20:\"video/editor-rtl.css\";i:529;s:24:\"video/editor-rtl.min.css\";i:530;s:16:\"video/editor.css\";i:531;s:20:\"video/editor.min.css\";i:532;s:19:\"video/style-rtl.css\";i:533;s:23:\"video/style-rtl.min.css\";i:534;s:15:\"video/style.css\";i:535;s:19:\"video/style.min.css\";i:536;s:19:\"video/theme-rtl.css\";i:537;s:23:\"video/theme-rtl.min.css\";i:538;s:15:\"video/theme.css\";i:539;s:19:\"video/theme.min.css\";}}','on'), +(124,'_transient_doing_cron','1744240463.4742639064788818359375','on'), +(125,'wp_graphql_version','2.1.1','auto'), +(126,'_site_transient_timeout_theme_roots','1744242216','off'), +(127,'_site_transient_theme_roots','a:1:{s:4:\"nude\";s:7:\"/themes\";}','off'), +(128,'theme_mods_twentytwentyfive','a:1:{s:16:\"sidebars_widgets\";a:2:{s:4:\"time\";i:1744240396;s:4:\"data\";a:3:{s:19:\"wp_inactive_widgets\";a:0:{}s:9:\"sidebar-1\";a:3:{i:0;s:7:\"block-2\";i:1;s:7:\"block-3\";i:2;s:7:\"block-4\";}s:9:\"sidebar-2\";a:2:{i:0;s:7:\"block-5\";i:1;s:7:\"block-6\";}}}}','off'), +(129,'current_theme','Nude','auto'), +(130,'theme_switched','','auto'), +(131,'_site_transient_timeout_wp_theme_files_patterns-95e83268faf2ddbb8914f2103a03f857','1744242196','off'), +(132,'_site_transient_wp_theme_files_patterns-95e83268faf2ddbb8914f2103a03f857','a:2:{s:7:\"version\";s:3:\"1.2\";s:8:\"patterns\";a:0:{}}','off'), +(133,'theme_mods_nude','a:2:{s:18:\"nav_menu_locations\";a:0:{}s:18:\"custom_css_post_id\";i:-1;}','auto'), +(134,'_transient_wp_styles_for_blocks','a:2:{s:4:\"hash\";s:32:\"8c7d46a72d7d4591fc1dd9485bedb304\";s:6:\"blocks\";a:5:{s:11:\"core/button\";s:0:\"\";s:14:\"core/site-logo\";s:0:\"\";s:18:\"core/post-template\";s:120:\":where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}\";s:12:\"core/columns\";s:102:\":where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}\";s:14:\"core/pullquote\";s:69:\":root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}\";}}','on'), +(135,'_site_transient_update_core','O:8:\"stdClass\":4:{s:7:\"updates\";a:1:{i:0;O:8:\"stdClass\":10:{s:8:\"response\";s:6:\"latest\";s:8:\"download\";s:59:\"https://downloads.wordpress.org/release/wordpress-6.7.2.zip\";s:6:\"locale\";s:5:\"en_US\";s:8:\"packages\";O:8:\"stdClass\":5:{s:4:\"full\";s:59:\"https://downloads.wordpress.org/release/wordpress-6.7.2.zip\";s:10:\"no_content\";s:70:\"https://downloads.wordpress.org/release/wordpress-6.7.2-no-content.zip\";s:11:\"new_bundled\";s:71:\"https://downloads.wordpress.org/release/wordpress-6.7.2-new-bundled.zip\";s:7:\"partial\";s:0:\"\";s:8:\"rollback\";s:0:\"\";}s:7:\"current\";s:5:\"6.7.2\";s:7:\"version\";s:5:\"6.7.2\";s:11:\"php_version\";s:6:\"7.2.24\";s:13:\"mysql_version\";s:5:\"5.5.5\";s:11:\"new_bundled\";s:3:\"6.7\";s:15:\"partial_version\";s:0:\"\";}}s:12:\"last_checked\";i:1744240416;s:15:\"version_checked\";s:5:\"6.7.2\";s:12:\"translations\";a:0:{}}','off'), +(137,'_site_transient_update_themes','O:8:\"stdClass\":5:{s:12:\"last_checked\";i:1744240430;s:7:\"checked\";a:1:{s:4:\"nude\";s:3:\"1.2\";}s:8:\"response\";a:0:{}s:9:\"no_update\";a:1:{s:4:\"nude\";a:6:{s:5:\"theme\";s:4:\"nude\";s:11:\"new_version\";s:3:\"1.2\";s:3:\"url\";s:34:\"https://wordpress.org/themes/nude/\";s:7:\"package\";s:50:\"https://downloads.wordpress.org/theme/nude.1.2.zip\";s:8:\"requires\";s:3:\"4.1\";s:12:\"requires_php\";b:0;}}s:12:\"translations\";a:0:{}}','off'), +(138,'graphql_general_settings','','auto'), +(139,'_site_transient_timeout_browser_d6dcc0a6def5582f8d3a9f7f2addb88b','1744845217','off'), +(140,'_site_transient_browser_d6dcc0a6def5582f8d3a9f7f2addb88b','a:10:{s:4:\"name\";s:6:\"Chrome\";s:7:\"version\";s:9:\"135.0.0.0\";s:8:\"platform\";s:9:\"Macintosh\";s:10:\"update_url\";s:29:\"https://www.google.com/chrome\";s:7:\"img_src\";s:43:\"http://s.w.org/images/browsers/chrome.png?1\";s:11:\"img_src_ssl\";s:44:\"https://s.w.org/images/browsers/chrome.png?1\";s:15:\"current_version\";s:2:\"18\";s:7:\"upgrade\";b:0;s:8:\"insecure\";b:0;s:6:\"mobile\";b:0;}','off'), +(141,'_site_transient_timeout_php_check_a0b03c46dbe37253c3391e32a7bb296f','1744845217','off'), +(142,'_site_transient_php_check_a0b03c46dbe37253c3391e32a7bb296f','a:5:{s:19:\"recommended_version\";s:3:\"7.4\";s:15:\"minimum_version\";s:6:\"7.2.24\";s:12:\"is_supported\";b:1;s:9:\"is_secure\";b:1;s:13:\"is_acceptable\";b:1;}','off'), +(143,'can_compress_scripts','0','on'), +(144,'_site_transient_timeout_community-events-44485c287b35f6187af786644b0948c8','1744283617','off'), +(145,'_site_transient_community-events-44485c287b35f6187af786644b0948c8','a:4:{s:9:\"sandboxed\";b:0;s:5:\"error\";N;s:8:\"location\";a:1:{s:2:\"ip\";s:12:\"192.168.65.0\";}s:6:\"events\";a:2:{i:0;a:10:{s:4:\"type\";s:6:\"meetup\";s:5:\"title\";s:42:\"Vancouver WordPress - April Social Hangout\";s:3:\"url\";s:72:\"https://www.meetup.com/vancouver-wordpress-meetup-group/events/306795662\";s:6:\"meetup\";s:36:\"The Vancouver WordPress Meetup Group\";s:10:\"meetup_url\";s:56:\"https://www.meetup.com/vancouver-wordpress-meetup-group/\";s:4:\"date\";s:19:\"2025-04-09 18:00:00\";s:8:\"end_date\";s:19:\"2025-04-09 20:00:00\";s:20:\"start_unix_timestamp\";i:1744246800;s:18:\"end_unix_timestamp\";i:1744254000;s:8:\"location\";a:4:{s:8:\"location\";s:21:\"Vancouver, BC, Canada\";s:7:\"country\";s:2:\"ca\";s:8:\"latitude\";d:49.280117;s:9:\"longitude\";d:-123.114876;}}i:1;a:10:{s:4:\"type\";s:8:\"wordcamp\";s:5:\"title\";s:11:\"WordCamp US\";s:3:\"url\";s:29:\"https://us.wordcamp.org/2025/\";s:6:\"meetup\";N;s:10:\"meetup_url\";N;s:4:\"date\";s:19:\"2025-08-26 00:00:00\";s:8:\"end_date\";s:19:\"2025-08-29 00:00:00\";s:20:\"start_unix_timestamp\";i:1756191600;s:18:\"end_unix_timestamp\";i:1756450800;s:8:\"location\";a:4:{s:8:\"location\";s:21:\"Portland, Oregon, USA\";s:7:\"country\";s:2:\"US\";s:8:\"latitude\";d:45.5283308;s:9:\"longitude\";d:-122.6634712;}}}}','off'), +(146,'_transient_timeout_feed_9bbd59226dc36b9b26cd43f15694c5c3','1744283617','off'), +(147,'_transient_feed_9bbd59226dc36b9b26cd43f15694c5c3','a:6:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n\n\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:52:\"\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:8:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"WordPress News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"https://wordpress.org/news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"The latest news about WordPress and the WordPress community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:13:\"lastBuildDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2025 16:13:35 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"en-US\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:9:\"generator\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"https://wordpress.org/?v=6.8-alpha-59827\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"image\";a:1:{i:0;a:6:{s:4:\"data\";s:11:\"\n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:5:{s:3:\"url\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://s.w.org/favicon.ico?2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"WordPress News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"https://wordpress.org/news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"width\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"32\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:6:\"height\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"32\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}s:4:\"item\";a:10:{i:0;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress 6.8 Release Candidate 3\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/04/wordpress-6-8-release-candidate-3/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2025 15:54:49 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6-8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18673\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:260:\"WordPress 6.8 RC 3 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing over the next week is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:8785:\"\n

The third release candidate (“RC3”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development.  Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, it’s recommended that you evaluate RC3 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone.  While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC3 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC3 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-RC3
WordPress PlaygroundUse the 6.8 RC3 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025. Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts leading up to next week’s release for further details.

\n\n\n\n

What’s in WordPress 6.8 RC3?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement. For more technical information related to issues addressed since RC2, you can browse the following links:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community that collaborates and contributes to its development. The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable. It’s also a meaningful way for anyone to contribute. This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report. You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.  For more details on developer-related changes in 6.8, please review the WordPress 6.8 Field Guide.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases.  With RC3, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English?  ¿Español?  Français?  Русский?  日本? हिन्दी? मराठी? বাংলা?  You can help translate WordPress into more than 100 languages.

\n\n\n\n

An RC3 haiku

\n\n\n\n

The launch draws closer,
Six-eight sings through RC3,
Almost time to shine.

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @audrasjb, @mamaduka, @krupajnanda, @benjamin_zekavica, @narenin, @joedolson, @courane01, @joemcgill, @marybaum, @kmgalanakis, @umeshsinghin, @wildworks, @mkrndmane.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18673\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress 6.8 Release Candidate 2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/04/wordpress-6-8-release-candidate-2/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 01 Apr 2025 15:53:20 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18662\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:367:\"The second Release Candidate (“RC2”) for WordPress 6.8 is ready for download and testing! This version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it’s recommended that you evaluate RC2 on a test server and site. Reaching this phase […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Jonathan Desrosiers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:8739:\"\n

The second Release Candidate (“RC2”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it’s recommended that you evaluate RC2 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone. While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC2 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC2 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update –version=6.8-RC2
WordPress PlaygroundUse the 6.8 RC2 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025.  Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for further details.

\n\n\n\n

What’s in WordPress 6.8 RC2?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement. For more technical information related to issues addressed since RC1, you can browse the following links:

\n\n\n\n\n\n\n\n

Want to look deeper into the details and technical notes for this release? These recent posts cover some of the latest updates:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community of people collaborating on and contributing to its development. The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable.  It’s also a meaningful way for anyone to contribute.  This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report.  You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled. Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases. With RC2, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English? ¿Español? Français? Русский? 日本語? हिन्दी? বাংলা? मराठी? ಕನ್ನಡ?  You can help translate WordPress into more than 100 languages. This release milestone (RC2) also marks the hard string freeze point of the 6.8 release cycle.

\n\n\n\n

An RC2 haiku

\n\n\n\n

Testing, 1, 2, 3
It’s almost April fifteenth
Squashing all the bugs

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @michelleames, @tacoverdo, @jopdop30, @vgnavada, @jeffpaul.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18662\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress 6.8 Release Candidate 1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/03/wordpress-6-8-release-candidate-1/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Mar 2025 16:19:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18639\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:267:\"WordPress 6.8 RC 1 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing over the next three weeks is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:9280:\"\n

The first Release Candidate (“RC1”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development.  Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, it’s recommended that you evaluate RC1 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone.  While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC1 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC1 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-RC1
WordPress PlaygroundUse the 6.8 RC1 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025.  Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for further details.

\n\n\n\n

What’s in WordPress 6.8 RC1?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement.  For more technical information related to issues addressed since Beta 3, you can browse the following links:

\n\n\n\n\n\n\n\n

Want to look deeper into the details and technical notes for this release? These recent posts cover some of the latest updates:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community of people collaborating on and contributing to its development.  The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable.  It’s also a meaningful way for anyone to contribute.  This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report.  You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases.  With RC1, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English?  ¿Español?  Français?  Русский?  日本語? हिन्दी? বাংলা? मराठी?  You can help translate WordPress into more than 100 languages.  This release milestone (RC1) also marks the hard string freeze point of the 6.8 release cycle.

\n\n\n\n

An RC1 haiku

\n\n\n\n

March fades, nearly there,
Six-eight hums—a steady beat,
RC greets the world.

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @joemcgill @benjamin_zekavica @courane01 @mkrndmane @audrasjb @areziaal @ankit-k-gupta @krupajnanda @bph.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18639\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"WordPress 6.8 Beta 3\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://wordpress.org/news/2025/03/wordpress-6-8-beta-3/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 18 Mar 2025 15:35:14 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18634\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:289:\"WordPress 6.8 Beta 3 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing Beta and RC versions over the next four weeks is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:5627:\"\n

WordPress 6.8 Beta 3 is now ready for testing!

\n\n\n\n

This beta version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it is recommended you evaluate Beta 3 on a test server and site.

\n\n\n\n

You can test WordPress 6.8 Beta 3 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the Beta 3 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-beta3
WordPress PlaygroundUse the 6.8 Beta 3 WordPress Playground instance to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target date for the final release of WordPress 6.8 is April 15, 2025. Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for more information.

\n\n\n\n

Catch up on what’s new in WordPress 6.8: Read the Beta 1 and Beta 2 announcements for details and highlights.

\n\n\n\n

How to test this release

\n\n\n\n

Your help testing the WordPress 6.8 Beta 3 version is key to ensuring everything in the release is the best it can be. While testing the upgrade process is essential, trying out new features is equally important. This detailed guide will walk you through testing features in WordPress 6.8.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report. You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Vulnerability bounty doubles during Beta/RC

\n\n\n\n

Between Beta 1, released on March 4, 2025, and the final Release Candidate (RC) scheduled for April 8, 2025, the monetary reward for reporting new, unreleased security vulnerabilities is doubled. Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Beta 3 updates and highlights

\n\n\n\n

WordPress 6.8 Beta 3 contains more than 3 Editor updates and fixes since the Beta 2 release, including 16 tickets for WordPress core.

\n\n\n\n

Each beta cycle focuses on bug fixes; more are on the way with your help through testing. You can browse the technical details for all issues addressed since Beta 3 using these links:

\n\n\n\n\n\n\n\n

A Beta 3 haiku

\n\n\n\n

Beta three refines,
WordPress shapes with steady hands,
Code grows into form.

\n\n\n\n

Props to @benjamin_zekavica @krupajnanda @ankit-k-gupta @joemcgill for proofreading and review.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18634\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"WordPress 6.8 Beta 2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://wordpress.org/news/2025/03/wordpress-6-8-beta-2/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 11 Mar 2025 15:46:13 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18619\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:289:\"WordPress 6.8 Beta 2 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing Beta and RC versions over the next five weeks is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:5940:\"\n

WordPress 6.8 Beta 2 is now ready for testing!

\n\n\n\n

This beta version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, you should evaluate Beta 2 on a test server and site.

\n\n\n\n

You can test WordPress 6.8 Beta 2 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream.)
Direct DownloadDownload the Beta 2 version (zip) and install it on a WordPress website.
Command LineUse this WP-CLI command: wp core update --version=6.8-beta2
WordPress PlaygroundUse the 6.8 Beta 2 WordPress Playground instance to test the software directly in your browser.  No setup is required–just click and go! 
\n\n\n\n

The current target date for the final release of WordPress 6.8 is April 15, 2025. Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for more information.

\n\n\n\n

Catch up on what’s new in WordPress 6.8: Read the Beta 1 announcement for details and highlights.

\n\n\n\n

How to test this release

\n\n\n\n

Your help testing the WordPress 6.8 Beta 2 version is key to ensuring everything in the release is the best it can be. While testing the upgrade process is essential, trying out new features is equally important.  This detailed guide will walk you through testing features in WordPress 6.8.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report. You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general? Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Vulnerability bounty doubles during Beta/RC

\n\n\n\n

Between Beta 1, released on March 4, 2025, and the final Release Candidate (RC) scheduled for April 8, 2025, the monetary reward for reporting new, unreleased security vulnerabilities is doubled. Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Beta 2 updates and highlights

\n\n\n\n

WordPress 6.8 Beta 2 contains more than 14 Editor updates and fixes since the Beta 1 release, including 21 tickets for WordPress core.

\n\n\n\n

Each beta cycle focuses on bug fixes; more are on the way with your help through testing. You can browse the technical details for all issues addressed since Beta 1 using these links:

\n\n\n\n\n\n\n\n

A Beta 2 haiku

\n\n\n\n

Second wave refines,
Lines of code like rivers flow,
WordPress finds its form.

\n\n\n\n

Props to @ankitkumarshah @vgnavada @krupajnanda @michelleames @audrasjb @marybaum @ecgan for proofreading and review.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18619\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"WordPress 6.8 Beta 1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://wordpress.org/news/2025/03/wordpress-6-8-beta-1/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 04 Mar 2025 17:09:45 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18582\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:288:\"WordPress 6.8 Beta 1 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing Beta and RC versions over the next six weeks is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:10596:\"\n

WordPress 6.8 Beta 1 is ready for download and testing!

\n\n\n\n

This beta version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, set up a test environment or a local site to explore the new features.

\n\n\n\n

How to Test WordPress 6.8 Beta 1

\n\n\n\n

You can test this beta release in any of the following ways: 

\n\n\n\n
WordPress Beta Tester PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install. Select the “Bleeding edge” channel and “Beta/RC Only” stream.
Direct DownloadDownload the Beta 1 version (zip) and install it on a WordPress website.
Command Line (WP-CLI)Use this WP-CLI command: wp core update --version=6.8-beta1
WordPress PlaygroundUse a 6.8 Beta 1 WordPress Playground instance to test the software directly in your browser. No setup required–-just click and go!
\n\n\n\n

The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing Beta and RC versions over the next six weeks is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.

\n\n\n\n

How important is your testing?

\n\n\n\n

Testing for issues is a critical part of developing any software, and it’s a meaningful way for anyone to contribute—whether or not you have experience.  Details on what to test in WordPress 6.8 are here.

\n\n\n\n

If you encounter an issue, please share it in the Alpha/Beta area of the support forums. If you are comfortable submitting a reproducible bug report, you can do so via WordPress Trac. You can also check your issue against this list of known bugs.

\n\n\n\n

Curious about testing releases in general and how to get started? Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

WordPress 6.8 will include many new features that were previously only available in the Gutenberg plugin. Learn more about Gutenberg updates since WordPress 6.7 in the What’s New in Gutenberg posts for versions 19.4, 19.5, 19.6, 19.7, 19.8, 19.9, 20.0, 20.1, 20.2, 20.3, and 20.4.

\n\n\n\n

What’s New in WordPress 6.8 Beta 1

\n\n\n\n

This is a polish release, with user enhancements throughout incorporated into the latest Gutenberg updates. WordPress 6.8 brings a luster and gloss that only a polish release can.

\n\n\n\n

WordPress 6.8 Beta 1 contains over 370 enhancements and 520 bug fixes for the editor, including design improvements, polishing the query loop, and more than 230 tickets for WordPress 6.8 Core. Here’s a glimpse of what’s coming:

\n\n\n\n

Editor improvements

\n\n\n\n

Easier ways to see your options in Data Views, and you can opt to ignore sticky posts in the Query Loop. Plus you’ll find lots of little improvements in the editor!

\n\n\n\n

The Style Book comes to Classic themes

\n\n\n\n

The Style Book now features a structured layout so you can preview site colors, typography, and block styles more easily. You can use the Style Book in classic themes with editor-styles or a theme.json file and includes clearer labels, and you can find them under Appearance > Design.

\n\n\n\n

Support for Speculation browser API

\n\n\n\n

WordPress 6.8 introduces native support for speculative loading, leveraging the Speculation Rules API to improve site performance with near-instant page loads. This feature prefetches or prerenders URLs based on user interactions, such as hovering over links, reducing load times for subsequent pages.

\n\n\n\n

By default, WordPress 6.8 applies a conservative prefetching strategy, balancing performance gains with resource efficiency. Developers can customize speculative loading behavior using new filters, since the API does not include UI-based controls. The existing Speculative Loading feature plugin will adapt to the core implementation, allowing deeper customization.  Please test this feature in supported browsers (currently Chrome 108+ and Edge 108+, with more browsers evaluating) and provide feedback on #62503 to help refine its implementation.

\n\n\n\n

Major security boost

\n\n\n\n

WordPress 6.8 will use bcrypt for password hashing, which significantly hardens WordPress. Other hashing is getting hardened, too, throughout the security apparatus. You won’t have to change anything in your daily workflow.

\n\n\n\n

The features included in this first beta may change before the final release of WordPress 6.8, based on what testers like you find.

\n\n\n\n

Get an overview of the 6.8 release cycle and check the Make WordPress Core blog for 6.8-related posts in the next few weeks for further details.

\n\n\n\n

Caveat on testing 6.8 Beta 1 in versions older than 5.1

\n\n\n\n

Due to an update made to the upgrade routine during this release, (see r59803), any upgrade from versions older than 5.1 will fail. Folks are working to resolve this specific issue, so please hold off on reporting on this while testing the Beta 1 release.

\n\n\n\n

Vulnerability bounty doubles during Beta & Release Candidate

\n\n\n\n

The WordPress community sponsors a monetary reward for reporting new, unreleased security vulnerabilities. This reward doubles during the period between Beta 1 on March 4, 2025 and the final Release Candidate (RC) scheduled for April 15, 2025.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies. You can find those on the HackerOne page and in the security white paper.

\n\n\n\n

Just for you: a Beta 1 haiku

\n\n\n\n

March winds shift the tide.
Hands unite in open source;
WordPress moves ahead.

\n\n\n\n

Props to @audrasjb @marybaum @mamaduka @michelleames @bph @jorbin @joemcgill @krupajnanda @desrosj @benjamin_zekavica @lysyjan87 for reviewing and collaborating on this post!

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18582\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:60:\"\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"Shaping Tomorrow at WordCamp Asia 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"https://wordpress.org/news/2025/02/shaping-tomorrow-at-wordcamp-asia-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 22 Feb 2025 15:04:04 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:6:\"Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"WordCamp\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18515\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:394:\"Over 1,400 attendees from 71 countries gathered at the Philippine International Convention Center in Manila, and nearly 15,000 more joined online, for WordCamp Asia 2025. It’s the people. It’s the friendships and the stories. Matt Mullenweg, WordPress Cofounder The flagship WordPress event started with a dedicated Contributor Day, followed by two days of engaging talks, […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:17:\"Nicholas Garofalo\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:56717:\"\n
\"WordCamp
\n\n\n\n

Over 1,400 attendees from 71 countries gathered at the Philippine International Convention Center in Manila, and nearly 15,000 more joined online, for WordCamp Asia 2025.

\n\n\n\n
\n

It’s the people. It’s the friendships and the stories.

Matt Mullenweg, WordPress Cofounder
\n
\n\n\n\n

The flagship WordPress event started with a dedicated Contributor Day, followed by two days of engaging talks, panels, hands-on workshops, and networking. Notable guests included WordPress Cofounder Matt Mullenweg and Gutenberg Lead Architect Matías Ventura, who were joined by a diverse lineup of speakers and panelists.

\n\n\n\n

Throughout the event, the sponsor hall buzzed with activity as companies from across the WordPress ecosystem showcased their latest products, engaged with attendees, and offered live demos and giveaways. Each day, attendees refueled with diverse food offerings featuring Filipino favorites, turning meals into a prime networking opportunity where new connections were made and ideas were exchanged.

\n\n\n\n

New Ways to Engage

\n\n\n\n

This year’s event introduced several new programs to the schedule:

\n\n\n\n
    \n
  • Solutions Spotlight—a series of dynamic 10-minute lightning talks that gave an inside look at innovative products, cutting-edge strategies, and real-world solutions from top-tier sponsors, all designed to help attendees succeed in the WordPress ecosystem. These fast-paced sessions offered a unique opportunity to discover how leading brands are solving challenges, empowering users, and shaping the future of WordPress.
  • \n\n\n\n
  • YouthCamp, a dedicated event for kids and teens ages 8-17, offered a full day of free, hands-on sessions designed to spark creativity and introduce the world of WordPress and open source. Through interactive workshops covering web basics, design, and development, participants gained practical skills while exploring the power of building online. 
  • \n\n\n\n
  • The new Career and Social Corners enhanced networking, fostered meaningful connections, and created new opportunities for those within the WordPress community. Career Corner was the go-to space for attendees exploring career opportunities, connecting with sponsors, and discovering exciting new roles. Meanwhile, Social Corner offered a relaxed, lounge-style environment where attendees could engage in informal discussions over refreshments.
  • \n
\n\n\n\n

Contributor Day

\n\n\n\n

WordCamp Asia kicked off with an incredible Contributor Day, bringing together almost 800 contributors, many of them new, to collaborate, share knowledge, and give back to WordPress. With 37 dedicated table leads and 16 experts from the Human Library guiding the way, participants of all experience levels engaged in meaningful discussions, tackled important tasks, and made a lasting impact on the WordPress project.

\n\n\n\n\n\n\n\n

Key contributions included resolving a critical media bug, advancing vertical text editing in Gutenberg, and refining the editing experience with dozens of issue closures. Performance optimizations and accessibility improvements abounded, joined by seven fresh patterns, and over 44,000 newly translated strings.

\n\n\n\n

New tools and workflows were explored to enhance testing and development. The day also saw meaningful conversations between hosting providers and users, improvements to event organizing processes, and hands-on training.

\n\n\n\n

With innovative ideas, new faces, and significant progress across multiple areas, Contributor Day reinforced the spirit of open source collaboration that drives WordPress forward.

\n\n\n\n

The Future is WordPress

\n\n\n\n

On the first full conference day, attendees gathered to celebrate the power of open source collaboration and innovation. Opening remarks from global and local event leads reflected on the incredible journey of WordCamp Asia, tracing its roots back to the first Southeast Asian WordCamp in Manila in 2008. This full-circle moment underscored how the WordPress community has flourished over the years, driven by shared knowledge and a commitment to an open web. The excitement continued with a highly anticipated opening keynote from Matías Ventura, who shared insights into the future of Gutenberg and WordPress, inspiring attendees to embrace the next wave of innovation and creativity in content publishing.

\n\n\n\n
\n\n
\n\n\n\n

The day then began in earnest. Talks highlighted new ways to integrate WordPress with external applications, opening possibilities for more interactive and scalable digital experiences. Simultaneously, content strategists and marketers explored evolving best practices in SEO, learning how to optimize their sites for visibility, engagement, and long-term growth. These sessions emphasized the importance of adaptability in a constantly evolving digital landscape, ensuring that WordPress users stay ahead of industry trends.

\n\n\n\n

Workshops throughout the day provided hands-on learning experiences tailored to a wide range of skill levels. Developers refined their expertise, gaining practical knowledge they could apply to their own projects. Accessibility advocates led discussions on designing for inclusivity, showcasing strategies to make WordPress-powered websites more navigable and user-friendly for people of all abilities.

\n\n\n\n

As the conference continued into the afternoon, conversations expanded to performance optimization and emerging technologies shaping the future of WordPress. A dedicated session explored AI-driven workflows, demonstrating how artificial intelligence can enhance site performance, automate repetitive tasks, and create more personalized user experiences. These discussions showcased the evolving role of WordPress as a versatile platform that extends beyond traditional publishing.

\n\n\n\n

The first day culminated in a thought-provoking keynote panel, WordPress in 2030, where industry leaders explored the future of the platform. The discussion covered the expanding open source community, emerging technologies, and the role of education and mentorship. Panelists shared their perspectives on the opportunities and challenges ahead, encouraging attendees to actively shape the future of WordPress by contributing, innovating, and advocating for an open web.

\n\n\n\n
\"Panelists
\n\n\n\n

Returning for the final day of WordCamp Asia 2025, attendees explored a new set of sessions designed to push the boundaries of web development and strategy. Technical discussions on advanced Gutenberg block development highlighted innovative ways to build more dynamic and interactive content experiences, while another session examined performance optimization strategies to enhance site speed, accessibility, and overall user engagement. Content creators and marketers gained valuable insights into audience growth, effective storytelling, and data-driven content strategies to maximize impact.

\n\n\n\n

The final sessions of the conference reinforced WordPress’s adaptability and innovation, equipping attendees with new skills and strategies.

\n\n\n\n

Q&A

\n\n\n\n

As the final day drew to a close, Matt shared historic photos from WordCamp Davao 2008 in the Philippines, and then answered questions from the audience.

\n\n\n\n
\n\n
\n\n\n\n

Questions covered a variety of topics, incluiding: publishing on the open web, AI, headless WordPress, education, and Matt’s personal motivations. It was clear throughout the Q&A that the future of WordPress is as bright as the island-themed attire at the event’s after-party.

\n\n\n\n

Closing

\n\n\n\n

Thank you to all the hard-working organizers who made this event possible, the speakers who took the stage, the visitors who ventured to Manila, and everyone who tuned in from around the world. Our hope is that every WordCamp attendee leaves with new knowledge, new friends, and new inspiration to build a better web.

\n\n\n\n\n\n\n\n

Be sure to mark your calendars for other major WordPress events in 2025: WordCamp Europe (Basel, Switzerland) and WordCamp US (Portland, Oregon, USA). Then join us in Mumbai, India for WordCamp Asia 2026!

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18515\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:57:\"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:25:\"Report: WordPress in 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"https://wordpress.org/news/2025/02/wordpress-in-2025-report/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 15 Feb 2025 03:19:09 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:7:\"General\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18475\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:379:\"This year is set to be transformative for WordPress, yet many decision-makers risk overlooking the immense opportunities ahead. Our new “WordPress in 2025” report highlights why WordPress should be a cornerstone of your long-term strategy. Stay ahead of the curve—read the report now to see how WordPress can drive growth and innovation for your business in the […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"Noel Tock\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:3721:\"\n

This year is set to be transformative for WordPress, yet many decision-makers risk overlooking the immense opportunities ahead. Our new “WordPress in 2025” report highlights why WordPress should be a cornerstone of your long-term strategy. Stay ahead of the curve—read the report now to see how WordPress can drive growth and innovation for your business in the years to come.

\n\n\n\n
\"\"
\n\n\n\n

Some of the key points we explore: 

\n\n\n\n
    \n
  • As proprietary “next-gen” CMS hype fizzles out and enterprise budgets shift priorities, open-source CMSs like WordPress are primed to gain ground in the commoditized CMS space. WordPress’ maturity and extensibility provide a high starting point for innovation.
  • \n\n\n\n
  • WordPress’ Block Editor has seen tremendous investment, amassing over 34,000 commits – more than entire competing CMS projects. New capabilities like Full Site Editing (FSE) give enterprises unprecedented ability to enable no-code site building.
  • \n\n\n\n
  • Just as being the first user-friendly publishing tool propelled WordPress’ initial growth, AI presents a similar opportunity. WordPress’ contributor community can build not just AI features, but an exciting multi-agent, LLM-agnostic ecosystem representing an intelligent content operating system.
  • \n\n\n\n
  • Pure-play headless vendors are working backwards to add no-code editing, while WordPress has long supported robust headless capabilities alongside its mature editor. For complex sites, hybrid architectures leveraging both are the pragmatic path forward.
  • \n
\n\n\n\n

Download the full WordPress in 2025 (PDF) report directly to learn more.

\n\n\n\n

Don’t miss WP:25, the virtual event.

\n\n\n\n

Save your spot at our free event, WP:25, exploring the future of WordPress and featuring key people working with many of the ideas discussed in the report.

\n\n\n\n
\n\n\n\n

About the report’s author, Noel Tock — Having built his first website back in 1995, Noel has long been watching the evolution of the CMS space. As a co-owner at one of the leading enterprise WordPress agencies, Human Made, his belief in the power of open source is as great as ever. Human Made is a WordPress VIP Gold Partner specializing in DXP, headless, AI and more.

\n\n\n\n

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18475\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:60:\"\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"WordCamp Asia 2025: Manila Magic\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"https://wordpress.org/news/2025/02/wordcamp-asia-2025-manila-magic/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 14 Feb 2025 16:04:45 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:6:\"Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"WordCamp\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18482\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:409:\"The first major WordCamp of the year is here! WordCamp Asia 2025 lands in Manila, Philippines, from February 20-22, bringing together open source enthusiasts, developers, and WordPress professionals from across the region—and the world. With three packed days of learning, networking, and collaboration, this year’s event promises fresh insights, dynamic discussions, and plenty of opportunities […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Bernard Meyer\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:4844:\"\n
\"WordCamp
\n\n\n\n

The first major WordCamp of the year is here! WordCamp Asia 2025 lands in Manila, Philippines, from February 20-22, bringing together open source enthusiasts, developers, and WordPress professionals from across the region—and the world.

\n\n\n\n

With three packed days of learning, networking, and collaboration, this year’s event promises fresh insights, dynamic discussions, and plenty of opportunities to connect.

\n\n\n\n

Solutions spotlight

\n\n\n\n

Throughout the conference days, multiple presentations will focus on the solutions provided by our amazing sponsors. This is a great opportunity to learn more about their initiatives and solutions.

\n\n\n\n\n\n\n\n

Keynotes, panels, and deep dives

\n\n\n\n

The main conference, which will be held on February 21-22, will feature a lineup of notable keynote speakers, including digital innovation leaders and open-source advocates. Attendees can expect diverse sessions on business strategy, development of best practices, and technical advancements.

\n\n\n\n

For those looking to sharpen their skills, presentations will dive deep into topics like SEO for WordPress, performance optimization, and AI-powered content creation. Plus, don’t miss the electrifying WordPress Speed Build Battle, where developers race to create stunning sites in record time.

\n\n\n\n

YouthCamp

\n\n\n\n

On February 22, WordCamp Asia 2025 will host YouthCamp, a pre-registered event designed to introduce young minds to WordPress and its endless possibilities. This initiative aims to engage the next generation of WordPress users, developers, and contributors through hands-on activities and interactive sessions

\n\n\n\n

Closing Q&A with Matt Mullenweg

\n\n\n\n

WordPress Cofounder Matt Mullenweg will wrap up the event with a live Q&A session on February 22. Whether attending in person or tuning in online, you can catch his insights live on the WordPress YouTube channel at 4:00 p.m. Philippine Time (08:00 UTC).

\n\n\n\n

After party

\n\n\n\n

As the sun sets on WordCamp Asia 2025, the excitement continues with the After Party (theme: Island Vibe)! Get ready to experience the vibrant spirit of the Philippines with a lively gathering at The Forum at PICC. Expect a night filled with great conversations, music, and a celebration of the WordPress community.

\n\n\n\n

Get WordCamp-ready

\n\n\n\n\n\n\n\n

As always, be part of the conversation! Whether you’re attending in Manila or following along online, share your experiences using #WCAsia and #WordPress.

\n\n\n\n

Manila is calling—see you at WordCamp Asia 2025!

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18482\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:57:\"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"WordPress 6.7.2 Maintenance Release\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"https://wordpress.org/news/2025/02/wordpress-6-7-2-maintenance-release/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 11 Feb 2025 16:52:23 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18445\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:371:\"WordPress 6.7.2 is now available! This minor release includes 35 bug fixes, addressing issues affecting multiple components including the block editor, HTML API, and Customize. WordPress 6.7.2 is a short-cycle release. The next major release will be version 6.8 planned for April 15, 2025. If you have sites that support automatic background updates, the update […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Aaron Jorbin\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:8487:\"\n

WordPress 6.7.2 is now available!

\n\n\n\n

This minor release includes 35 bug fixes, addressing issues affecting multiple components including the block editor, HTML API, and Customize.

\n\n\n\n

WordPress 6.7.2 is a short-cycle release. The next major release will be version 6.8 planned for April 15, 2025.

\n\n\n\n

If you have sites that support automatic background updates, the update process will begin automatically.

\n\n\n\n

You can download WordPress 6.7.2 from WordPress.org, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. For more information on this release, please visit the HelpHub site.

\n\n\n\n

Thank you to these WordPress contributors

\n\n\n\n

This release was led by Aaron Jorbin.

\n\n\n\n

WordPress 6.7.2 would not have been possible without the contributions of the following people. Their asynchronous coordination to deliver maintenance fixes into a stable release is a testament to the power and capability of the WordPress community.

\n\n\n\n

Aaron Jorbin, Alex Lende, Alexandre Buffet, Andreas Pedersen, Andrew Ozz, Ankit Kumar Shah, apermo, Benedikt Ledl, bernhard-reiter, Brian Alexander, Carlos Bravo, Carolina Nymark, Cyrille, Daniel Post, darerodz, David Calhoun, David Smith, Dennis Snell, dhewercorus, Dion Hulse, Doug Wollison, Ella, Eshaan Dabasiya, Fabian Kägy, Fabian Todt, Felix Arntz, Felix Renicks, Francis Cabusas, Frank B., George Mamadashvili, ghinamt, Glynn Quelch, Greg Ziółkowski, James Koster, Jarda Snajdr, Jb Audras, jdnd, jeryj, Joe Dolson, Joe McGill, Jon Surrell, Jonathan Desrosiers, juanwp22, Juliette Reinders Folmer, Karthick, Kazuto Takeshita, Kelly Choyce-Dwan, Ketan Niruke, Lena Morita, levskipg, Maciej Ma?kowiak, Mario Santos, Matthew Boynes, Mayank Tripathi, Michal Czaplinski, Miguel Fonseca, Mitchell Austin, mreishus, Mukesh Panchal, Nadir Seghir a11n, Narendra Sishodiya, Naresh Bheda, neotrope, Nick Diego, Olga Gleckler, Parth vataliya, Pascal Birchler, paullb, Peter Wilson, Pitam Dey, redkite, Rishav Dutta, robertstaddon, rvoigt, Sagar Tamang, Sainath Poojary, seanlanglands, Sergey Biryukov, Scott Reilly, Shyam Kariya, smerriman, Stephen Bernhardt, Sukhendu Sekhar Guria, TobiasBg, Tonya Mork, Vishy Moghan, Weston Ruter, wongjn, Yogesh Bhutkar, zaoyao

\n\n\n\n

How to contribute

\n\n\n\n

To get involved in WordPress core development, head over to Trac, pick a ticket, and join the conversation in the #core and #6-8-release-leads channels. Need help? Check out the Core Contributor Handbook.

\n\n\n\n

Props to @joedolson, @joemcgill and @audrasjb for proofreading.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18445\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}s:27:\"http://www.w3.org/2005/Atom\";a:1:{s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:4:\"href\";s:32:\"https://wordpress.org/news/feed/\";s:3:\"rel\";s:4:\"self\";s:4:\"type\";s:19:\"application/rss+xml\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:44:\"http://purl.org/rss/1.0/modules/syndication/\";a:2:{s:12:\"updatePeriod\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"\n hourly \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:15:\"updateFrequency\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"\n 1 \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:4:\"site\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"14607090\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";O:48:\"WpOrg\\Requests\\Utility\\CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:12:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Wed, 09 Apr 2025 23:13:37 GMT\";s:12:\"content-type\";s:34:\"application/rss+xml; charset=UTF-8\";s:4:\"vary\";s:37:\"Accept-Encoding, accept, content-type\";s:25:\"strict-transport-security\";s:12:\"max-age=3600\";s:6:\"x-olaf\";s:3:\"⛄\";s:13:\"last-modified\";s:29:\"Tue, 08 Apr 2025 16:13:35 GMT\";s:4:\"link\";s:63:\"; rel=\"https://api.w.org/\"\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:16:\"content-encoding\";s:2:\"br\";s:7:\"alt-svc\";s:19:\"h3=\":443\"; ma=86400\";s:4:\"x-nc\";s:9:\"HIT ord 1\";}}s:5:\"build\";i:1744240221;s:21:\"cache_expiration_time\";i:1744283617;s:23:\"__cache_expiration_time\";i:1744283617;}','off'), +(148,'_transient_timeout_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1744283617','off'), +(149,'_transient_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1744240417','off'), +(150,'_transient_timeout_feed_d117b5738fbd35bd8c0391cda1f2b5d9','1744283618','off'), +(151,'_transient_feed_d117b5738fbd35bd8c0391cda1f2b5d9','a:6:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n\n\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:61:\"\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"WordPress Planet\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://planet.wordpress.org/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"en\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"WordPress Planet - http://planet.wordpress.org/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"item\";a:50:{i:0;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"Gravatar: New ‘Tools’ For Your Digital Identity\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3137\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"https://blog.gravatar.com/2025/04/09/new-tools-for-your-digital-identity/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3424:\"

Your Gravatar profile just got smarter with a handful of updates that make sharing your digital identity even easier.

\n\n\n\n

You will find them all under a new Tools menu in your profile editor, packed with features to help you connect and share across the web.

\n\n\n\n

Here’s what’s new:

\n\n\n\n

Card Customization

\n\n\n\n\"\"\n\n\n\n

Those little Gravatar cards that appear when you comment on WordPress sites and around the web? You’re now in control of how they look! Choose to include your header image, add a contact button, or enable the “send money” feature.

\n\n\n\n

It is the new digital business card. With one click, you can copy the HTML code for your card to display on any website.

\n\n\n\n

Find and edit your card under the new Tools > Card menu item.

\n\n\n\n

Email Signature Generator

\n\n\n\n\"\"\n\n\n\n

Make every email count with your personalized Gravatar signature. It’s like your card, but perfectly formatted for email. Copy the code once, paste it into Gmail, Outlook, or your preferred email tool, and you’re set.

\n\n\n\n

The email signature now has a new easier to find home under Tools > Email signature.

\n\n\n\n

Smart Redirects Get A Home

\n\n\n\n\"\"\n\n\n\n

For custom domain users, we’ve made it even easier to copy and share your smart redirects. These are the magic links Gravatar automatically creates for you – like your-name.link/linkedin or your-name.link/calendar.

\n\n\n\n

See the full list in one new place under Tools > Smart redirects.

\n\n\n\n

Private Messages, Simplified

\n\n\n\n\"\"\n\n\n\n

We’ve clarified how our simple contact form works with a dedicated Private messages menu. When enabled, anyone can send you a short message, but with important safeguards:

\n\n\n\n
    \n
  • They can only contact you once
  • \n\n\n\n
  • You see their complete Gravatar profile
  • \n\n\n\n
  • Your email and private contact info stays hidden
  • \n
\n\n\n\n

Enable the contact form on your profile under the new Tools > Private messages menu.

\n\n\n\n

These small improvements add up to a more connected, streamlined experience for your online identity. And as always, we’re working on more fun features and tools, so stay tuned!

\n\n\n\n

To check these out, edit your profile and look for the Tools option in the sidebar.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 17:23:50 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:21:\"Matt: AI Site Builder\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"https://ma.tt/?p=141197\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"https://ma.tt/2025/04/ai-site-builder/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:563:\"

The long-anticipated “Big Sky” AI site builder on WordPress.com went live today. It combines several models and can create logos, site designs, typography, color schemes, and content. It’s an entirely new way to interact with and edit a brand-new or existing WordPress site. This AI agent will make WordPress accessible to an entirely new generation and class of customers, and it will be a power tool for professionals to do things in minutes that used to take them hours.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 17:14:06 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Matt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:89:\"Do The Woo Community: Navigating the Accessibility Landscape: Real Stories with Bud Kraus\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=94129\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:87:\"https://dothewoo.io/navigating-the-accessibility-landscape-real-stories-with-bud-kraus/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:215:\"In this podcast episode, hosts Anne Bovelett and BobWP, along with guest Bud Kraus, explore ecommerce accessibility, discussing user experiences, challenges, and the importance of inclusive web design for all users.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 15:13:19 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:113:\"HeroPress: How WordPress Changed My Life — Gratitude – Como o WordPress Mudou a Minha Realidade – Gratidão\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://heropress.com/?post_type=heropress-essays&p=7856\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:152:\"https://heropress.com/essays/how-wordpress-changed-my-life-gratitude/#utm_source=rss&utm_medium=rss&utm_campaign=how-wordpress-changed-my-life-gratitude\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:22331:\"\"Pull\nHere is Caio reading his own story aloud.\n\n\n\n\n\n

O texto também está disponível em português do Brasil.

\n\n\n\n

My name is Caio Ferreira and I’ve been using WordPress since 2020. In this article I’ll tell you a little about my history with this platform and how it changed everything – from experimental business ideas – to a real professional experience.

\n\n\n\n

My childhood

\n\n\n\n

I’ve always been passionate about technology, even as a kid. When we got our first computer at home — one of those classic white models my father bought in many installments — it became the main attraction in the house. And rightfully so: it sat in the living room, where everyone could see it.

\n\n\n\n

Back then, I was already browsing the internet, exploring system settings, customizing Windows XP, and maybe (just maybe) installing a few viruses or unwanted installers here and there.

\n\n\n\n

Despite the limitations, I had a lot of fun creating blogs, managing Facebook communities, and trying out platforms like Blogger, Wix, Squarespace — basically anything free that allowed me to publish something online. I didn’t have much technical knowledge, and even less money to invest. But I already had this strong desire to share my ideas with the world.

\n\n\n\n

Discovering WordPress

\n\n\n\n

Besides the blogs, I loved creating websites for imaginary businesses that never really existed — and honestly wouldn’t work in any real-world scenario. But the excitement was real. Every time a new idea came up, I would recruit some friends to “invest” in it and try to convince them it was just a matter of time before we made a lot of money — like the success stories we saw on TV.

\n\n\n\n

In one of these pitches, I showed a site I had built on Wix to a more experienced friend, and he asked me:

\n\n\n\n
\n

“Why are you using Wix? Have you ever tried WordPress?”

\n
\n\n\n\n

That sparked something in me. I had heard of WordPress before but thought it was too complex. Plus, I was always stopped by the need for paid hosting.

\n\n\n\n

Still, my curiosity got the best of me. I started researching more seriously and quickly realized WordPress was far more powerful than any tool I had used before. But the cost barrier remained. So I put the idea on hold, waiting for the right time to dive in.

\n\n\n\n

High school: searching for direction

\n\n\n\n

High school felt like a marathon. I didn’t really know where I was going, but I knew I had to keep moving. I didn’t have any career role models, nor pressure to follow a specific path. The only reference points were what I saw on TV or heard from distant relatives — law, engineering… the so-called “safe” careers parents often dream of.

\n\n\n\n

Even without a clear direction, I was always committed. I learned English on my own playing RPGs online and created a Duolingo account back in 2014. I used to take part in school competitions — even math ones — not because I was the best, but because I saw them as a chance to stand out.

\n\n\n\n
\n

If I didn’t have obvious advantages, I’d create my own.

\n
\n\n\n\n

That mindset led me to participate in the Junior Achievement “Junior Company” program. Our school was selected to form a student-run fictional business, funded by the local government. That experience was life-changing.

\n\n\n\n

My junior company, volunteering, and a visit to a startup

\n\n\n\n

Even though I was just in my first year of high school — and technically under the age requirement — I asked to join the program and, more boldly, applied to be the company’s president. I put on a dress shirt, prepared a speech, and was elected.

\n\n\n\n

Despite having no real experience, we ended up doing well. Our project turned a small profit (a few reais per “shareholder,” but still, profit!). That success motivated me to stay involved with Junior Achievement. I started volunteering and joined more programs.

\n\n\n\n

One of those opportunities allowed me to spend a day inside a startup in Belo Horizonte. I had never even set foot in a corporate office before — let alone a startup with a playful office, relaxed people, and even a ball pit!

\n\n\n\n

I brought a notebook and wrote down everything I could. The whole experience left me stunned. Up until then, I thought work environments were dull and gray, with strict rules and judgment over things like shoes and dress codes.

\n\n\n\n

My first job — in that same company?

\n\n\n\n

A few days after the visit, encouraged by the staff, I created a LinkedIn profile and started sharing every experience I had, no matter how small. Around that time, they gave me access to a free WordPress course. I loved it. I wasn’t just taking the course — I was exploring on my own and learning as much as I could.

\n\n\n\n

I kept in touch with the people I had met, interacted with their posts, and shared my progress. Then, one day, I received a message that changed everything.

\n\n\n\n

One of the employees who hosted us at the office reached out: the company was looking for someone like me to join the team.

\n\n\n\n
\n

I had recorded a few videos after the visit expressing how much the experience meant to me — and somehow, that had reached them.

\n
\n\n\n\n

I was still finishing high school at the time, just 17 years old, when I got the offer. The following year, I started working there as an assistant and began my Computer Science degree on a scholarship.

\n\n\n\n

Promotion to developer

\n\n\n\n

In my first two years, I worked mostly with SEO and content distribution, handling a variety of CMS platforms. But WordPress had my heart from day one. Its flexibility, the power to customize everything, and the massive community — it was everything I loved.

\n\n\n\n

Eventually, an opportunity opened for an internal role as a web developer — and I jumped at it. I went through the selection process and got the position.

\n\n\n\n

Our team was partly based in Brazil, led by our manager Manny, who was in Canada. It was the perfect challenge: a chance to leave my comfort zone and practice English daily. Manny even learned a few Portuguese words with us.

\n\n\n\n
\n

As a developer, I dove deep into WordPress.

\n
\n\n\n\n

Each project pushed my limits and made me grow. It was around this time that I also got involved with the WordPress community in my city.

\n\n\n\n

How WordPress changed my reality

\n\n\n\n

WordPress turned out to be so much more than just a tool — it changed my life.

\n\n\n\n

With the income I earned through projects using the platform, I was able to make a down payment on my first apartment.

\n\n\n\n
\n

That same kid who couldn’t afford hosting fees was now buying property.

\n
\n\n\n\n

And it didn’t stop there. In 2022, I received a job offer from a company in the United States — something I would’ve never dreamed of just a few years earlier.

\n\n\n\n

That same year, I attended my first WordPress meetup (still during the pandemic), and later, my first WordCamp as a participant — held remotely in São Paulo. It felt like everything was starting to connect.

\n\n\n\n

And as if all that wasn’t enough, I married the love of my life. It was a simple ceremony, but one we had always dreamed of — made possible, in large part, thanks to the income I earned working with WordPress.

\n\n\n\n

Returning to the Community

\n\n\n\n

In 2025, we resumed in-person WordPress community meetups after the pandemic. I was nervous — what if no one showed up?

\n\n\n\n

But they did. We had 25 people, all engaged and eager to contribute, learn, and share. That meetup was a turning point for me.

\n\n\n\n
\n

I realized I could lead, organize, and give back.

\n
\n\n\n\n

Today, I’m actively involved in the community — helping plan events, staying connected with members, and always looking for new ways to contribute. WordPress didn’t just help me build a career — it helped shape who I am.

\n\n\n\n

The Importance of English

\n\n\n\n

Like Rafael shared in another HeroPress story, English remains a big challenge for many of us in Brazil — but also a powerful key.

\n\n\n\n

I’m far from fluent, but I keep learning. Each Duolingo lesson, each YouTube tutorial, each Slack conversation with my international team is a step forward.

\n\n\n\n
\n

What matters is not giving up.

\n
\n\n\n\n

Because if there’s one thing I’ve learned from this entire journey, it’s that everything can change. Sometimes, all we need is a small opportunity, a bit of encouragement — or simply, a platform like WordPress.

\n\n\n
\n\n
\n

Caio’s Work Environment

\n\n\n\n

We asked Caio for a view into his development life and this is what he sent!

\n\n\n
\n \"Caio\'s\n
\n\n\n\n\n

HeroPress would like to thank Draw Attention for their donation of the plugin to make this interactive image!

\n
\n\n
\n\n\n\n\n
\n\n\n\n

Como o WordPress Mudou a Minha Realidade – Gratidão

\n\n\n\nAqui está o Caio lendo sua própria história em voz alta.\n\n\n\n\n\n

Oi! Eu me chamo Caio Ferreira e venho utilizando o WordPress desde 2020. Hoje quero compartilhar um pouco da minha trajetória com essa plataforma e como ela transformou tudo na minha vida – desde ideias de negócios experimentais até uma carreira profissional de verdade.

\n\n\n\n

Na minha infância

\n\n\n\n

Sempre gostei muito de tecnologia desde pequeno. Ainda novo, quando recebemos o nosso primeiro computador em casa, tudo ainda era muito novo. Era um daqueles modelos brancos, que meu pai comprou dividido em muitas vezes, e que virou a atração da casa — também não era pra menos: ele ficava na sala de estar, onde todo mundo via.

\n\n\n\n

Naquele tempo, eu já navegava na internet, procurava formas de fuçar o sistema, personalizava o Windows XP do jeito que podia, e talvez (só talvez mesmo) tenha instalado alguns vírus ou instaladores indesejados algumas vezes.

\n\n\n\n

Apesar das limitações, eu me divertia criando blogs, gerenciando comunidades no Facebook e testando plataformas como Blogger, Wix, Squarespace, ou qualquer outra gratuita que me deixasse publicar algo online. Eu não tinha muito conhecimento técnico, e menos ainda dinheiro para investir. Mas já naquela época eu tinha essa vontade de compartilhar ideias com o mundo.

\n\n\n\n

Conhecendo o WordPress

\n\n\n\n

Além dos blogs, eu também gostava de criar sites para negócios fictícios, que nunca saíam do papel — e que, honestamente, provavelmente não dariam certo de qualquer jeito. Mas a empolgação era grande. Sempre que surgia uma ideia, eu chamava amigos para “investir” comigo, e tentava convencê-los de que era só uma questão de tempo até aquilo dar certo. Era como víamos nas reportagens de sucesso na televisão.

\n\n\n\n
\n

Em uma dessas aventuras, mostrei o site para um amigo mais experiente, que me perguntou por que eu estava usando o Wix. Ele comentou que existiam outras opções com mais possibilidades, como o WordPress.

\n
\n\n\n\n

Eu já tinha ouvido falar do WordPress, mas achava complexo demais — e, além disso, sempre esbarrava na questão da hospedagem paga.

\n\n\n\n

Mesmo assim, aquilo me deixou curioso. Comecei a pesquisar mais a fundo, entendi que o WordPress era muito mais robusto do que qualquer ferramenta que eu tinha usado até então, mas acabei deixando de lado naquele momento. Afinal, eu não tinha como pagar uma hospedagem. Guardei a ideia comigo, esperando por um momento em que ela fizesse mais sentido.

\n\n\n\n

Meu ensino médio

\n\n\n\n

O ensino médio foi uma maratona. Eu não sabia ao certo onde queria chegar, mas tinha pressa em encontrar esse “algum lugar”. Não tive exemplos próximos de carreira, nem cobrança direta para seguir determinada profissão. As referências eram as mesmas de muita gente: Direito? Engenharia? Os “cursos de sucesso” que a TV e alguns parentes diziam valer a pena.

\n\n\n\n

Mesmo sem um caminho definido, sempre fui esforçado. Aprendi inglês sozinho jogando RPG online e criei minha conta no Duolingo ainda em 2014. Me destacava em atividades que a maioria evitava — como concursos de matemática — mesmo sem ser o melhor.

\n\n\n\n
\n

A ideia era simples: se eu não tinha vantagens competitivas óbvias, eu criaria as minhas.

\n
\n\n\n\n

Me envolver nessas atividades era a forma que eu via para construir algo diferente, já que o mercado de trabalho viria logo.

\n\n\n\n

Foi com esse espírito que participei do programa Miniempresa da ONG Junior Achievement, onde minha escola foi selecionada para criar uma empresa estudantil fictícia, com tudo financiado pelo governo. Aquilo mudou tudo.

\n\n\n\n

Minha miniempresa, voluntariado e a primeira visita a uma startup

\n\n\n\n

Mesmo sendo do primeiro ano, pedi para participar do programa — mesmo sem ter a idade sugerida — e mais: me candidatei para presidente. Usei uma camisa social e um discurso bem montado, e fui escolhido para liderar a miniempresa.

\n\n\n\n

Apesar da falta de experiência, conseguimos um resultado positivo. A empresa gerou lucro (poucos reais para cada “acionista”, mas ainda assim, lucro). O programa me deixou animado, e comecei a me envolver em outras atividades da Junior Achievement, atuando como voluntário em eventos e ajudando em novos programas.

\n\n\n\n

Foi em uma dessas iniciativas que surgiu a oportunidade de visitar, por um dia, uma startup em Belo Horizonte. Eu nunca tinha imaginado sequer entrar na sede de uma empresa, quem dirá de uma startup com escritório descolado, pessoas à vontade, piscina de bolinha e um clima completamente diferente do que eu imaginava ser “trabalhar”.

\n\n\n\n

Levei um caderninho e anotei tudo o que pude. Saí de lá em estado de choque, pensando: “é possível trabalhar num lugar assim?”. Até então, tudo que eu imaginava era o oposto: ambientes cinzentos, baías sem graça e muita formalidade.

\n\n\n\n

Meu primeiro trabalho — e na mesma empresa?

\n\n\n\n

Poucos dias depois, incentivado pela visita, criei meu LinkedIn (com ajuda de quem nos recebeu na empresa) e comecei a registrar todas as experiências que já tinha vivido. Também recebi acesso a um curso de WordPress oferecido por eles. Gostei tanto da ferramenta que, além do curso, comecei a explorar muito por conta própria.

\n\n\n\n

Me mantive em contato com o pessoal da empresa, interagia nas redes, compartilhava o que estava aprendendo — até que uma mensagem mudou tudo.

\n\n\n\n

Uma das pessoas que nos recebeu durante a visita me chamou no privado: a empresa estava procurando alguém com o meu perfil para integrar o time.

\n\n\n\n
\n

Eu tinha gravado vídeos contando o quanto aquela experiência tinha me impactado, e isso, de alguma forma, chegou até eles.

\n
\n\n\n\n

Eu ainda estava finalizando o ensino médio, com 17 anos, quando recebi a proposta. No ano seguinte, comecei a trabalhar na empresa como assistente e iniciei minha graduação em Ciência da Computação, com uma bolsa de estudos.

\n\n\n\n

Minha promoção a desenvolvedor

\n\n\n\n

Durante os dois primeiros anos, trabalhei com SEO e distribuição de conteúdo, lidando com diversos CMSs. Mas foi o WordPress que capturou minha atenção desde o começo. A versatilidade, a comunidade, a possibilidade de personalização — tudo me encantava.

\n\n\n\n

Quando surgiu uma vaga internacional dentro da própria empresa para atuar como desenvolvedor web, me inscrevi sem pensar duas vezes. Passei por um processo interno, fui aprovado e comecei a atuar em projetos mais técnicos.

\n\n\n\n

Nosso time era parcialmente brasileiro e liderado pelo Manny, nosso gerente no Canadá. Foi um baita desafio — e uma excelente oportunidade para praticar inglês no dia a dia. Ele, inclusive, chegou a aprender algumas palavras em português com a gente.

\n\n\n\n
\n

No novo cargo, mergulhei ainda mais fundo no desenvolvimento com WordPress.

\n
\n\n\n\n

Era ali que eu percebia: cada novo desafio me tirava da zona de conforto, mas me deixava mais preparado.

\n\n\n\n

Como o WordPress transformou minha realidade

\n\n\n\n

O WordPress foi muito mais do que uma ferramenta de trabalho. Ele transformou minha realidade.

\n\n\n\n

Com o que ganhei trabalhando com a plataforma, consegui dar entrada no meu apartamento.

\n\n\n\n
\n

Isso mesmo — aquele mesmo garoto que não podia pagar uma hospedagem agora realizava um sonho pessoal.

\n
\n\n\n\n

E não parou por aí. Em 2022, recebi uma proposta de trabalho de uma empresa dos Estados Unidos. Algo que, anos antes, eu não ousava nem imaginar.

\n\n\n\n

Naquele mesmo ano, participei do meu primeiro meetup (ainda durante a pandemia), e também do meu primeiro WordCamp como participante — que aconteceu remotamente, em São Paulo. A sensação era de que tudo estava se encaixando.

\n\n\n\n

E como se não bastasse, me casei com o amor da minha vida. Foi uma cerimônia simples, mas do jeito que sempre sonhamos — e que só foi possível, em grande parte, graças à renda que conquistei trabalhando com WordPress.

\n\n\n\n

Retorno à comunidade

\n\n\n\n

Em 2025, com o fim do período pandêmico, retomamos os encontros presenciais da comunidade WordPress da minha cidade. A ansiedade era inevitável: e se ninguém aparecesse?

\n\n\n\n

Mas apareceram. Foram 25 pessoas — todas engajadas, com vontade de aprender, ensinar, trocar experiências. Aquilo foi um divisor de águas pra mim.

\n\n\n\n
\n

Eu entendi que podia liderar, contribuir, devolver um pouco do que recebi.

\n
\n\n\n\n

Hoje, mantenho contato constante com membros da comunidade, ajudo na organização de encontros e eventos, e continuo buscando espaços e oportunidades para fortalecer esse ecossistema. O WordPress não só me ajudou a construir uma carreira — ele ajudou a moldar quem eu sou.

\n\n\n\n

A importância do inglês

\n\n\n\n

Assim como o Rafael contou em outro texto aqui no HeroPress, o inglês ainda é uma barreira para muitos brasileiros. Mas também é uma chave. Uma chave que, quando girada, abre portas para oportunidades inimagináveis.

\n\n\n\n

Eu não sou fluente. Mas sigo aprendendo. Cada lição no Duolingo, cada vídeo no YouTube, cada conversa improvisada no Slack internacional da empresa é uma forma de evoluir.

\n\n\n\n
\n

O importante é seguir — mesmo aos poucos, com tropeços.

\n
\n\n\n\n

Porque se tem uma coisa que aprendi nessa jornada toda, é que tudo pode mudar. Às vezes, tudo o que a gente precisa é de um empurrãozinho, uma oportunidade, ou simplesmente… uma plataforma como o WordPress.

\n

The post How WordPress Changed My Life — Gratitude – Como o WordPress Mudou a Minha Realidade – Gratidão appeared first on HeroPress.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 14:54:01 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Caio Ferreira\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:93:\"WPTavern: 164 – Milana Cap on the Interactivity and HTML APIs, and Their Enormous Potential\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=194643\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:107:\"https://wptavern.com/podcast/164-milana-cap-on-the-interactivity-and-html-apis-and-their-enormous-potential\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:44216:\"Transcript
\n

[00:00:00] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress, the people, the events, the plugins, the blocks, the themes, and in this case, how the Interactivity and HTML APIs are transforming the way developers work with WordPress.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox and use the form there.

\n\n\n\n

So on the podcast today, we have Milana Cap. Milana is a seasoned WordPress engineer from Serbia working with XWP, and freelancing through Toptal. She’s not just a developer, she’s also active in WordPress community roles such as a co-rep for the documentation team, organizer at multiple WordCamps, and a member of the plugin review team.

\n\n\n\n

We discussed some groundbreaking WordPress features that developers should be aware of, specifically focusing on her presentation at WordCamp Asia in Manila, titled, WordPress gems for developers: Fresh new features you’ll actually want to use.

\n\n\n\n

We start the discussion with the Interactivity API. Milana explains how this feature allows blocks within WordPress to communicate seamlessly with one another. Until now, most blocks were just silos of information, they could not communicate with one another. This API enables developers to manage interactivity across multiple blocks without resorting to custom solutions.

\n\n\n\n

Milana also gets into the HTML API, which underpins the Interactivity API. This empowers developers to manipulate HTML attributes using PHP, thereby reducing the reliance on JavaScript. This not only enhances page load speeds, but also simplifies the code management process. It’s not something that I’d heard of, but Milana explains how important it can be in rewriting the DOM for whatever goals you have in mind.

\n\n\n\n

Throughout the episode, Milana shares examples of these APIs in action, demonstrating how they can simplify and optimize WordPress development projects, particularly at an enterprise level.

\n\n\n\n

If you’re a developer looking to leverage these new WordPress features, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

\n\n\n\n

And so, without further delay, I bring you Milana Cap.

\n\n\n\n

I am joined on the podcast by Milana Cap.

\n\n\n\n

[00:03:32] Milana Cap: Yes. Thank you.

\n\n\n\n

[00:03:33] Nathan Wrigley: Thank you. I’ve had to practice that name several times. It’s lovely to have you on the podcast today. I’ve never spoken to Milana before, although I’ve seen her from afar many times.

\n\n\n\n

And we’re facing each other because we’re in the Philippines. We’re in Manila. It’s WordCamp Asia, and Milana is doing a presentation at the event. It is called WordPress gems for developers: fresh new features you’ll actually want to use.

\n\n\n\n

Before we get into that conversation Milana, will you just spend a moment introducing yourself. Tell us who you are, where you’re from, what you do with WordPress, that kind of thing.

\n\n\n\n

[00:04:07] Milana Cap: I’m Milana Cap from Serbia, and we have the best community in the world. I am currently WordPress Engineer at XWP and also freelancing through Toptal. I am one of the co reps for the documentation team, one of plugin review team members. I’m also a classical musician and just, you know, being loud all around. I like traveling and speaking at conferences, and that’s basically it.

\n\n\n\n

[00:04:38] Nathan Wrigley: Can you just tell us a little bit about the bits and pieces going on in Serbia there? You sound quite proud of it. You said it the best or something like that. You’ve got a vibrant, healthy growing Serbian community.

\n\n\n\n

[00:04:49] Milana Cap: Well, it’s not really growing, and it’s not that vibrant as it was. But the core of community that started getting together in 2016, or even before that, we still stayed, and we are still active and they’re like my brothers. We travel, we plan together. We visit each other in Serbia as friends, and we plan for barbecues and all the other stuff, besides, you know, organising events.

\n\n\n\n

[00:05:22] Nathan Wrigley: So it really is an actual community.

\n\n\n\n

[00:05:24] Milana Cap: Yeah it is.

\n\n\n\n

[00:05:25] Nathan Wrigley: You spend social time together. Oh, that’s lovely. Yeah, and you mentioned you work with, for, XWP. This is a name that I hear a lot, but I don’t really know much about the company. Just tell us a little bit about what you do for them, and with them.

\n\n\n\n

[00:05:39] Milana Cap: First of all, they are sponsoring my time at wordpress.org. It’s an agency that works mainly with enterprise clients. So we do all of it, like building you a new website, or maintaining the existing one, or fixing problems. And it’s usually, mostly, just enterprise clients.

\n\n\n\n

[00:05:59] Nathan Wrigley: Is that an Australian based company?

\n\n\n\n

[00:06:02] Milana Cap: It’s kind of, yeah, based. It’s created there but we are completely remote.

\n\n\n\n

[00:06:07] Nathan Wrigley: Everything distributed, like a global team. Oh, that’s nice.

\n\n\n\n

Okay, so let’s just move on into the topic today. The presentation that you were giving, I’ll just repeat the title, WordPress gems for developers, fresh new features you’ll actually want to use. And then I’ll read the blurb as well because it’ll give the listeners some context. We’ll take a closer look at the innovative HTML and Interactivity APIs as the most significant game changers in today’s WordPress development, with a splash of WP-CLI magic for fast and more fun development. And there might be a surprise or two.

\n\n\n\n

Well, obviously on the audio podcast, we’re not going to be able to breakout WPCLI, but nevertheless, we’re going to talk about those things. We’re going to concentrate primarily on the Interactivity API. Obviously this is something that you’d need to get your hands on, you’d need to be opening a laptop. But we can’t do that. It’s an audio podcast. So first of all, let’s just break into the topic by asking the question, what is the Interactivity API? And let’s do that from a total novice perspective.

\n\n\n\n

[00:07:07] Milana Cap: Okay, yeah. Well, Interactivity API allows you to get back to the whole page. At least I see it that way. Because before Gutenberg, we were using only PHP, and PHP page is aware of all of its parts. So in header, you know what’s happening in footer and vice versa.

\n\n\n\n

But then we got Gutenberg and these blocks didn’t know about their surroundings. They were just like, oh, I’m a block here, and I do what I do and I don’t care about others.

\n\n\n\n

And it was difficult to get that in your head, like this is a completely separate entity that, once it’s in a page, you can work with that, but there is no way to connect to it to the rest of the page. And today you have a lot of requests for having interactive page. You know, not just showing the text and people come and read, you need to have something that’s happening on that page.

\n\n\n\n

And it was very difficult to, for example, make one block do something and then you use that data in another block, that was insane. And people were trying to do those things in so many different ways. It was a mess. Like, I have a slide with dolls that have misplaced eyes and all of that. That’s how it looks like.

\n\n\n\n

So now with Interactivity API we finally get that connection, but it’s not like hacky thing, it’s in Core. So every block can be aware of the other block, and you can send the data from one block to all other blocks. And that’s really what was missing for a long time. And not just in WordPress, we have the same things happening before WordPress, in Symphony, in Laravel. So now we have that too.

\n\n\n\n

[00:09:04] Nathan Wrigley: So let me just try and sum up what you’ve just said, and see if I’ve parsed it correctly and understood it. So prior to Gutenberg, given the PHP nature of WordPress, the bits and pieces that were displaying on the page, so header, footer content and what have you, they had some recognition within PHP of what one was doing and what the other was doing.

\n\n\n\n

And then along comes Gutenberg and we shatter the experience on the page into a variety of different blocks. There’s an image here, and a paragraph here, and some more text over here, and a heading and what have you. And each of those little blocks is a silo. It lives by itself, for itself, it’s erected walls around itself so that it can’t be communicated.

\n\n\n\n

[00:09:41] Milana Cap: It’s a diva.

\n\n\n\n

[00:09:41] Nathan Wrigley: It can’t talk out and it can’t hear things in. And that’s a problem. I mean, it’s a brilliant solution if you want to move content around, but If you want one thing to shout to another thing and say, look, I just got clicked, go and update yourself. Add one to yourself, or whatever it may be. So that possibility evaporated.

\n\n\n\n

But now with the Interactivity API, we’ve come up with a Core solution. So it ships with WordPress, everybody has it. And suddenly we’re able to say, okay, I’m a block, I’m a button, and when I get clicked, I want you to add one to the cart. And the shopping cart number can increment by one and what have you. So suddenly everything can communicate with everything else. Have I got that about right?

\n\n\n\n

[00:10:23] Milana Cap: Yes.

\n\n\n\n

[00:10:24] Nathan Wrigley: Oh, perfect. Okay. And so I’ve seen examples of Interactivity over many years since Gutenberg came around, and I’m imagining that each developer, therefore has had to create their own way of doing it. And presumably that works for them, but it doesn’t work for the project as a whole.

\n\n\n\n

[00:10:44] Milana Cap: Not just that. It might work for them but, let’s say you have a plugin and your plugin is doing that interactive thing with your own blocks. But me as another developer, I want maybe to enhance your blocks, but I don’t have access to whatever is happening in your blocks. So whatever you are doing, like counting stuff and changing something, I don’t have that info. So I have to do, again, hacky thing.

\n\n\n\n

But with Interactivity API, I have a standardised access to that. So I can, you know, set my blocks to support Interactivity API. And I can get, with just one function, I can get all the data from your blocks and work with them, and it’s completely in Core. It’s standardised. And anybody can take my data and, you know, this data and do whatever they want with that. And it’s not just that it’s easy to get that data, but we all do it the same way. So when I open your block, I know exactly what I will find there. I know exactly how to get that data, and how to provide to others.

\n\n\n\n

[00:11:58] Nathan Wrigley: So the benefit is basically that it’s a standard mechanism. Everybody knows what the rules of the game are. So in the past, the experiences that I’ve seen online where plugin A has been able to clearly demonstrate this interactivity, a different developer coming to that would have to learn how plugin A does it, and then if they go and try and do the same thing for a different plugin from a rival, for example, they would have to learn that one.

\n\n\n\n

And every time you wanted to do it, you’d have to learn how that system does it. So there’s no interoperability. It’s just little silos of interactivity. They worked, but they were a sort of stepping stone to what we’ve got now.

\n\n\n\n

Okay, I think I understand that. That’s great. Hopefully the audience has got that as well. That should be good. Can you give us some nice examples that you’ve seen where the Interactivity API, you describe it, the audience can hear it and readily understand, okay, that’s something that it can handle.

\n\n\n\n

[00:12:49] Milana Cap: Well, there is a beautiful demo that is used for demonstrating the Interactivity API by people who created Interactivity API. It’s a movie demo, and you can find it if you go for introductory post of Interactivity API at Core blog, you will find it. So it’s a simplified Netflix made with WordPress. So you get simple things like there is a favorites. So you can heart a movie, and it’ll show the number, how many favorites you have. But when you dig deeper, you can open one movie and play the trailer, and it’ll have a minimised video on the bottom. And you can, you know, browse the website and switch pages, and the video is still playing in the corner and it doesn’t even hiccup.

\n\n\n\n

The thing that is happening there is you think you are reloading pages. You think you are going to different pages, but it’s really the same page and it’s just being reloaded in what you need to reload. So it’s the hardest thing for developer to do, to switch page, but doesn’t really reload the page. And if you take a look, if you try that demo and you take a look, you will see that URL changes, everything changes, but you really didn’t move from the first page.

\n\n\n\n

[00:14:18] Nathan Wrigley: Okay, so what you’ve just described then, you’ve got a, like a tiled selection of videos, and underneath it is like a little heart icon. So it’s just a demonstration that if you click the heart icon, it says, I like this one. And then it keeps a record of that somewhere else. Like, how many of you hearted over here? Or, click this heart icon and it’ll take you to the ones that you favorited. That kind of thing. But also it gives the impression that you’re reloading pages, but really it’s all just happening within that one page session.

\n\n\n\n

[00:14:46] Milana Cap: Yes.

\n\n\n\n

[00:14:47] Nathan Wrigley: Okay. So that’s a really easy to understand version of it. And I would imagine something like, let’s say a shopping cart, I think I mentioned that earlier, where you, I don’t know, you click that you want to add something to the cart, sort of similar process. It’s a bit like hearting, isn’t it? You add something to the cart and you get that interactive cart icon in the top right of the screen if you’re on a desktop. And it says you’ve got three items in there, and you click it and you’ve got four items in there, and so on. Those kind of things. So again, it’s one part of the website, one block if you like, updating another thing. Are there any other examples that you think are quite useful?

\n\n\n\n

[00:15:21] Milana Cap: Well, I saw like countdown. So if you want your website to show the countdown until launching something. There’s also we have already two examples in Core working. So you have a query block, and you can select to have it paginated, without pagination. That’s Interactivity API.

\n\n\n\n

So anywhere you would use Ajax before, you can use Interactivity API. It’ll give you that feeling of nothing has been reloaded, so it’s just loading in that place. You don’t use Ajax, you just use Interactivity API.

\n\n\n\n

[00:16:05] Nathan Wrigley: So this would be, I don’t know, a list of posts or something like that. And at the bottom of the screen, we’ve seen the first 12, 12 more, you would typically click two or the right arrow or something, and that would do some sort of Ajaxy request. But in this case, that’s now been removed and we’re using the Interactivity API, and it will give you the next 12, and the next 12, and so on. Yeah, that’s a really great example.

\n\n\n\n

So presumably, if this is moving into WordPress Core, does that mean that a lot of the Core features that, like for example, pagination, has that now moved over in WordPress Core to using the Interactivity API?

\n\n\n\n

[00:16:37] Milana Cap: Well, I know that that specific feature has moved to Interactivity API, and also the image block has the option for lightbox. That’s also Interactivity API. That’s currently in Core. And I imagine a lot of other things can be moved. But also it doesn’t have to. The only thing that it needs is a good documentation, and option that you can use it so you can do with it whatever you want.

\n\n\n\n

[00:17:07] Nathan Wrigley: What is the documentation like? You know, if I was a developer and I wanted to begin using this because, sounds good, I’d rather not maintain my own bucket load of code for my interactivity in my plugin, for example. Let’s just throw all that out and go with what WordPress has. Is there a ton of documentation to get developers started?

\n\n\n\n

[00:17:25] Milana Cap: There is. They are not making the same mistake we had with Gutenberg. I think for Interactivity API, the most difficult thing is to actually understand it. Because we had, I had, as PHP developer primarily, I had a problem to understand Gutenberg and to understand how React works, and why React doesn’t understand how I think, you know? And I was always over-engineering it because I was covering all the cases.

\n\n\n\n

But React doesn’t care about all the cases. It was very difficult for me to understand how that works on components based, and these components don’t care about anything else but themselves.

\n\n\n\n

So Interactivity API now connects all of this. And we are coming back to the system that is aware of all its parts. But not just that, in Interactivity API you have the option to write the code where it makes the most sense.

\n\n\n\n

When I was playing with it, I had two blocks that were supposed to talk to each other, and I realised that something that was one block doing, it made the most sense to write the code for it in another block’s VueJS. So I was using the, there is the template that you can use for Interactivity API, and it’ll run the Create Block Script, but just use the Interactivity API template. And then you get the block that has switch from light to dark theme.

\n\n\n\n

There is a toggle. The first was, it was only the toggle, and I was very disappointed. Like, the toggle shouldn’t use any JavaScript at all. But it was a good example for what Interactivity API can do. And now with the theme switching, it’s kind of complete. You understand all the things that Interactivity API is.

\n\n\n\n

So this toggle was another button, and you click on it, and it shows the paragraph. And then you click on it again and it closes the paragraph. And then I used another block, and I wanted that other block to count how many times I opened and closed this toggle. It was mind blowing that that code for counting how many times I open and close it, I will show the data in this other block.

\n\n\n\n

But it made much more sense to write the code for it in this first block, because I already have there code that is aware that this is open and closed. So I could just, you know, add one line of the code, and update the number there in another block. So that’s kind of the most difficult thing with Interactivity API, to understand how that functions, and that you can really achieve a lot with one piece of code, one line of code, but put it in a right place. And it can be in different places. So that’s something, you know, for you as a developer to document where I wrote things.

\n\n\n\n

So with the Interactivity API, the most important thing is to actually understand how that works. There is very good documentation there for the basic stuff, definitions and all of it. And also, examples. But really, it’s not just copy, pasting from example, it’s playing with it and understanding how it is connected.

\n\n\n\n

And once it’s clicked in your mind, it’s mind blowing. It’s like a game. Well, the coding for me is like a game. That’s why I started coding. But it is very interesting that you can, you know, play with it, you can break it, you can find different ways. And I was playing with putting the same code in different places to see if it will work, it will.

\n\n\n\n

So there is a new skill that we will see with Interactivity API, like the most beautiful code and the most beautiful place where you put that code. And I think it’s very much open for optimising code. And you’ll see there the level of expertise of developer for how much they understand the optimisation of JavaScript code.

\n\n\n\n

[00:21:45] Nathan Wrigley: Is the Interactivity API, how to describe it, is it finished?

\n\n\n\n

[00:21:49] Milana Cap: No.

\n\n\n\n

[00:21:50] Nathan Wrigley: Yeah. I mean, basically nothing in WordPress really is ever quite finished, is it?

\n\n\n\n

[00:21:54] Milana Cap: If you software, then it’s never finished.

\n\n\n\n

[00:21:56] Nathan Wrigley: No. But would you say it already has pretty much everything that you require it to have? Or can you imagine scenarios where it would be really nice to have this feature or this feature? What I’m trying to get to is, is it still under active development? Can people listening to this podcast who think that that would be an interesting use of their time to help contribute to that, is there still work to be done? And where would we go to get involved in that?

\n\n\n\n

[00:22:21] Milana Cap: You can go to, there is a GitHub issue that is called Interactivity API showcase. It’s in Gutenberg repository. And you’ll see a lot of different ideas, how people want to use Interactivity API. And you will, when you start looking at those examples, you start to get ideas, what you could use it for. And you get to remember all the projects you had that you could really use Interactivity API there.

\n\n\n\n

I don’t think it’s done. I don’t think it’ll ever be done because, you know, clients get very creative with things they want. And I think we can’t even imagine what we would want until we get to the request to do it for a project. So there’s a lot of things to do, as in feature terms, but there’s always, you know, fixing code, optimising here and there and cleaning things up. And then there’s an update from library that it depends on, and then you have to, you know, do that. So there’s always maintenance if you use software. It’s never done.

\n\n\n\n

[00:23:31] Nathan Wrigley: I feel like if you are, let’s say 18 years old, you’ve been brought up in an era where you’ve had a phone in your hand and the apps on the phone are kind of what you’ve grown up with expecting from things online. And everything over on the phone is interactive. There’s just this expectation that you can click a button and it will do some desired action over there.

\n\n\n\n

And it feels like a website that doesn’t have interactivity is almost, well, I mean, I know you can have brochure websites and things like that where it’s just static content. It feels like that’s the expectation and it’s more and more going to be the expectation. So if a project like this hadn’t come along, WordPress websites would’ve felt really strange. You know, stuck in the past in a way, because of that lack of interactivity.

\n\n\n\n

And now hopefully developers who haven’t got the time, the budget or the experience to do this on their own, hopefully they can start offering solutions by just reading the documentation and not having to dig into the weeds of absolutely everything, just implement what’s been written for you, and hopefully that’ll bring WordPress more into the year 2025.

\n\n\n\n

[00:24:36] Milana Cap: Well, I think that if you take from that perspective, like you are 18 years old and have everything, all the apps you want in your phone, I think that WordPress is already weird to them. They are not using CMS, it’s too much effort for the things they can do with another app in their phone.

\n\n\n\n

But I don’t think that WordPress is for them. I mean, WordPress is CMS. So it’s meant to be used with purpose while kids today still look for, you know, quick content that they can, my daughter is 21 years old and she sends me, you know, memes and videos all the time. Most often than not, yeah, I tell her I don’t understand this. And she says, well, it’s funny because it’s stupid. I say, I still don’t understand this.

\n\n\n\n

I mean, she understands the life cycle of something that is meaningful, something that is important. And that is something that we would use WordPress for. But their concentration and focus span is just, give me this stupid video, that’s funny because it’s stupid, and I’ll move on. So I don’t think we should even try to put WordPress there and try to satisfy that request. But still there are requests that Interactivity API does satisfy. And that was needed to be added to WordPress.

\n\n\n\n

[00:26:07] Nathan Wrigley: Yeah, it’s certainly nice for developers not to have to, well just basically roll their own solution and waste tons of time doing something 1,000 times, literally 1,000, maybe 10,000 times done differently. Whereas now everybody can just lean into this one implementation, and it’s baked into Core. And then everybody can inject things into, on top of your code, and you can look at other people’s code and extend it in that way. So hopefully that will mean that, you know, the project as a whole can move forward.

\n\n\n\n

Let’s move on to something that I literally know nothing about, HTML API. You’re going to have to go from the very most basic description and I will try to keep up.

\n\n\n\n

[00:26:46] Milana Cap: Well, HTML API is actually what powers Interactivity API. So we wouldn’t have Interactivity API as it is right now, if we didn’t have HTML API. For now we have two classes that we can use, HTML tag processor. Which is idea to use PHP to modify attributes in Gutenberg blocks, in their markup. Because it was so difficult to approach the block to get to that code and modify anything once it’s on the page.

\n\n\n\n

So the HTML tag processor is just working with the attributes in markup. But it was meant to be used for Gutenberg blocks, but it really doesn’t matter what you use, it’ll process any HTML if it finds it. And it’s very useful for many things that we would use jQuery for before, and we would load the whole JavaScript file. You can add, remove, classes. You can set the aspect ratio for iframe. You can set image size attributes. You can add accessibility attributes where you need them.

\n\n\n\n

And it’s all happening in PHP, you know, on the page load. It’s very fast. It’s amazing. And that’s what is powering those HTML directives that we have in Interactivity API. So in markup you will find data WP and then the rest of directive. And those directives are connecting the server side and the client side in JavaScript for Interactivity API. I think it’s called WP Directive Manager, the class that is really internal class, and it’s just being used by Interactivity API.

\n\n\n\n

But then there’s a class that’s called HTML processor. And this one is doing more things than tag processor. This one knows about the closing tag, and this one will support inserting and removing nodes from the page, or wrapping and unwrapping tags on the page, then reading and modifying inner content. So everything that you were loading JavaScript for, you know, all the makeup stuff, and if something is clicked then, you know, wrap me this paragraph in this div, and then we will change the class or whatever.

\n\n\n\n

You can do that with PHP now, and it feels so much less hacky. You have it. I had actually example for removing the no-follow attribute for internal links. So searching for internal links, before HTML tag processor, you would have to use regex, and regex is invented by extraterrestrials to make fun of humans.

\n\n\n\n

So it’s also, you cannot cover all the cases with regex. There are always surprises. There is always some edge case you didn’t think of and cover. And when you look at that code, even five minutes later, you don’t understand anything. It’s something that you Google, and you trust the code that you found on Google.

\n\n\n\n

But this one, when you used a tag processor, you actually understand everything. And it covers all edge cases. There are no surprises because it’s been built with HTML standards. So it supports every type of HTML that we will probably never see in our lives. You know, all the broken stuff and all of it, it supports it. And it’s been built by Dennis Snell. That is something unlike Interactivity API.

\n\n\n\n

So we saw that Laravel has it, and Symphony has it, and Phoenix first did it. But this is something that nobody has. This is our own. And Dennis now built it from zero, completely custom. And he’s now working in putting it into PHP. So it’ll be available, yeah, to everyone. That’s a really big thing.

\n\n\n\n

I gave this talk in September at PHP Serbia and people were sitting, you know, PHP developers who are working with Symphony and Laravel and doing custom PHP, and they were like, oh my God. And I was like, yeah, WordPress has something you don’t have. That was really nice feeling. Yeah, I like that Dennis is actually putting that into PHP.

\n\n\n\n

[00:31:30] Nathan Wrigley: So again, like I did with the Interactivity API, I’m going to do the same here. Let me just see if I’ve understood what it is. So the idea really, if you want to interact with the DOM, right now, the typical way of doing that is with some JavaScript or other. So let’s say for example, I don’t know, you want to do the third child of a div, and you want to put a border around that.

\n\n\n\n

With JavaScript, you’re going to find that third div, and then you’re going to insert some class, which will then get modified by the CSS to add a border and a border radius, and what have you. So that’s all done on the client side. Page loads, JavaScript loads, and then the DOM gets rewritten by the JavaScript.

\n\n\n\n

But in this scenario, it’s going server side. It is PHP. So it’s really much more readable and maintainable, and it all just lives in this one spot with all the other PHP. And then you would write something, basically the same thing, but in PHP, to do the same job. And then WordPress, so there’s no rewriting of the DOM. WordPress writes the DOM with that in mind. So the output HTML already has that in it. You’re not using JavaScript to rewrite what’s already been written, so it speeds things up as well.

\n\n\n\n

[00:32:39] Milana Cap: Yes, yes. You have less requests because there’s no file that you are requesting. There’s no waiting on, you know, everything to load. And to rewrite it, it’s just going right there.

\n\n\n\n

[00:32:51] Nathan Wrigley: So it’s the same process though. The way that you would do it in JavaScript, you’re now just transferring that into PHP, but the method that you’re using to do it would be the same, you know, search for the third child of this parent div, and then give it an extra class and that’s what happens.

\n\n\n\n

[00:33:04] Milana Cap: Yes.

\n\n\n\n

[00:33:05] Nathan Wrigley: Okay. Yeah, that’s really straightforward. And really, really, really powerful.

\n\n\n\n

[00:33:09] Milana Cap: It is.

\n\n\n\n

[00:33:10] Nathan Wrigley: Because not only can you write your own thing in that way, but if you want to upend what’s already been written by, I don’t know, let’s say there’s something strange in a plugin that you’ve downloaded. Would this be able to rewrite the things that the plugin is injecting?

\n\n\n\n

[00:33:23] Milana Cap: Yes.

\n\n\n\n

[00:33:23] Nathan Wrigley: Okay, so you can, I don’t know, let’s say there’s a plugin which does something quirky in the HTML, you don’t like it, you want to strip something out or add something in. It sits between where the plugin injects its code and where the end user receives the HTML.

\n\n\n\n

[00:33:35] Milana Cap: Yeah.

\n\n\n\n

[00:33:35] Nathan Wrigley: That is interesting. So it’s a total rewrite of the HTML.

\n\n\n\n

[00:33:38] Milana Cap: Mm-hmm.

\n\n\n\n

[00:33:39] Nathan Wrigley: That is fascinating.

\n\n\n\n

[00:33:41] Milana Cap: Yeah, and it’s fast. It’s actually working faster than when you would load JavaScript for that.

\n\n\n\n

[00:33:48] Nathan Wrigley: So in many cases it renders much of the JavaScript, the JavaScript that’s being used to modify the DOM. It completely negates the need for that?

\n\n\n\n

[00:33:59] Milana Cap: Yes.

\n\n\n\n

[00:33:59] Nathan Wrigley: Have you found it easy to learn this?

\n\n\n\n

[00:34:01] Milana Cap: Yeah, yeah. It’s very easy. It’s even easier than Interactivity API. It’s just, you know, you instantiate the class, pass the string to it that you want to, you know, search for tags, and then you have methods. You call the method and loop through the things, or you don’t have to loop, depending what you are looking for. And there is a method, remove attribute, add attribute, remove class. You know, it’s that easy.

\n\n\n\n

[00:34:28] Nathan Wrigley: And, like everything in WordPress, you said earlier, it’s never finished. There’ll always be work done on it. But as of now, we’re recording this late February, 2025, is it pretty complete for all the things that you’ve wished to do? Does it have an answer for that, or is there still work to be done?

\n\n\n\n

[00:34:42] Milana Cap: The HTML processor needs to be optimised, so it’s not completely production ready yet. Tag processor is optimised and ready to use, and we actually used it in 2023. We waited for new release when it was coming into Core. We waited for two weeks and delayed the deployment to get it in to actually, because that example that I used for removing no-follow attribute from internal links, that’s the real world example that we had. And it was really annoying problem that was so easily fixed with five lines of code, once the HTML API got into Core.

\n\n\n\n

[00:35:25] Nathan Wrigley: I obsess about WordPress, like that’s all I think about most days basically, and yet this is somehow completely passed me by. The Interactivity API, somehow that captured my attention. There must have been some press release, or something to explain that this is happening. But the HTML API completely passed me by. I wonder if that’s just my lack of trying hard enough.

\n\n\n\n

[00:35:46] Milana Cap: No, that was actually the case for many people. So for that WordPress release, I was leading the documentation focus. So I know, I wrote the field guide, and I knew that was there. But many people didn’t know.

\n\n\n\n

And that idea behind this new series of talks that I do. So to find these, it’s very good that these things come into Core slowly, like piece by piece. What is ready? What is optimised? But because they are small, people don’t hear about them, because we don’t advertise that. And Interactivity API is, it gets the same treatment as any other Gutenberg feature. Like, oh, it’s flashy, it’s new, come see this.

\n\n\n\n

But HTML API is completely PHP. It actually powers Interactivity API, but nobody knows that. And those were like small pieces getting in, because its purpose was to serve Gutenberg. So it wasn’t really advertised as something you can use for other things. But you know developers, they find ways to use something for different things.

\n\n\n\n

And that’s why I wanted to create these talks to actually show people there are so many things you can do with WordPress now that are new. And you can use them today, and tomorrow they will be even better.

\n\n\n\n

[00:37:14] Nathan Wrigley: I guess with the Interactivity API you are solving a really hard problem. So to be able to modify one part of the page, it’s content and it’s a separate block, that’s a difficult thing to overcome. So there’s a lot of work to get over that. But if you just want to add a border to the third child of a div, everybody’s using the same JavaScript technique to do it. So there’s a well understood way of doing it.

\n\n\n\n

And so that, I suppose, leads to the question, what is the benefit over just using JavaScript? Why would we want to use the HTML API instead of just the familiar thing, which probably everybody’s doing, you know, just rewrite things with JavaScript. Is it basically coming down to ease of readability for everybody, and speed?

\n\n\n\n

[00:37:57] Milana Cap: Yeah. I think if you take a look at, for example, enterprise projects. The way developers optimise the code, it’s like every piece of millisecond counts because these projects are huge, and they have a lot of visits. So if you can remove all the JavaScript, I mean, that’s huge. That is making such impact, and it brings you like 10 places before your competition. Doing just that is enough to use this over JavaScript.

\n\n\n\n

But also, it replaces not just need for JavaScript, but need for regex as well. And again, in enterprise projects, when you have huge databases running regex and having potential to not work everywhere where it’s supposed to work, as opposed to this, that is very straightforward. Not too many lines of code, and it’s actually faster. You would take that chance.

\n\n\n\n

[00:39:03] Nathan Wrigley: Yeah, I guess if you’ve just got like a five page brochure website, that’s for a mom and pop store, you’re probably not going to be worrying too much. But if you’ve got an enterprise page, you know, an enterprise level website which is maybe getting, I don’t know, 50,000 hits every hour or something like that. Shaving 10 milliseconds out, multiply that by 50,000, I mean, not only is it quicker, so Google likes it, but also the cost of everything goes down. You know, there’s less bits flying across the internet. It’s all been optimised. And I guess at the enterprise level, all of those things matter.

\n\n\n\n

[00:39:36] Milana Cap: Yeah, everything matters.

\n\n\n\n

[00:39:37] Nathan Wrigley: Yeah, that’s fascinating, genuinely fascinating, and something that I’d never heard of. So I will go and, when I’ve edited this podcast, I’ll go and preach the gospel of the HTML and Interactivity APIs. That’s everything I wanted to ask. Milana, is there anything that you wanted to get across that I didn’t ask?

\n\n\n\n

[00:39:53] Milana Cap: No.

\n\n\n\n

[00:39:54] Nathan Wrigley: No. In that case, Milana Cap, thank you very much for chatting to me today. Really appreciate it. I hope you enjoy the rest of your time in Manila.

\n\n\n\n

[00:40:01] Milana Cap: Yeah, thank you for having me.

\n\n\n\n

[00:40:03] Nathan Wrigley: You’re very welcome.

\n
\n\n\n\n

On the podcast today we have Milana Cap.

\n\n\n\n

Milana is a seasoned WordPress Engineer from Serbia, working with XWP and freelancing through Toptal. She’s not just a developer; she’s also active in WordPress community roles such as a co-rep for the documentation team, organiser at multiple WordCamps, and a member of the plugin review team.

\n\n\n\n

We discuss some groundbreaking WordPress features that developers should be aware of, specifically focusing on her presentation at WordCamp Asia in Manila titled “WordPress gems for developers: fresh new features you’ll actually want to use.”

\n\n\n\n

We start the discussion with the Interactivity API. Milana explains how this feature allows blocks within WordPress to communicate seamlessly with one another. Until now, most blocks were just silos of information, they could not communicate with one another. This API enables developers to manage interactivity across multiple blocks without resorting to custom solutions. We talk about some possible use cases.

\n\n\n\n

Milana also gets into the HTML API, which underpins the Interactivity API. This empowers developers to manipulate HTML attributes using PHP, thereby reducing the reliance on JavaScript. This not only enhances page load speeds but also simplifies the code management process. It’s not something that I’d heard of, but Milana explains how important it can be in rewriting the DOM for whatever goals you have in mind.

\n\n\n\n

Throughout the episode, Milana shares examples of these APIs in action, demonstrating how they can simplify and optimise WordPress development projects, particularly at an enterprise level.

\n\n\n\n

If you’re a developer looking to leverage these new WordPress features, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

Milana’s presentation at WordCamp Asia 2025: WordPress gems for devs: fresh new features you’ll actually want to use

\n\n\n\n

XWP

\n\n\n\n

Toptal

\n\n\n\n

Interactivity API preview

\n\n\n\n

Interactivity API showcase #55642

\n\n\n\n

The HTML API: process your tags, not your pain

\n\n\n\n

PHP Serbia 2024

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"Do The Woo Community: The Do the Woo Release Notes Newsletter on LinkedIn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=94001\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:77:\"https://dothewoo.io/blog/the-do-the-woo-release-notes-newsletter-on-linkedin/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:128:\"If you are on LinkedIn and looking for a deeper look into our episodes as they are released, we have a newsletter there for you.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 10:39:06 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"WordPress.org blog: WordPress 6.8 Release Candidate 3\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18673\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/04/wordpress-6-8-release-candidate-3/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:8482:\"

The third release candidate (“RC3”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development.  Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, it’s recommended that you evaluate RC3 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone.  While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC3 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC3 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-RC3
WordPress PlaygroundUse the 6.8 RC3 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025. Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts leading up to next week’s release for further details.

\n\n\n\n

What’s in WordPress 6.8 RC3?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement. For more technical information related to issues addressed since RC2, you can browse the following links:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community that collaborates and contributes to its development. The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable. It’s also a meaningful way for anyone to contribute. This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report. You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.  For more details on developer-related changes in 6.8, please review the WordPress 6.8 Field Guide.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases.  With RC3, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English?  ¿Español?  Français?  Русский?  日本? हिन्दी? मराठी? বাংলা?  You can help translate WordPress into more than 100 languages.

\n\n\n\n

An RC3 haiku

\n\n\n\n

The launch draws closer,
Six-eight sings through RC3,
Almost time to shine.

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @audrasjb, @mamaduka, @krupajnanda, @benjamin_zekavica, @narenin, @joedolson, @courane01, @joemcgill, @marybaum, @kmgalanakis, @umeshsinghin, @wildworks, @mkrndmane.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2025 15:54:49 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:81:\"Do The Woo Community: Our Final Wrap of CloudFest 2025 with Robert, Zach and Carl\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=94070\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:79:\"https://dothewoo.io/our-final-wrap-of-cloudfest-2025-with-robert-zach-and-carl/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:205:\"In this episode of Dev Pulse, hosts discuss CloudFest 2025, highlighting unique event experiences, innovative hackathon projects, networking opportunities, and a preview of upcoming CloudFest USA in Miami.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2025 12:32:39 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:96:\"Do The Woo Community: Four Practical Steps Towards Inclusion for Content Creators and Developers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=85966\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:100:\"https://dothewoo.io/blog/four-practical-steps-towards-inclusion-for-content-creators-and-developers/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:305:\"In a past podcast our host Anne provided practical advice for content creators and developers to foster an inclusive environment. They are simple and to the point. Key suggestions included: You can hear the full episode here Exploring Accessibility and Neurodiversity in WordPress with Anne Mieke Bovelett\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2025 09:55:22 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"Do The Woo Community: Do the Woo v5.1 Changelog\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93974\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"https://dothewoo.io/blog/do-the-woo-v5-1-changelog/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:27:\"Four new co-hosts and more.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 07 Apr 2025 13:07:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:10;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:99:\"Do The Woo Community: Michelle Frechette Joins the Do the Woo Hosting Team for WordPress Event Talk\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93984\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:98:\"https://dothewoo.io/michelle-frechette-joins-the-do-the-woo-hosting-team-for-wordpress-event-talk/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:76:\"BobWP announces Michelle Frechette as the new host for WordPress Event Talk.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 07 Apr 2025 09:42:17 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:11;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"Gravatar: What is Gravatar? Basics for WordPress and Beyond\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3019\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:54:\"https://blog.gravatar.com/2025/04/06/what-is-gravatar/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:17132:\"

Have you ever noticed how your profile picture magically appears on some blogs, forums, or websites without needing to upload it each time? That’s the power of Gravatar. Since 2004, we have been quietly revolutionizing online identity, offering a consistent way to represent yourself across the open web.

\n\n\n\n

Gravatar stands for Globally Recognized Avatar. It’s a free profile for the web that uses your email address as its core identification system. This clever approach lets you maintain a single avatar and profile that follows you across major platforms like WordPress, Slack, and GitHub.

\n\n\n\n

The concept is simple but powerful. Instead of creating separate profiles on dozens of websites, Gravatar centralizes your online identity. With over 8.6 billion avatar requests served daily, it’s become an essential part of the online experience for millions of users.

\n\n\n\n

In recent years, Gravatar has expanded beyond just avatars Now, integrated websites can pull complete profile information from your Gravatar account. This improves the profile creation and onboarding processes, saving time and reducing friction when joining new platforms.

\n\n\n\n\"\"\n\n\n\n

From scattered profiles to unified presence: How Gravatar works

\n\n\n\n

At its core, Gravatar uses your email address as a unique identifier. When you comment on a blog or join a platform that supports Gravatar, the system looks up your email to find your profile information.

\n\n\n\n

Don’t worry about privacy concerns. Gravatar doesn’t simply expose your email address to every website. Instead, it converts your email into a secure hash – essentially a one-way code that protects your actual address while still creating a consistent identifier. This technical conversion ensures your email stays private while allowing the system to recognize you across different sites.

\n\n\n\n

Another one of Gravatar’s most powerful features is its synchronization capability. Update your profile once, and the change instantly reflects across millions of integrated websites through the Gravatar API. This eliminates the hassle of updating dozens of separate profiles when you change your photo or information.

\n\n\n\n\"Gravatar\n\n\n\n

For professionals, this creates an efficient way to build and maintain a consistent online persona. Want separate identities for work and personal activities? Simply create different Gravatars using different email addresses. This separation gives you complete control over how you present yourself in various contexts.

\n\n\n\n

Imagine never having to repeatedly upload profile pictures or maintain consistent information across multiple platforms. That’s the advantage Gravatar provides – centralized profile management that simplifies your online presence while maintaining your privacy.

\n\n\n\n

Each time you visit a new website that supports Gravatar, your profile information automatically appears – no duplicate accounts, no forgotten passwords, and no inconsistent branding. Your carefully crafted online identity follows you seamlessly across the web.

\n\n\n\n

And the best part? Claiming your Gravatar is completely free. Let’s walk through how to set one up.

\n\n\n\n

Setting up your Gravatar account: A step-by-step guide

\n\n\n\n
    \n
  1. Visit the Gravatar website and click “Get Started Now.
  2. \n
\n\n\n\n\"Gravatar\n\n\n\n
    \n
  1. Enter your email address.
  2. \n
\n\n\n\n\"Gravatar:\n\n\n\n
    \n
  1. Check your inbox for a verification code, and enter it on the page. 
  2. \n
\n\n\n\n\"Gravatar\n\n\n\n
    \n
  1. If you already have a WordPress.com account, Gravatar will ask, “Would you like to log in to Gravatar using your WordPress.com account?” Saying yes speeds up the process by using your existing information. If you don’t have a WordPress.com account, you can create one through Gravatar.
  2. \n
\n\n\n\n\"WordPress.com\n\n\n\n
    \n
  1. Next, upload a profile photo. The maximum image size is 2048px, and the image will display as a square. Gravatar provides a cropping tool to help you position your photo for the best presentation.
  2. \n
\n\n\n\n\"Gravatar:\n\n\n\n
    \n
  1. Complete your basic profile information, including your display name and bio.
  2. \n
\n\n\n\n\"Gravatar\n\n\n\n
    \n
  1. To manage different identities, simply create a new Gravatar with a different email address. This allows you to maintain separate profiles for professional and personal use.
  2. \n\n\n\n
  3. Get your unique Gravatar URL and begin sharing it on your social media bio links or email signatures. You can also use it to log in and manage your profiles on supported platforms like Figma or OpenAI.
  4. \n
\n\n\n\n

The process takes just a few minutes, but the benefits last for years. Once configured, your Gravatar becomes your digital passport, making it faster to join new communities and ensuring consistent recognition across the web.

\n\n\n\n

Remember that your profile is publicly visible by default, so only include information you’re comfortable sharing. 

\n\n\n\n

Optimizing your Gravatar profile for maximum impact

\n\n\n\n

Now that you’ve set up your basic Gravatar account, let’s look at ways to enhance its effectiveness. 

\n\n\n\n
    \n
  • Profile photo: Choose a high-quality, professional image that represents you appropriately. For business purposes, a clear headshot with good lighting and a neutral background works best. If you prefer not to use your photo, a recognizable brand logo is a good alternative. Just ensure the image is clear and easily identifiable, even at smaller sizes, as a lot of people browse from their mobile.
  • \n\n\n\n
  • Bio and details: Craft a concise, compelling bio that highlights your expertise, experience, and unique value. Focus on what makes you stand out and what your audience would find most relevant. Keep it brief but impactful – think of it as your elevator pitch in written form.
  • \n\n\n\n
  • Social media and links: Add your verified social media accounts and links to your website or portfolio. This turns your Gravatar into a customizable digital business card. You can also take advantage of the integration between Bluesky and Gravatar, which allows you to use your Gravatar domain as your Bluesky handle for a consistent online identity.
  • \n
\n\n\n\n\"Bluesky\n\n\n\n
    \n
  • Privacy settings: Control what information is visible by accessing your Account Privacy Settings or the individual sections. 
  • \n
\n\n\n\n\"Gravatar\n\n\n\n

In the general settings, you can choose to hide your public avatar, make your profile private, or discourage search engines from indexing your profile. This flexibility lets you balance visibility with privacy.

\n\n\n\n\"Gravatar\n\n\n\n

As you can see, you only need a little bit of effort, and you can end up with a well-optimized Gravatar profile that helps you:

\n\n\n\n
    \n
  • Build professional credibility across multiple platforms.
  • \n\n\n\n
  • Establish a higher degree of online trust with your audience.
  • \n\n\n\n
  • Create networking opportunities whenever you interact online (and offline too!)
  • \n
\n\n\n\n

Using Gravatar with WordPress and beyond

\n\n\n\n

Gravatar has been deeply integrated with WordPress since 2007, when it was acquired by Automattic (WordPress.com’s parent company). This acquisition created a strong connection between these platforms that continues to benefit users today.

\n\n\n\n

When someone with a Gravatar profile comments or posts on a WordPress site, the system automatically pulls their Gravatar profile to display as the author. 

\n\n\n\n\"Example\n\n\n\n

This creates a consistent visual identity across WordPress blogs without requiring users to set up separate profiles on each site they visit. Your professional image follows you throughout the WordPress ecosystem, helping readers recognize you across different blogs and publications.

\n\n\n\n

Site owners can easily customize how avatars appear on their WordPress sites through the dashboard under Settings > Discussion. This section allows administrators to enable or disable avatars, select maximum ratings (G, PG, R, X), and choose default avatars for users without Gravatars. Options range from generic silhouettes to generated patterns based on email addresses.

\n\n\n\n\"Default\n\n\n\n

But Gravatar extends well beyond WordPress. Major platforms like GitHub, Slack, and OpenAI also use Gravatar to provide consistent user images across their services. This widespread adoption means your professional identity remains cohesive across much of the web.

\n\n\n\n

The greatest benefit comes from Gravatar’s central management approach: Update your profile once, and those changes sync across all connected platforms. Whether you’ve changed jobs, updated your headshot, or refined your bio, you only need to make these changes in one place. This saves valuable time and ensures your brand presentation remains consistent no matter where your online activities take you.

\n\n\n\n

Privacy and security: Managing your digital identity

\n\n\n\n

Gravatar gives you strong privacy controls to manage your digital identity. You can choose exactly which profile details to share publicly and which to keep private, so you always know who can see your data. Besides the settings you can adjust for yourself, Gravatar uses industry-standard measures like HTTPS to keep your data safe as it travels across the web.

\n\n\n\n

However, even with these protections, it’s still a good idea to maintain separate profiles for work and your personal life. Using different email addresses for your work and personal Gravatars creates a helpful separation that prevents people from connecting different parts of your life. This approach also lets you customize privacy settings for each email address – keeping your professional presence polished while maintaining personal privacy.

\n\n\n\n

One of Gravatar’s key benefits is that it helps minimize your overall digital footprint. Instead of creating and managing accounts across dozens of websites and platforms (each with potential security vulnerabilities), you only need to update your personal information in one central location. This reduces your exposure to data breaches while ensuring your public-facing information remains accurate and up-to-date across the web.

\n\n\n\n

Create your free Gravatar profile in minutes

\n\n\n\n

Ready to claim your digital identity? Getting started with Gravatar takes just a few minutes but establishes your online presence across thousands of websites instantly.

\n\n\n\n

Here’s how to get your Gravatar profile up and running:

\n\n\n\n
    \n
  1. Visit Gravatar.com and click “Get Started Now.”
  2. \n\n\n\n
  3. Create a new account or sign in with your existing WordPress.com credentials.
  4. \n\n\n\n
  5. Upload your chosen profile image – select something professional that represents you well.
  6. \n\n\n\n
  7. Complete your profile by adding a compelling bio.
  8. \n\n\n\n
  9. Connect your social media accounts and verify important links or services.
  10. \n
\n\n\n\n

With this single action, you’ll join millions of users on WordPress.com, GitHub, Slack, and other major platforms with your new globally recognized avatar. Your professional image will automatically appear whenever you comment, contribute, or interact across the web.

\n\n\n\n

No more maintaining separate profiles on dozens of websites. With Gravatar, you create one central identity that follows you across the internet, saving time while ensuring a consistent, professional presence everywhere you go.

\n\n\n\n

Create your free Gravatar profile today!

\n\n\n\n\"\"\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 06 Apr 2025 21:39:16 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:12;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:113:\"Gutenberg Times: Gutenberg Changelog 116 – WordPress 6.8, Source of Truth, Field Guide, Gutenberg 20.5 and 20.6\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"https://gutenbergtimes.com/?post_type=podcast&p=39909\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"https://gutenbergtimes.com/podcast/gutenberg-changelog-116-wordpress-6-8-field-guide/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:70135:\"

Birgit Pauli-Haack and JC Palmes talked about WordPress 6.8, Source of Truth, Field Guide, Gutenberg 20.5 and 20.6.

\n\n\n\n

Add a summary/excerpt here

\n\n\n\n

Show Notes / Transcript

\n\n\n\n\n\n\n\n

Show Notes

\n\n\n\n

JC Palmes

\n\n\n\n\n\n\n\n\n\n\n\n

Community Contributions

\n\n\n\n\n\n\n\n

WordPress 6.8

\n\n\n\n\n\n\n\n

Zoom Out: Disabled when show template disabled #69777

\n\n\n\n

\n\n\n\n

Gutenberg plugin releases

\n\n\n\n\n\n\n\n

Stay in Touch

\n\n\n\n
\n\n
\n\n\n\n

Transcript

\n\n\n\n

Birgit Pauli-Haack: Welcome to our 116th episode of the Gutenberg Changelog Podcast. In today’s episode we will talk about WordPress 6.8, The Source of Truth, the Field Guide, Gutenberg 20.5 and Gutenberg 20.6, and a few other things, little things in between.

\n\n\n\n

I’m your host, Birgit Pauli-Haack, curator at the Gutenberg Times, and a developer advocate working for Automattic. And it’s a great privilege for me to have with me, JC Palmes, who is the engineering manager at Web Dev Studios, again on the show. JC was also the local co-lead of this year’s WordCamp Asia in the Philippines, and it was a great WordCamp. So, congratulations. So glad you made it today, JC, how are you?

\n\n\n\n

JC Palmes: I’m doing great. And, actually, my role changed since we’ve last had this. Yeah, so I’m now the principal technical manager at Web Dev Studios.

\n\n\n\n

Birgit Pauli-Haack: Congratulations.

\n\n\n\n

JC Palmes: Thank you. But yeah, I’m happy to be back. And things have been good, very busy, but the good kind. I’ve been deep in block themes again, so I’m excited about this episode. So, I’ve seen there’s a lot of cool stuff in 6.8 in the recent Gutenberg release I think developers like me will appreciate, especially those who are building for clients and working with starter themes.

\n\n\n\n

Birgit Pauli-Haack: Yeah, absolutely. So, the first time you were on the show was last September in Episode 108, and you had just released the first version of the WSD, W-

\n\n\n\n

JC Palmes: WDS-BT.

\n\n\n\n

Birgit Pauli-Haack: … WDS-BT, yes, I’ll get it right, block starter theme, and we discussed it on the show. And after using it for half a year now, how are you doing with it, and what have you learned?

\n\n\n\n

JC Palmes: Yeah, so it’s been a great journey since then. After six months, was it really just six months, of using and refining WDS-BT in real client projects, I’ve learned a lot about what engineers need from a starter theme, especially when working with the site editor.

\n\n\n\n

And we’ve recently released Version 1.1, and most of the updates were based on feedback from our team, lessons from actual use in client sites, and one of the biggest things we focused on was making it easier to generate blocks and patterns consistently using our internal script, which is now part of BT as well.

\n\n\n\n

So, it’s all documented in the README if any developers out there want to try it out. So, this really helps streamline development for everyone. And we also have a demo site so that clients and internal teams and Sales can preview how the theme behaves out of the block. It’s been really helpful for onboarding and for setting clear expectations early on.

\n\n\n\n

Birgit Pauli-Haack: Yeah, I can imagine that, yes, and with the scripts now. So, you just said you had two scripts. One is to create custom blocks, and the other one to patterns. That’s the first time that I’ve heard about it. 

\n\n\n\n

JC Palmes: Oh, sorry. Well, not… So, we have an internal script. So, BT is part of our other repo that helps us create a client site from scratch. And what that does is, there’s a script that I’ve added in where we can create a theme based on WDS-BT in five minutes, and it goes through all the process in the terminal, and then, after that, you have a full website theme working, a block theme working as is.

\n\n\n\n

And the other one, which is part of BT, is in creating scaffolding blocks. So, BT comes with a block theme template that is baked into our custom webpack config. That webpack config is defaulting on WordPress config still, but we did add in a bit more flavor to it based on our use case.

\n\n\n\n

Birgit Pauli-Haack: Oh, of course, yeah, that’s what it’s for, yeah, to adopt it, yeah. So, wonderful. So, dear listeners, we will share the links, one is to the theme, and also, to the demo site, in the show notes so you can test it out and see if it could also be your starter theme for your clients, and at least gives you…

\n\n\n\n

JC Palmes: Yeah, that would be awesome.

\n\n\n\n

Birgit Pauli-Haack: … and gives you some inspiration for that. And I’m always looking for inspiration about how people approach a topic, so I’m glad that you and your company share so much online and build it in public, and also, shared quite a few blog posts about it, not only about your theme, but also your approach on getting clients work from a classic theme, and then, gradually go block-based.

\n\n\n\n

And I just listened to Brad Williams on the Press blog with Steve Birch. He interviewed him. So, I share that video as well in the show notes, and it starts out with what the approach is or how they approach it in terms of guiding clients through a block-based journey there when they were so happy with the other thing, yeah. And it starts at 20 minutes to get really into that. So, that was a really good conversation as well, with Steve Birch.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Community Contributions

\n\n\n\n

Birgit Pauli-Haack: So, we don’t have any announcement or listener questions today, but we have a few things that are community contributions or that I’ve selected, and one is pretty much the same topic. Kevin Devon and Mark Wilkinson from Highrise Digital, an agency in UK, shared their theme-building strategy for a school project at the London WordPress meetup.

\n\n\n\n

And it was really insightful to see how these experienced theme creators use the site editor to build a theme, and then, let the client fully customize, also, their sites. They actually go pretty deep and show what block that they hide from the school, what block variations on the embeds that they hide, and how to do that. They even shared some code.

\n\n\n\n

So, it was quite fast-paced, but video, you can just stop it and listen to it again, and all that. Yeah, so it’s called Building a Block-based WordPress Site with FSE. Yeah, they also went pretty detailed in what kind of custom blocks they did.

\n\n\n\n

And they actually didn’t program them themselves, they used ACF because of the data entry screens as well. So, they only did two. The rest was all core stuff, yeah. So, it’s really cool to see how that works out.

\n\n\n\n

JC Palmes: I’ll have to check it out.

\n\n\n\n

Birgit Pauli-Haack: Yeah, they do some great work at Highrise Digital as well. And I have three more videos, so to speak, or tasks for you, dear listeners. So, three well-known developers in the community continue with their live streams. They started either this year or long before, but Jonathan Bossenger, many know from the developer courses at Learn WordPress, has been learning working with AI, and he shares it, be it wins or losses, on the live stream.

\n\n\n\n

And this week he tried to find out, can AI fix my Plugin Check issues? So, Plugin Check is a plugin that you install on your site when you develop a plugin, and then run through all the checks that the plugin review team has built so you are ahead of the curve when you submit it to the WordPress repository.

\n\n\n\n

But it’s not only good for when you submit it to the repository, it definitely helps you, also, with your own, even if you just give it to your clients also to beef up, check out some of the issues that are always problems.

\n\n\n\n

Yeah, so I cannot say because that’s a secret. No, you need to check it out themselves, how good he was, how good it worked for him. And the second one is JuanMa Garrido, he is from Spain, and is also a developer advocate at Automattic, and he shared live stream sessions in Spanish and English, not at the same time, of course. 

\n\n\n\n

JC Palmes: Okay.

\n\n\n\n

Birgit Pauli-Haack: … me speaking Spanish, but no, he has one week he does this in Spanish, and the next week he does something else in English. So, that’s quite a good thing for the Spanish community as well.

\n\n\n\n

And he recently livestreamed going through the Data Layers Course on Learn.WordPress and built the app in public, and goes through, not all lines of code, but he explains the concepts behind that, even…

\n\n\n\n

Well, sometimes you need somebody to walk you through things so it actually clicks in your mind a bit, and that’s what JuanMa Garrido did. And then, Ryan Welcher is the pioneer of livestreaming…

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: … in WordPress, and he’s done it for, I think, almost three years, if not longer. And he livestreams every Thursday at 2:30 PM, UTC, on Thursdays, unless he’s on a meetup or at a WordCamp or on holiday. And he has been, recently, working on adding user profiles and user interactions to his Block Developer Cookbook, which is the base of all his workshops where he has a few recipes that he walks through.

\n\n\n\n

In live events or in-person events like WordCamps, people can vote on which recipe should be talked about. And so, it was quite interesting to see at the workshop at WordCamp Asia last year and this year, because every event is different, yeah.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: So…

\n\n\n\n

JC Palmes: I missed that one. I wanted to be there, but with being a local lead organizer for WordCamp Asia, you can’t really be on the sessions that you want to be just because there’s a lot going on on the, you know?

\n\n\n\n

Birgit Pauli-Haack: Yeah. And unfortunately, workshops are not recorded, as far as I can tell.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: … because they’re also too long, yeah, and they are not a… So, a talk, when it’s recorded, it’s, most of the time, fast-moving because you only have 30 minutes or something like that, but when you have a workshop that is 75 minutes, it is a lot of downtime in the end. It’s moving at a glacial pace when you sit at home at YouTube. So, I totally get it.

\n\n\n\n

But you can check it out. We’ll share the Block Developer Cookbook repo in the site, in the show notes. So, you can definitely check it out. And maybe you want to get on the live stream with Ryan or JuanMa or Jonathan.

\n\n\n\n

JC Palmes: Yeah, we’ll see what we can do about that.

\n\n\n\n

Birgit Pauli-Haack: So, JC, what are the places that you watch for learning new stuff?

\n\n\n\n

JC Palmes: Yeah, so I usually keep an eye on a few key places. The Make WordPress Core blog is, of course, a go-to because it’s where most of the important updates and demos get posted first, officially.

\n\n\n\n

And I also follow what’s happening on the Gutenberg and WordPress GitHub repos, because the discussions there give a good sense of what’s being built and why certain decisions are made. There’s a lot there.

\n\n\n\n

And of course, I check Learn WordPress pretty regularly, too, especially the developer workshops. I also stay actively lurking in Slack, mostly in Core Editor and Design. I try to catch Ryan’s live stream, always, when I have time, when I can, but I usually end up just going through the recorded ones on YouTube.

\n\n\n\n

Birgit Pauli-Haack: Yeah?

\n\n\n\n

JC Palmes: But yeah, they’re really great for seeing how things work in practice. And I read a lot of blogs, too. I can’t give you the list of the blogs that I read just because I don’t have a particular list. I just try to search for something that’s interesting based on the conversations in GitHub, and then, read through all the things.

\n\n\n\n

Birgit Pauli-Haack: Yeah, excellent. Well, thank you so much for walking us through that. Yeah, I found the good with Gutenberg GitHub repo, really, there is so much there that it’s really hard to zone in on or zero in on the things that you, right now, need or wanted to explore.

\n\n\n\n

So, tracking issues are really good, and there is now a label that says Tracking Issues so you can see the history of a feature, how it worked out, or what’s in the pipeline. Of course, with the contributions being reduced, it’s going to be a little shorter…

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: … or less features coming in, but sometimes it’s a good thing that there is a slower pace so everybody can catch up where they are. And I feel the same, yeah. I get the opportunity to dive a little deeper in all the things, although I was already, I have been quite deep into it, yeah. But if you don’t practice the skills to… it’s just superficial, yeah.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

What’s Released – WordPress 6.8 RC 2

\n\n\n\n

Birgit Pauli-Haack: But talking about the Make Core blog, WordPress 6.8 is in Release Candidate 2, and it’s only about 11 days away from final release. So, if you haven’t tested 6.8, now it’s really time, and you need to carve out a few hours to make sure that your themes and plugins actually work at the sites, work with it.

\n\n\n\n

And that, of course, helps when you have a standardized system so you only have to check, mostly, one site, and then, some exceptions. But yeah, go and test it a bit. The Field Guide has the whole list of it, but it’s also a little bit overwhelming.

\n\n\n\n

But we can go through some of the dev notes that are in there, and we also have a link to The Source of Truth for the details on the block editor. So, the list of dev notes, I only had three or four stars in there. Now, you have all the stars in there. That’s cool.

\n\n\n\n

So, to explain that to our listeners, I had the list of dev notes, and I put an emoji star to it and said, “Okay, JC, let me know which one you want to talk about, and then we’ll kind of have…” And she checked all of them. It’s really cool.

\n\n\n\n

JC Palmes: I did add in the smiley face to the ones that I think are really nice.

\n\n\n\n

Birgit Pauli-Haack: Yeah. So, I think that one of the major features coming on 6.8, I don’t know you how you feel about it, but for me it’s the speculative loading in 6.8, and it has such a great history because it comes out of a feature plugin that already had 50,000 installs in the last couple of years. So, what is it?

\n\n\n\n

So, speculative loading leads to near-instant page load times by loading the URLs that users might navigate to them already in the background. And the feature relies on an API that is now supported by many browsers.

\n\n\n\n

It’s called the Speculation Rules API, and it’s a platform feature so you can define the rules for which kinds of URL to pre-fetch or pre-render, and how early such speculative loading should occur. So, that’s in a nutshell, and has a lot of technical implications.

\n\n\n\n

JC Palmes: I’m looking forward to this. This is one of the features that I really like, because I’ve been testing. So, for those who are using block themes, if you’re not, you should, speculative loading is already, it’s helping your site feel faster. You don’t have to enable anything, it’s just built in.

\n\n\n\n

So, just to add into what you mentioned about speculative loading, what it does is preload pages users are likely to visit next based on how they interact with the site. So, when they actually click the page, the next page is ready and it loads almost instantly. 

\n\n\n\n

Birgit Pauli-Haack: Yeah, it speeds up, yeah.

\n\n\n\n

JC Palmes: Yeah. What I really like about it is that it improves performance without adding too much complexity. There’s no JavaScript to manage, no extra setup. It just quietly does its job in the background. And it’s one of those features that makes the experience better for users while keeping it very simple for developers, which I really like. Always a win in my book.

\n\n\n\n

Birgit Pauli-Haack: Yes, yes, absolutely.

\n\n\n\n

JC Palmes: Make it easy for me, yes, please.

\n\n\n\n

Birgit Pauli-Haack: Yeah, yeah, it’s a win for you, but it’s also a win for the clients because their visitors are benefiting from that without any additional investment.

\n\n\n\n

JC Palmes: Exactly.

\n\n\n\n

Birgit Pauli-Haack: So, that’s the beauty of a WordPress open source system, that a lot of people work on it, and a few things just come with an update without costing a whole lot of money.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: But let’s go a little bit back to the block editor. The first thing is that the global styles are now actually available from the left side of the screen, yeah. So, you have everything that you need reachable from the black navigation bar, and you don’t have to switch from one side to the next. Yeah, you can all do it in there, which is really cool.

\n\n\n\n

JC Palmes: That always trips me up. Having to go from left to right when having it on one side just makes total sense.

\n\n\n\n

Birgit Pauli-Haack: Yes. Yeah. And what also started to, from in there, is that you can now also get the style book from there. And it’s a little bit more intuitive because when you click on the typography, you see, in the style book, all the blocks that have text in them.

\n\n\n\n

And if you go to images or, what is it, no, color, then you know all the blocks that have color settings in them, which are quite a few now, but it’s easier to zero down on a problem or on a concern, kind of, “Let’s look at our images,” or, “Let’s look at our paragraphs,” or, “What are the styles for it,” and all that. So, it’s all there.

\n\n\n\n

And the user can actually change some of the global styles to switch out for their sites. If they don’t like the green of the button, they can make it darker or make it blue or make it pink, and make it for the whole site. So, it’s an instant replacement there. So, I really like the global styles to be a little bit more accessible for my brain. Speaking of a style book, it’s now also available for classic themes…

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: … which was a long time coming, or when the style book came to block themes, it was an early request from theme developers to get it also for the classic theme, and that finally comes with WordPress 6.8.

\n\n\n\n

JC Palmes: Yeah, that’s one of the features that I added a smiley on, because that’s big. So, having classic themes or hybrid themes able to access the style book is going to help a lot for those who are still on the fence about going full block, although they should, but it gives them that experience.

\n\n\n\n

Birgit Pauli-Haack: Right, yeah. And also, the controls, yeah.

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: So, it’s an easing into the modern WordPress world, although there’s nothing wrong with staying on classic themes, but it’s so much nicer to work with a block editor, yeah. So, one of the confusions that has surfaced with the block theme is the confusion that, am I editing, now, a template, or am I adding a content page or grading a content page?

\n\n\n\n

And it took about, I think, a couple of years to figure out, and I am not there yet, we are not there yet, but to make that easier too, because the whole concept of templates was something that WordPress users, before, had no touch points. It was all in code and it was all for the developer.

\n\n\n\n

And unless the theme developer had a customizer, there was no need to think about templates, all that. But now, that concept has arrived at the user, and to get this right in the brain, it’s sometimes really hard. And now, they have added a switch to show the template in the editor or not.

\n\n\n\n

So, what that gives you is, when you grade a post and you click on the Show Template, you see where the featured image is and all the post content areas, and know, okay, when you click on the preview, it will show you, also, the whole page. Not only when you go to preview, but already in the editor, you see the whole page with header and footer and featured image and all that shows up. It takes the surprise out of it.

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: And the same with pages.

\n\n\n\n

JC Palmes: If you say there’s a switch that just gets toggled on when you see everything outlined for you, because that just makes things less confusing. So, this is a good move.

\n\n\n\n

Birgit Pauli-Haack: Yeah. And the switch is in the preview tab, in the top toolbar, when you click on the preview, then you see that tab has changed, it has additional features now. So, plugin developers, your email newsletter person plugin can see the email from your post if you needed to, and there is also the show template off and on. It’s just a check mark. And it’s really nice, yeah. And it goes together with a Zoom Out view. The Zoom Out view is nothing new with 6.8.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: It has been introduced to WordPress through 6.7, very rudimentary, but when you add a pattern to your page, it goes automatically to Zoom Out. So, you see more of it and you see the whole composition of it. Now, in the toolbar of that particular section or pattern that you just added, you can change the styles, if there are any, from the theme, and you can change the design.

\n\n\n\n

So, if you have a call-to-action pattern, clicking on Change Design gives you the other patterns that are call-to-actions, or in the same category, and if you click that little drop that’s in the toolbar…

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: … yeah, you can browse through the styles for that particular call-to-action. And then, the Twenty-Twenty-Five theme, that’s actually quite nicely done. So, the developers of Twenty-Twenty-Five made a real good design system so you can just go through the color patterns for a particular section. It’s really nice.

\n\n\n\n

And the option gives you only a few block options. So, in the tool block toolbar you see those two features, and in the dropdown of the three dots, you only get four options, that’s copy, cut, duplicate, and delete. There’s nothing else to do there.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah. I found, yeah, it’s still a discussion if it’s a bug or not. For me, it’s a bug, but other people find it, well, maybe it should be like that is, when you switch off the show template-

\n\n\n\n

JC Palmes: Mm-hmm?

\n\n\n\n

Birgit Pauli-Haack: … it also switches off the possibility of zoom view, because the zoom view is on a certain element in the template, the main element, and if that’s not there, the zoom view does not show. So, if you are waiting for the zo…m view to come in because you added a pattern, you need to just check Show Template…

\n\n\n\n

JC Palmes: Check Show Template.

\n\n\n\n

Birgit Pauli-Haack: … yeah, switch on Show Template, and then you get it back. Or you could use… Oh no, that’s the wrong one. I thought that was a shortcut, but the shortcut is not for the template, it’s for the Zoom Out view, and it’s shift + control + 0 to get the Zoom Out view, but only when Show Template is checked.

\n\n\n\n

JC Palmes: Yes. That sounds like a bug.

\n\n\n\n

Birgit Pauli-Haack: Yes. And I’m sharing that bug with you all so you can chime in. It’s an interesting discussion. Because it’s two different things. In my brain it’s two different things, and they shouldn’t be covered.

\n\n\n\n

JC Palmes: Yeah, completely two different things.

\n\n\n\n

Birgit Pauli-Haack: Yes.

\n\n\n\n

JC Palmes: They’re not the same.

\n\n\n\n

Birgit Pauli-Haack: Thank you. Well, the design tools, well, then 6.6 they started, and then, 6.7, they continued with it, and 6.8, I think, is pretty far that every block has all the design tools it needs. So, color options, border options, dimensions are now available for almost every block.

\n\n\n\n

And there’s a dev note called the Roster of Design Tools per block, and you get a table with all the blocks in the list and which kind of feature they have and not have so you can…

\n\n\n\n

JC Palmes: Oh, that’s nice.

\n\n\n\n

Birgit Pauli-Haack: … a fast check, yeah. But it could use a few more features, like, the header comes down, but with the theme right now, it’s not possible.

\n\n\n\n

JC Palmes: We have a pretty sweet table style in DEL, BT.

\n\n\n\n

Birgit Pauli-Haack: Oh, okay. Well, I’ll see if I can replicate the full table and put it somewhere where I have access to plugins, because on the Make blog, yeah, there’s not a whole lot of…

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: … the plugins all need to be tested and approved, and all that. So, did you get a chance to look at the Details block, changes there? Detail blocks was introduced, I think, in 6.7, I think, yeah.

\n\n\n\n

JC Palmes: Yeah, I’ve been using the Details block mostly as an accordion FAQs…

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: … but this time around, I have not played around with the Details block when I was testing in 6.8.

\n\n\n\n

Birgit Pauli-Haack: So, there are three different features that… So, one is that, if you have a list of the same things that you want to be controlled together, then you can give each one of the items, each Details block, so you have a set of three Details blocks and they’re all FAQs, for instance, so you can give them, in the the Advanced section, there is a Name Attributes field, and if you give them the name attribute, each one of them the same, then via CSS, you can control those at the same time.

\n\n\n\n

And what also happens is that, when one opens, the other one closes, and vice versa. So, it feels more like a unit for that. And you see it that the FAQ thing, oh, I used FAQ here in the example, in the Source of Truth, and you see that it’s then attached in the CSS in the name field. So, they’re identically named, and then they’ve…

\n\n\n\n

JC Palmes: That is a good one. So, we’ve usually added in a script to handle opening and closing the Details block as an accordion. So, having this baked in is big.

\n\n\n\n

Birgit Pauli-Haack: Yes. And you can actually do it with a… a content creator can do this. So, the same developer can… yeah. So, this is really nice. 

\n\n\n\n

JC Palmes: This is nice.

\n\n\n\n

Birgit Pauli-Haack: Yeah. Then, what’s also nice is that the summary content, like the question for an FAQ, for instance, is then also shown in the list view of the block editor so you can identify which one you’re working with. That’s so nice because that helps quite a bit.

\n\n\n\n

JC Palmes: Yep.

\n\n\n\n

Birgit Pauli-Haack: And then, you can also create anchor links for each block so you can separately link to them from other places, and developers have a chance to modify the Allow blocks attribute to make sure that only the right blocks are used in a Details block.

\n\n\n\n

So, there are quite a few things in there that makes it… I think that’s one of the biggest changes for WordCamp 6.8. When I was testing, I said, “Oh, this is neat. Oh, this is neat,” kind of thing.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: So, I like that, yeah.

\n\n\n\n

JC Palmes: I like that one.

\n\n\n\n

Birgit Pauli-Haack: And then, the other things, some of the changes on the blocks are minimal, but still, quality of life changes. So, the Gallery block now has one link, or one way to put the link to open bigger…

\n\n\n\n

JC Palmes: Yes, because having to…

\n\n\n\n

Birgit Pauli-Haack: … and not for every…

\n\n\n\n

JC Palmes: … do it on every single image when you’ve had more than 10 images there is not nice.

\n\n\n\n

Birgit Pauli-Haack: I would have said two, I would have said two images. If you have more than two, you don’t want to do this for every image, but yeah.

\n\n\n\n

JC Palmes: I’m a bit patient with galleries just because, but know 10 is my max, so…

\n\n\n\n

Birgit Pauli-Haack: Yeah. No, but that is really good that you, just going through the tool while make sure they have the gallery parent, select it, go in the toolbar, and then you can select the Enable click to expand. The image block now has a feature, has a way from the blocks settings that you can, when you load it into your post, that you can say, “Okay, make this image my featured image,” and you don’t have to delete it and then load it again.

\n\n\n\n

You still need to delete it if you don’t want it doubling up on your post. When you display featured images with a single post template, then you have that image in twice. But yeah, kicking out or deleting a block is easy.

\n\n\n\n

JC Palmes: Yeah. But that update is a subtle but powerful workflow update because there’s no need to switch context, just to set a featured image. That saves time if you have to do it more than twice.

\n\n\n\n

Birgit Pauli-Haack: Yeah. If you do two posts a day for every day, you’re really happy about that type of saver, yeah. And you don’t have to think for it so much, yeah. Because a lot of people have a website that does really nice things with featured image, but it falls down when they forget the featured image there.

\n\n\n\n

That is something that they might… It prevents that people post something without the featured image. And then, the image block also has some handling. You can crop things and you can, well, mostly crop, or what else can you do with an image block, I forgot.

\n\n\n\n

JC Palmes: Mostly crop.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: Resize.

\n\n\n\n

Birgit Pauli-Haack: And now, you actually know that things happen because there are little notifications on the bottom of the screen that, “Oh, yes, we had to crop this,” yeah.

\n\n\n\n

JC Palmes: Yes. That always trips me up because when you crop an image, I always have to double-check, “Was it really cropped?”

\n\n\n\n

Birgit Pauli-Haack: “Did it work,” yeah. And I hate that question, “Did this work,” or, “What happened,” yeah.

\n\n\n\n

JC Palmes: Yeah. You just know it works when you look at the URL.

\n\n\n\n

Birgit Pauli-Haack: Yeah. 

\n\n\n\n

JC Palmes: It actually looks different.

\n\n\n\n

Birgit Pauli-Haack: Yeah, it does, yeah. So, the Query Loop block, have you seen what’s coming in with that?

\n\n\n\n

JC Palmes: So, this Query Loop block change is actually something that we, I guess, this is something that we wanted to fix way back. So, that is, that hasn’t been part of WDS-BT. It’s fixing WDS-BT, but with 6.8 having the same fix, I will have to remove that fix so that we’ll have the default one.

\n\n\n\n

Birgit Pauli-Haack: Yeah. Which feature are you…

\n\n\n\n

JC Palmes: It’s a long time coming. The sticky post for a Query Loop block where it’s adding in not being counted when you set a…

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah, there are two things. One was already in there. It excludes the sticky posts. But now, there’s a new…

\n\n\n\n

JC Palmes: They ignore one.

\n\n\n\n

Birgit Pauli-Haack: They ignore one, yeah, where you can… And that means that the sticky part of that post is ignored, and it will behave like the other filters.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Like, if you do it by date or you do it by category or by tag, or something like that, it’s not sticking up on top on any of those sites. So, it’s a little hard. So, “excluding” means, none of the sticky posts are showing, and “ignore the sticky post” doesn’t mean ignore the sticky post, it ignores the sticky part.

\n\n\n\n

JC Palmes: It’s having them go back to just a usual post not being counted as sticky, because sticky is sticky, it sticks to the front.

\n\n\n\n

Birgit Pauli-Haack: Yeah, or the top, or whatever.

\n\n\n\n

JC Palmes: Yeah, at the top.

\n\n\n\n

Birgit Pauli-Haack: Yeah. So, there’s also a sorting option by page. So, for pages, you now can order by page order, in ascending order or in descending order. So, if you have pages and have parents, and then you have that, or have it in a certain order, the Query Loop can be sorted by that.

\n\n\n\n

So, when you want to show them in a… Why would you do that? Oh, if you’re in navigation, or something like that, or it’s some pages and you want it all in the same, in a real good order there. So, that’s certainly something that’s new.

\n\n\n\n

JC Palmes: Yeah, that is new. Usually, when we need to do that same order by, we usually do it custom just so we’re able to do it that way. So, this is huge.

\n\n\n\n

Birgit Pauli-Haack: Yeah. I really like it because I had, often, use cases where they had a parent page about a certain topic, and then, sub-pages that go deeper into it, and they all needed to be on one page, and had featured images so you can really do nice grids, but if they’re in a different order, it… So, you really want them in the right order.

\n\n\n\n

Yeah, get everybody confused. And then, there is another feature in there that comes out of the Zoom Out view, but it’s the button in the toolbar for the Query Loop, for the group block that holds everything together so you can change the design.

\n\n\n\n

So, if you grab a pattern for the Query Loop, and after thinking about it for two minutes you don’t like it, you don’t have to throw it out again. You just click on Change Design, and then, you get a another list of the other possibilities how you can put it together.

\n\n\n\n

JC Palmes: Yeah, I like the Change Design link.

\n\n\n\n

Birgit Pauli-Haack: Yeah, very cool.

\n\n\n\n

JC Palmes: It’s a game changer. You don’t have to… Again, it’s a quality of life…

\n\n\n\n

Birgit Pauli-Haack: Absolutely, yeah. And you can now get the Query Loop for pages for all levels. Yeah, so you can say, “Okay, on the main page, I only want the sub-pages to show, but not the main page,” kind of thing. Yeah. And so, it’s really interesting.

\n\n\n\n

And The Source of Truth as well as the PR, they had an example query, so you can test it out, a pattern there. So, you can go through that. Yeah, that was the Query block, right? So, next thing is the new block, the Query Total block.

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: And it just shows the number of posts or pages in that particular query, and you can also add it to the pagination, or something like that, 10 of 12 kinds of things you get there as well. And it’s quite nice.

\n\n\n\n

JC Palmes: One functionality that I need to recheck to see how that…

\n\n\n\n

Birgit Pauli-Haack: Recheck on your theme, yes.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah, I can imagine, yeah.

\n\n\n\n

JC Palmes: That is built in as well. There’s a lot of updates in 6.8 that we fixed in BT that we have now to retest…

\n\n\n\n

Birgit Pauli-Haack: Remove.

\n\n\n\n

JC Palmes: … and remove as needed, which is quite nice, because it’s all going to be default functionality now. You don’t have to fight against the system.

\n\n\n\n

Birgit Pauli-Haack: Yeah. And you have somebody else maintaining that part of the code?

\n\n\n\n

JC Palmes: Right now it’s me and whoever is available at the moment.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

But it’s the whole set of contributors that-

\n\n\n\n

JC Palmes: Oh, yeah, of course.

\n\n\n\n

Birgit Pauli-Haack: … maintain that.

\n\n\n\n

JC Palmes: Exactly.

\n\n\n\n

Birgit Pauli-Haack: Yeah. And you don’t have to think about, “Oh, we had a customization there, so let’s figure that out.”

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: Okay.

\n\n\n\n

Birgit Pauli-Haack: So, while that was all going on in the release cycle and I was talking about things, I got a question that people who had a hard time finding or making sure that the Query Total block shows up, they couldn’t find it, it only shows up when you’re inside the Query Loop. It’s similar to the pagination. So, if you’re outside the Query Loop in your canvas, it doesn’t show up in the inserter because it has nowhere to go.

\n\n\n\n

JC Palmes: Yeah, it has nowhere to connect to.

\n\n\n\n

Birgit Pauli-Haack: Right, yeah. Well, you and I know that, but it’s not an easy concept for people.

\n\n\n\n

JC Palmes: Oh, yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: I have to always think about that because…

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: … sometimes I just think in the developer mindset. So, it’s a switch.

\n\n\n\n

Birgit Pauli-Haack: Yeah. Yeah, and sometimes it’s just surprising what is clear to me or others in the field. A new user or another content creator says, “How does that go? How does that work? I can’t find it.”

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah. So, the Social icon has minimal changes, but one is that it now also has the Discord icon. So, if you want to link to your Discord profile or Discord server, you can do this in the Social icons block, and it now also has, you can use the arrow keys to navigate to the link. You don’t have to go twice on adding the URL to whatever new Social icon you added.

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: So, it’s really streamlining the process. Oh, I’ve just skipped over it. The Separator block can be, now, really expanded because you can add a different tag for it. The Separator block has only an HR tag until now…

\n\n\n\n

JC Palmes: The HR, yeah.

\n\n\n\n

Birgit Pauli-Haack: … the horizontal line. And now, you can actually replace it in the advanced HTML element section of the block and make it a diff. So, then, all the CSS that you can do with any other diff, you can now apply to the Separator block, and makes it a nice, it can be a nice decorative tool for your theme and for your site.

\n\n\n\n

So, I think that transformation really helps with all that setting. Additional setting helps, really, with styling, adding more styling possibilities. I was just saying transformation…

\n\n\n\n

JC Palmes: I guess we’ll be using the Separator block more?

\n\n\n\n

Birgit Pauli-Haack: Yeah, it can be interesting breaking up the wall of text when you have some decorative stuff there. I can see that, for instance, the little pattern things that you had in WordPress Asia website, that they could be a little bit more [inaudible 00:41:53] instead of just an image, or something like that, yeah.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: I was talking about transformation there, but I was just reading Transformation. What you now can also do is transform a Separator block into a Spacer block. So, yeah, there’s also one of the workflow improvements that come with 6.8. I don’t know if we have to go through the editor changes, all of them?

\n\n\n\n

I think there are two new commands. One is, Add a New Page, and the other one is, I totally forgot. My God. Open the Site Editor. When you are somewhere in pages or something like that and you want to just go back, you don’t have to click 15 times to get back to the design tools.

\n\n\n\n

No, you just do Open Site Editor, CTRL + K, and then, start with Site Editor, and it gives you the option already in the command palette that flows on top of your screen.

\n\n\n\n

JC Palmes: Oh, keyboard shortcuts too.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: There are two new ones, right?

\n\n\n\n

Birgit Pauli-Haack: Yeah, it’s the…

\n\n\n\n

JC Palmes: Pace, block styles with Command Control, and option…

\n\n\n\n

Birgit Pauli-Haack: Oh, good.

\n\n\n\n

JC Palmes: We didn’t… Yeah, that one. That set’s going to get heavy use.

\n\n\n\n

Birgit Pauli-Haack: Yes.

\n\n\n\n

JC Palmes: From me at least.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: And then, that shortcut, you can now paste block styles.

\n\n\n\n

Birgit Pauli-Haack: Right, yes.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: You can copy-paste block styles over. That’s fast. You can really do that. So, the next thing, what I really like is, the Starter Content is now available for… You can switch that off. That’s the first thing. So, if you add a new page, it automatically comes with Starter Content, if the theme provides them, in a modal.

\n\n\n\n

That gets in the way to get started with what you want to do. Some people like it and some people don’t like it. It’s the 50-50 thing. But some people… So, you can switch it off. So, you can toggle that Show Starter Content Patterns off, and you can also change it in the Preferences.

\n\n\n\n

But you can also find them in the categories of your patterns. It says Starter Content. So, if you do want to see them, you can just go there and get a list of the starter content for that particular post type. 

\n\n\n\n

JC Palmes: Yeah, that one I have not tested yet, but that will be useful for clients who have very particular styles for a custom post type. With the toggling on and off of that feature, is that available per custom post type or is that a global setting?

\n\n\n\n

Birgit Pauli-Haack: It’s a global setting. Show Starter Content Patterns, that’s a global setting, but Starter Content, until 6.8, wasn’t available for other custom post types.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah, but now it is. So, you can, if you’re just in the header of the pattern, you say that’s also for your custom post types, when you do add new custom post type, it also shows the starter content, which wasn’t available before.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: So, that’s really cool.

\n\n\n\n

JC Palmes: Yeah, that’s cool.

\n\n\n\n

Birgit Pauli-Haack: Yeah, that’s definitely a good feature request for an enhancement to at least provide a filter for theme developers to switch it off for certain post types, and on for other posts. And speaking of theme developers, now you could have your patterns in different folders so it’s not all in the patterns folder, like, Twenty-Twenty-Five has, I don’t know, 80 patterns in one folder?

\n\n\n\n

JC Palmes: A lot.

\n\n\n\n

Birgit Pauli-Haack: Now, you can… And I had to do, with the name of the file, I had to sort it, like, H or CTA, dot, dot, dot. Now, you can have folders like Patterns, CTAs, and I’ll put them all in there, or Patterns and Testimonials, or something like that, yeah.

\n\n\n\n

So, it’s a little bit more organized in your theme folder, and I really like that, yeah, because I’m also a fan to having separate style folders. So, I have styles for blocks and a style for other things.

\n\n\n\n

JC Palmes: Yeah, that’s what we do with BT as well. So, styles are there included in folders if it’s words. I forgot what I was going to say. Yeah, just making sure that you have styles in the block folder.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: And being able to do that for patterns is…

\n\n\n\n

Birgit Pauli-Haack: Pretty organized, yeah.

\n\n\n\n

JC Palmes: … yeah, that’s going to make things a lot more organized, because we don’t need more than 80 patterns in one single folder.

\n\n\n\n

Birgit Pauli-Haack: Yeah. Maybe you don’t need any patterns, period, but some people actually, then, need them for a larger site…

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: … and then, you can sort it out through the folders, yeah. Because you have the categories, and if you make the categories also be your folders…

\n\n\n\n

JC Palmes: Your folders.

\n\n\n\n

Birgit Pauli-Haack: … yeah, it helps. So, that was what I wanted to… Well, we talked a lot about the block editor kind of thing, but I really like that because it’s such a neat tool, and we need to dive in, sometimes, really deeper into the features.

\n\n\n\n

Now, for the developers, the Field Guide is out, and I definitely urge you to look at that and skim it at least for things that are interesting to you. There have been a ton of accessibility improvements, and Joe Dawson, the team rep of the Accessibility team has done a fine job putting that together so you can really see what has changed and what has been improved upon.

\n\n\n\n

There are also some developer-related changes for the block editor in the miscellaneous block editor dev note. I think George Mamadashvili did that. He was also the editor tech lead for the release, or is, yeah. It’s not out yet.

\n\n\n\n

And it definitely also deals with deprecations of being experimental, coming stable, or deprecated kind of thing. So, you definitely want to check that out to make sure that you have that on your radar when things get deprecated.

\n\n\n\n

JC Palmes: Yeah, I always make sure that I check that because you can’t have deprecated machines, especially in client sites.

\n\n\n\n

Birgit Pauli-Haack: Yeah. And when they’re announced through the console… So, sometimes clients tell me, “Okay, I get this yellow… What does it mean?” I said, “You have to ignore it.”

\n\n\n\n

JC Palmes: It’s for styling. Just ignore it. 

\n\n\n\n

Birgit Pauli-Haack: And then, there is a post about the interactivity API best practices by Felix Arntz, and also, Avoiding Deprecation Warnings is part of the headlines there. But definitely, if you are working with the interactivity API, definitely check it out. It gives you quite a few interesting pointers there.

\n\n\n\n

Oh, there is a more efficient block-type registration. This is also from Felix, yes. Now, you can register multiple blocks in one function so it doesn’t have to be called over and over again, which is definitely a performance improvement, and also, you don’t have so much code in it then. Check that out.

\n\n\n\n

JC Palmes: Yeah, I’ll check that out, because I’ve added in another custom function that allows us to do that just in one function.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: You don’t have to call it out multiple times.

\n\n\n\n

Birgit Pauli-Haack: Yeah, right, yeah. So, anything in the WordPress 6.8 that you wanted to talk about that we skipped here?

\n\n\n\n

JC Palmes: Definitely, the new filter, because that’s going to be…

\n\n\n\n

Birgit Pauli-Haack: Oh, the Should Load Block Asset on Demand.

\n\n\n\n

JC Palmes: On Demand, yes…

\n\n\n\n

Birgit Pauli-Haack: Yeah, explain that to me.

\n\n\n\n

JC Palmes: Yeah. So, with that new filter, it really just allows developers to make sure that blocks will only load their assets, the styling, and the scripts for that block when it’s actually on a page.

\n\n\n\n

Birgit Pauli-Haack: Oh.

\n\n\n\n

JC Palmes: When it’s used on a page. So, that was available for core blocks before. Let me just… There’s one other filter, I think, that is part of that.

\n\n\n\n

Birgit Pauli-Haack: Should Load Separate Core Blocks

\n\n\n\n

JC Palmes: Should Load Separate Core Block Assets, that one we are using on BT, just handled differently. Again, custom function because we do have custom blocks that I would want to not load, because by default, that loads, right? So, with BT, that only loads when it’s actually used.

\n\n\n\n

I would have to change to this new filter because this one is more efficient. It just does it out of the box. So, with Should Load Separate Core Block Assets, it does two things, it loads the core blocks, and then, with the Total Block library script, with all of the styling and stuff, and then, the scripts and the style sheet for that particular block, what this new filter does is, it loads, yeah, I mentioned that, it only loads the script and the styles for that block, not the entire thing.

\n\n\n\n

Birgit Pauli-Haack: So, like…

\n\n\n\n

JC Palmes: So, that’s going to be a lot of improvement. We do that already, which means I have to change that function to this new filter, which is amazing.

\n\n\n\n

Birgit Pauli-Haack: Yeah. You were definitely ahead of your time.

\n\n\n\n

JC Palmes: Because we need to fix things when WordPress is not yet ready to fix it because we need that function right away.

\n\n\n\n

Birgit Pauli-Haack: Right.

\n\n\n\n

JC Palmes: We can’t just wait. But glad that what we’ve done for BT is being done by default now.

\n\n\n\n

Birgit Pauli-Haack: Yeah, you can rip it out. All right, my dears, dear listeners, we are all through the 6.8 release so far, and I hope you find some really good things in there. Now, we’re coming to Gutenberg 20.5.                                                       

\n\n\n\n

Gutenberg 20.5

\n\n\n\n

And don’t be alarmed, and we have 20.6, but there are not a whole lot of new things or mentionable enhancements that we want to mention here. So, we’ll still, probably, stay within the time of our podcast, although there is no time. It takes as long as it takes, like many other things in life.

\n\n\n\n

JC Palmes: Because there’s a lot.

\n\n\n\n

Enhancements

\n\n\n\n

Birgit Pauli-Haack: Yeah. So, 20.5 Gutenberg Plugin, it has the updated edit site link for the admin bar that now goes, actually, back to the site editor and not to the page that you were actually on or the template that you were on.

\n\n\n\n

So, that confused a lot of people because every time you clicked on it, you were on a different page. So, sure, every time you click on it, to go to the same page. So, that is really good.

\n\n\n\n

The Create Block Package now supports blocks manifests and the relevant core APIs by default. That needed a little bit of bug fix in there, but that is now… It also has to do with the multiple blocks, right?

\n\n\n\n

JC Palmes: Mm-hmm.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: So, this one, I think, is a huge deal because having it aligned better with core and the support manifests by default means there’s less guesswork and just better starting point for custom blocks.

\n\n\n\n

Birgit Pauli-Haack: Yes. Yeah, absolutely, yeah. So, the Block button, if it’s used in the navigation bar, now also has… So, when you’re in a navigation bar and you add another link, if it’s a custom page link, it offers you creating a new page, but not with a button. So, now, when you add a button to it, also gives you the capability to draft a new page, which is really nice. So, you can use those buttons more.

\n\n\n\n

What else is in there? So, the Data View Actions, as a plugin developer, you can use a modal to do whatever the action is. And now, you also have the possibility that you can control the size of the modal so it’s not the same size every time.

\n\n\n\n

And you have a lot of white space there, or you can focus on certain things. Now, you can actually control the size through props. That’s developer speak, but you will appreciate that.

\n\n\n\n

JC Palmes: Of course. There are a couple of updates there that make me smile.

\n\n\n\n

Birgit Pauli-Haack: Which one?

\n\n\n\n

JC Palmes: The Trailing Period Cleanup and the Defaulting Back To, the 100 PX Spacer Block default.

\n\n\n\n

Birgit Pauli-Haack: Oh. Yeah.

\n\n\n\n

JC Palmes: These are really just petty things for me, but I’m glad that people find them weird as well. So, they’re fixing it and adding it back, thank you.

\n\n\n\n

Birgit Pauli-Haack: Good, yeah. So, there’s a change in the Data Views, which comes on par with the WPA, the old page things where you have the pages listed in the admin as a sub-page if you have sub-pages like… So, hierarchical kind of dimension there.

\n\n\n\n

JC Palmes: Yeah, hierarchical and not a flat thing. And that helps.

\n\n\n\n

Birgit Pauli-Haack: And that now came, also, to the Data Views. So, you have a cluster, the way you actually designed it or put them together. So, I’m sorry, there’s a little…

\n\n\n\n

JC Palmes: I’m also reading through.

\n\n\n\n

Birgit Pauli-Haack: Yeah, I need to read through that.

\n\n\n\n

JC Palmes: Oh, the mobile one.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: So, when I test VT, I always test on multiple interfaces, like you should, and that also includes editing.

\n\n\n\n

Birgit Pauli-Haack: Oh, yeah, editing on mobile, yes.

\n\n\n\n

JC Palmes: Editing on mobile is a lot easier.

\n\n\n\n

Birgit Pauli-Haack: Oh, now, yeah. That’s good, yeah. What else do we have? That’s pretty much for 20.5.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Documentation

\n\n\n\n

Birgit Pauli-Haack: Yeah. There’s also the documentation about the WP scripts with the build blocks manifest has been updated as well. So, you can read up about it. And the Color Experimental Duotone has been removed from core blocks, but I hope they’ll keep it in. That is stabilized now. So, it’s called Filter Duotone instead of Color Experimental Duotone.

\n\n\n\n

So, it’s just a rewording of things, and also, to make it stable so people are more inclined to use it in their custom blocks as well, because some people shy away from experimental stuff because they don’t know how it will turn out.

\n\n\n\n

JC Palmes: Usually, they change their name, which is going to be the case here. I don’t think we have… So, for our client projects, we usually do shy away from the experimental stuff just so… It needs to be as stable as it should be-

\n\n\n\n

Birgit Pauli-Haack: Well, that makes total sense.

\n\n\n\n

JC Palmes: … in my personal projects still, yeah. I do use that in my… Well, I play around with all of the experimental stuff on my own theme.

\n\n\n\n

Birgit Pauli-Haack: Yeah, it’s fun, right?

\n\n\n\n

JC Palmes: You end up seeing all the things that get broken on the next update, which is fun.

\n\n\n\n

Birgit Pauli-Haack: Or you at least can start prognosis, like, “Which one gets broken first,” kind of thing.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Makes begging easier. So, that was Gutenberg 20.5. 

\n\n\n\n

Gutenberg 20.6

\n\n\n\n

We are now coming to Gutenberg 20.6, and there are additional features in there that are not coming to 6.8, except for the Enabling the Startup Pattern for all post types. That was back-ported to 6.8, but the others are…

\n\n\n\n

I don’t think that the keyboard shortcut to paste styles is actually in 6.8. I think that’s in the Gutenberg plugin, and it doesn’t have the, yeah, it does not come to 6.8.

\n\n\n\n

JC Palmes: That’s sad.

\n\n\n\n

Birgit Pauli-Haack: That’s sad. Oh, so sad.

\n\n\n\n

JC Palmes: I liked that.

\n\n\n\n

Enhancements

\n\n\n\n

Birgit Pauli-Haack: Yeah. So, they’re adding support for more granular controls for the Table of Content block, which also hasn’t made it to Core yet because it needs a little bit more finessing.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: But if you use it in your private sites, or while some people, like me, are brave or are stupid, depending on the perspective, they use Gutenberg.

\n\n\n\n

JC Palmes: They use it on…

\n\n\n\n

Birgit Pauli-Haack: Yeah, Gutenberg production.

\n\n\n\n

JC Palmes: Yes. But this Table of Content block controls things that I love.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: But again, it’s one of those almost-there blocks.

\n\n\n\n

Birgit Pauli-Haack: Yeah, yeah. And what we are talking about right now is that you can select the heading levels. So, if you want all the H2s in there, then you can say that, oh, you want all H1 to H2 to H6 in there, you can say that too, or anything in between.

\n\n\n\n

So, it’s a nice setting on the sidebar for the Table of Content. And I think I tweeted out a little video to show that off, but… When I was testing it, I said, “Oh, this is nice.” Yeah. Then, whereas the navigation bar has…

\n\n\n\n

JC Palmes: Navigation, yeah.

\n\n\n\n

Birgit Pauli-Haack: … it gets a transparency slider for the sub-menus background, which is highly appreciated. But also, that is not yet in. It just came in in 20.6.

\n\n\n\n

JC Palmes: Just began in 6.8 too.

\n\n\n\n

Birgit Pauli-Haack: So, that is out. So, 6.8, just so, if you want to go back and look at things, 6.8 has Gutenberg plugins from 19.4 to 20.4. So, with 2020. And most of the time, only bug fixes get back-ported to the current version, but then, new enhancements are not going to make it there.

\n\n\n\n

In 20.6 Gutenberg Plugin, you also get a new option for opening the links in a new tab for the RSS block. And that is something that a lot of people wanted, and now, we have it. Now you can shortcut for pasting styles. Was that the 20.6 already?

\n\n\n\n

JC Palmes: Yeah, that’s the 20.6…

\n\n\n\n

Birgit Pauli-Haack: Yeah, it was a small release because most of the Gutenberg developers like George Mamadashvili, Fabian Kägy, Akiyama Anu, and a few others, they were all really, in the release cycle, occupied with that. So, yes. But that’s it. We are almost at the end of our show.

\n\n\n\n

Well, thank you, dear listeners, and thank you, JC, for sticking it out with me and having a discussion on that. It was wonderful to chat with you about the things. And dear listener, as always, the show notes will be published on Gutenbergtimes.com/podcast.

\n\n\n\n

This is Episode 116, and if you have questions and suggestions or news you want us to include the next time, just send them to changelog@gutenbergtimes.com, that’s changelog@gutenbergtimes.com. So, this is it.

\n\n\n\n

Thank you, JC, thank you, all, listeners, for being with us again. And hello, all the new ones that we gathered, new listeners we gathered on all the different podcast apps. Well, I wish you a great weekend, everyone. Well, the weekend will be over when you get to read this. So, I wish you a nice weekend, JC.

\n\n\n\n

JC Palmes: Thank you.

\n\n\n\n

Birgit Pauli-Haack: And until the next time, thank you.

\n\n\n\n

JC Palmes: Thank you.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 06 Apr 2025 09:21:15 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:13;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:120:\"Gutenberg Times: WordCamp Europe, New Chart block, GitHub Deployment, and can AI fix my plugins? — Weekend Edition 324\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://gutenbergtimes.com/?p=38289\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:123:\"https://gutenbergtimes.com/wordcamp-europe-new-chart-block-github-deployment-and-can-ai-fix-my-plugins-weekend-edition-324/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:22695:\"

Hi there,

\n\n\n\n

How is your block theme knowledge coming along? The slower pace of Gutenberg development is a blessing in disguise. I will take the opportunity to dive deeper into block themes, styles, block and section styles, and block development. I definitely also see a need to skill up my CSS. What is it that you need to learn?

\n\n\n\n

It sounds funny coming from me, as I’ve been knee-deep in Gutenberg development all this time. Still, if I don’t actually practice the skills I acquired, I lose them. That’s why I decided to tackle the migration of the Gutenberg Times website to a block theme. A step was long overdue. I’ll post about my progress.

\n\n\n\n

And now it’s time to see what others created, and I discovered during the week.

\n\n\n\n

Enjoy your weekend and get some rest.

\n\n\n\n

Yours, 💕
Birgit

\n\n\n\n
\n\n\n\n\n\n\n\n

WordCamp Europe will take place June 5 – 7, 2025 in Basel, Switzerland. This week organizers announced that they already sold over 1,000 tickets, already. They also published the program schedule. It’s a great mixture of many topics and perspectives.

\n\n\n\n

At first glance, here are my top sessions.

\n\n\n\n\n\n\n\n

Bonus: Two Playground sessions:

\n\n\n\n\n\n\n\n

Special treat: Mythbusting and Q&A about appearing in Google Search with Danny Sullivan, Google.

\n\n\n\n

Want to meet me in Basel? Send me the link to your calendar or use mine bit.ly/WCEUMeetBirgit.

\n\n\n\n\"See\n\n\n\n
\n\n\n\n

There is a new kid on the block. In his post, WPCoven: Introducing A New Voice Covering the WordPress Ecosystem, Alex de Borba, CEO at Atmostfear Entertainment, introduced a publication. WPCoven will cover developments related to the Block Editor. It will also share best practices for its applications within the WordPress & WooCommerce community. 👋 Sending a hearty “Welcome to the space” to WPCoven. I will certainly watch the feed.

\n\n\n\n\"WP\n\n\n\n

Developing Gutenberg and WordPress

\n\n\n\n

Mary Hubbard posted the takeaways from a meeting with Core Committers and Matt Mullenweg. You can read the full meeting recap in Dotorg Core Committers Check In. The TL;DR about releases is:

\n\n\n\n
    \n
  • WordPress 6.8 is the last major release for 2025,
  • \n\n\n\n
  • Minor aka point releases will happen (6.8.x) as needed, with bug fixes, and small enhancements
  • \n\n\n\n
  • Gutenberg plugin release cycle stays every other week.
  • \n
\n\n\n\n

I also expect, we will read more about canonical plugins in the future.

\n\n\n\n
\n\n\n\n

George Mamadashvili released Gutenberg 20.6 version.

\n\n\n\n
    \n
  • The RSS block now offers an option to allow opening the links in a new tab. It can also set the rel attribute. (69641)
  • \n\n\n\n
  • The Table of contents block received a new option to control the level of heading included. (69063)
  • \n\n\n\n
  • The Navigation block now sports a slider to control the transparency for submenu background. (69063)
  • \n
\n\n\n\n
\n\n\n\n

JC Palmes, Principal Technical Manager at WebDev Studios, living in the Philippines, and I chatted about the Gutenberg releases 20.5 and 20.6. We covered WordPress 6.8 extensively, too and discussed the starter theme WebDev Studio has built. It was a great joy to chat with JC Palmes again.

\n\n\n\n
\n

🎙️ Latest episode: Gutenberg Changelog 116 – WordPress 6.8, Source of Truth, Field Guide, Gutenberg 20.5 and 20.6 with special guest JC Palmes, WebDev Studios

\n\n\n\n\"\"\n
\n\n\n\n

Plugins, Themes, and Tools for #nocode site builders and owners

\n\n\n\n

The editorial team at Codeable published a tutorial titled Easy Ways to Edit Your WooCommerce Product Page Design. You learn how to change the WooCommerce product page without altering core WordPress files by creating a new plugin. This method lets developers change the layout, design, and functionality using filters or hooks. Developers can make changes by focusing on specific parts like the product image, description, price, and currency. This approach avoids disrupting other sections of the page. This strategy keeps code clean and ensures functionality. It’s advised to use a child theme for WooCommerce plugin modifications to prevent conflicts.

\n\n\n\n
\n\n\n\n

Bud Kraus‘s latest tutorial teaches How to make block content hide or appear in WordPress. He helps website owners learn to use the Block Visibility plugin, which is often misunderstood and underused. By installing the plugin, Kraus demonstrates how to hide specific blocks in a page or post. This provides more flexibility. It also allows for further customization. This method allows website owners to create dynamic layouts, improve user experience, and boost performance.

\n\n\n\n
\n\n\n\n

Nick Schäferhoff walks you through the steps on How to Build a One-Page Website with WordPress . He explains how these single-page sites can be super effective for modern websites. They allow users to easily navigate. Users can find what they need quickly. Schäferhoff also shares some tips on how to make the site visually appealing. He advises on ensuring it is user-friendly. This makes it easy to get started with this trendy web design approach. The instructions detailed, and you also find excellent screenshots so you won’t get lost.

\n\n\n\n
\n\n\n\n

A new Chart block plugin has arrived at the WordPress plugin repository. It was created by the folks at BdThemes, a WordPress product company from Bangladesh. The plugin is called Advanced Charts for Gutenberg Blocks Editor. Give it your data via CSV file and it assists create a visualization for it. It has many customization and design tools.

\n\n\n\n\"\"\n\n\n\n

If you only need basic chart tooling and designs, SB Chart Block by Herb Miller is ideal. From the block Inserter in the editor, search for “Chart” and you can install it right from within the editor.

\n\n\n\n\"\"\n\n\n\n

Theme Development for Full Site Editing and Blocks

\n\n\n\n

At the WordPress Meetup in London, Keith Devon and Mark Wilkinson, Highrise Digital, presented their theme building process. They demonstrated this process for a school project. I found it quite interesting to listen to the long-time theme builders. They approach building a theme with the site editor and offer the full range of editing tools to their clients. Here is the recording: Building a Block-Based WordPress Site with FSE

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

Benjamin Intal and his crew at Stackable are super excited to share the New Stackable Global Design System! This update is designed to make life easier for developers. It helps them create consistent and cool designs across different websites. You’ll find loads of ready-made components, typography, colors, and more to play with. It’s crafted to simplify the design process and cut down on the usual headaches for developers. Or so they claim.

\n\n\n\n

 “Keeping up with Gutenberg – Index 2025” 
A chronological list of the WordPress Make Blog posts exists. It includes contributions from various teams involved in Gutenberg development. These teams are Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. The past years are also available: 2020 | 2021 | 2022 | 2023 | 2024

\n\n\n\n

Building Blocks and Tools for the Block editor

\n\n\n\n

Jonathan Bossenger livestream about his question: Can AI fix Plugin Check issues? He recently adopted a WordPress plugin that was closed due to security flaws and other code issues. Can AI help him resolve these issues faster than he could himself? Let’s find out.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

JuanMa Garrido continued his series Data in the Block Editor with @wordpress/data. He presented Part 3 of building the app. This part is from the course Using the WordPress Data Layer. This course aims to get you comfortable with the WordPress data layer. It’s a JavaScript library used throughout the WordPress editor to read and write data. You can catch up on Part 1 and Part 2 of the series via YouTube.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

Ryan Welcher has been live-streaming on Twitch every Thursday at 14:30 UTC. Over the last two weeks, he focused on adding user profiles to the Block Developer Cookbook. He worked on Part 1 and Part 2. You’ll learn how to create an Author Archive template. You’ll also learn how to create an Author page layout while handling user metadata for display. Part of the experience of Welcher’s livestream is also method on debugging code and code review.

\n\n\n
\n
\n
\n
\n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

In his latest video, Nick Diego introduced you to an awesome developer tool: How to use GitHub Deployments on WordPress.com. “Whether you’re building custom themes, plugins, or managing full-site deployments, integrating GitHub with WordPress.com offers a powerful and efficient approach to code management. In this video, you’ll learn how to connect a GitHub repository to your WordPress.com site using GitHub Deployments.”

\n\n\n
\n
\n
\n
\n
\n\n\n

What’s new in Playground

\n\n\n\n

For the latest episode of the WPTavern Jukebox podcast, 163 – Birgit Pauli-Haack on the Magic of the WordPress Playground, I joined Nathan Wrigley. We talked about my experiences with the WordPress Playground. I shared how I created complex and interactive demos using the Playground. I even brought them online as fully functional websites. We discussed the power of storytelling in web development. You can use the Playground to experiment and learn new things.

\n\n\n
\n
\n
\n
\n
\n\n\n

Need a plugin .zip from Gutenberg’s master branch?
Gutenberg Times provides daily build for testing and review.

\n\n\n\n

Now also available via WordPress Playground. There is no need for a test site locally or on a server. Have you been using it? Email me with your experience

\n\n\n\n

\"GitHub

\n\n\n\n

Questions? Suggestions? Ideas?
Don’t hesitate to send them via email or
send me a message on WordPress Slack or Twitter @bph.

\n\n\n\n
\n\n\n\n

For questions to be answered on the Gutenberg Changelog,
send them to changelog@gutenbergtimes.com

\n\n\n\n
\n\n\n\n

Featured Image: Image by ta98mori from Pixabay

\n\n\n\n
\n\n\n\n

Don’t want to miss the next Weekend Edition?

\n\n\n

We hate spam, too, and won’t give your email address to anyone
except Mailchimp to send out our Weekend Edition

Thanks for subscribing.
\n\n\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 05 Apr 2025 05:14:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:14;a:6:{s:4:\"data\";s:11:\"\n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"HeroPress: HeroPress Swag!\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://heropress.com/?p=7882\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:95:\"https://heropress.com/heropress-swag/#utm_source=rss&utm_medium=rss&utm_campaign=heropress-swag\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:5594:\"\"Black

Marcus Burnette over at TheWP.World recently made a swag store and very kindly created some HeroPress swag!

\n\n\n\n

$5 of each sale goes to support ongoing operation at HeroPress, so we appreciate your support!

\n\n\n\n

Here’s what’s available:

\n\n\n
\n\n
\n\"White\n\n\n\n

White Mug

\n
\n\n\n\n
\n\"Black\n\n\n\n

Black T-Shirt

\n
\n\n\n\n
\n\"Blanket\n\n\n\n

Throw Blanket

\n
\n\n
\n\n
\n\n\n\n\n\n
\n\"Embroidered\n\n\n\n

Embroidered Patch

\n
\n\n\n\n
\n\"Black\n\n\n\n

Black Mug

\n
\n\n
\n\n\n

\n\n\n\n

So be sure to stop by the HeroPress swag store!

\n

The post HeroPress Swag! appeared first on HeroPress.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 04 Apr 2025 14:00:15 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:15;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:65:\"Do The Woo Community: Do the Woo Friday Shares, April 4, 2025 v13\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93923\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"https://dothewoo.io/blog/do-the-woo-friday-shares-april-4-2025-v13/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:62:\"Shares from the WooCommerce, WordPress and Open Web Community.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 04 Apr 2025 13:44:29 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:16;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:115:\"Do The Woo Community: The Power of Photography, Translation and Contributing with V Gautham Navada and Bigul Malayi\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93848\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:113:\"https://dothewoo.io/the-power-of-photography-translation-and-contributing-with-v-gautham-nevada-and-bigul-malayi/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:210:\"In this episode, guests V Gautham Navada, and Bigul Malayi discuss contributions to WordPress, highlighting the significance of photography and translation in enhancing community engagement and business growth.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 03 Apr 2025 14:17:47 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:17;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"Do The Woo Community: Why User Feedback and Internal Testing Drive Smarter Feature Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93508\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:98:\"https://dothewoo.io/blog/why-user-feedback-and-internal-testing-drive-smarter-feature-development/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:206:\"User-centric development by involving support teams in feature planning and conducting beta tests. The approach leverages internal tools and data-driven insights to enhance product functionality and design.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 03 Apr 2025 10:07:52 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:18;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"WPTavern: #163 – Birgit Pauli-Haack on the Magic of the WordPress Playground\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=193436\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:92:\"https://wptavern.com/podcast/163-birgit-pauli-haack-on-the-magic-of-the-wordpress-playground\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:52923:\"Transcript
\n

[00:00:00] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress. The people, the events, the plugins, the blocks, the themes, and in this case what the WordPress Playground is, and how it’s transforming the scope of WordPress.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you or your idea featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.

\n\n\n\n

So on the podcast today, we have Birgit Pauli-Haack. Birgit is a longtime WordPress user, an influential voice in the WordPress community. She’s known for her role as the curator at the Gutenberg Times, and host of the Gutenberg Changelog podcast, and she brings her wealth of experience as a Core contributor to WordPress as well.

\n\n\n\n

She joins me today for an in-person conversation recorded at WordCamp Asia in the Philippines, and we are discussing Playground, a remarkable development that’s set to redefine the WordPress development landscape.

\n\n\n\n

Playground allows users to launch a fully functional WordPress instance directly in their browser, without the necessity of a server, database, or PHP, playground breaks down barriers, offering developers, product owners, educators, and everyone in between a new way to interact with WordPress.

\n\n\n\n

We explore how this technology not only simplifies the testing and development process, but also sets the stage for more interactive and immediate web experiences.

\n\n\n\n

We explore the concept of Blueprints within Playground, tailored configurations that enables a bespoke user experience by preloading plugins, themes, and content. This feature helps developers to present their work in a controlled environment, offering users an insightful hands-on approach that can significantly enhance understanding and engagement, and it’s all available with just one click. It really does eliminate the traditional hurdles associated with installing WordPress.

\n\n\n\n

If you’re curious about how the WordPress Playground is set to usher in a new era of friction free web development, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

\n\n\n\n

And so without further delay, I bring you Birgit Pauli-Haack.

\n\n\n\n

I am joined on the podcast by Birgit Pauli-Haack. Hello Birgit.

\n\n\n\n

[00:03:28] Birgit Pauli-Haack: Oh, hey Nathan.

\n\n\n\n

[00:03:29] Nathan Wrigley: We’re actually looking at each other, not through a screen.

\n\n\n\n

[00:03:32] Birgit Pauli-Haack: Yes. It’s a total different feeling.

\n\n\n\n

[00:03:34] Nathan Wrigley: Yeah. Birgit And I chat a lot on various other channels, and it’s a pleasure having you right in front of me. That’s lovely.

\n\n\n\n

[00:03:39] Birgit Pauli-Haack: Yeah, same here. I’m always glad we meet at a WordCamp.

\n\n\n\n

[00:03:42] Nathan Wrigley: Yeah, thank you. So that’s the introduction then because here we are, we’re at WordCamp Asia, in the Philippines. It’s the first day of the conference in general. We had the Contributor Day yesterday, and we’ve got another day tomorrow.

\n\n\n\n

And we’re going to have a chat with Birgit who is going to be talking to us today about Playground, because you’ve got a slot at the event all about creating a demo in Playground. And we’ll get onto that in a minute. But first of all, for those people who don’t know who you are, just a few moments for your potted bio. Tell us about yourself.

\n\n\n\n

[00:04:09] Birgit Pauli-Haack: So I’m the curator at the Gutenberg Times and I’m the host on the Gutenberg Changelog podcast. And I also am a Core contributor to WordPress, and I work for Automattic. I live in Munich and I’m married, 37 years.

\n\n\n\n

[00:04:22] Nathan Wrigley: There we go. That is a very potted bio. Thank you, I appreciate that.

\n\n\n\n

So here we are, we’re going to talk about Playground. And I figured the best place to start is answering the question, what is Playground? And just before we hit record, it was pretty obvious that both you and I are very excited about this. And so I want to encourage people to really pay attention because this genuinely, for me is one of the most exciting developments, not just now, but ever, in WordPress. It truly is a transformational technology. But for those who don’t know what it is, just tell us what Playground is.

\n\n\n\n

[00:04:54] Birgit Pauli-Haack: I’m totally with you there on the magic, yeah. And it’s not just for WordPress, it’s for web development. So WordPress Playground is a WordPress instance in your browser. Yeah, you go there, put in playground.wordpress.net. You get a full WordPress instance in your browser, and you can add plugins, you can themes, you can content. Test it out. Whatever you do with that and want to learn with Playgrounds, you don’t need a server, you don’t need a database, you don’t need PHP installed or something like that. So it’s just there.

\n\n\n\n

And for someone who has been in the web development for many, many years, it’s like magic. Because before you’re always kind of, oh, where do I host things? What’s with the database? What’s with the server? And it’s all gone. Yeah, so it’s really cool.

\n\n\n\n

[00:05:43] Nathan Wrigley: I think probably it’s best on this particular podcast to avoid the technicalities, but I would point the listener to a podcast that I did on the WP Tavern with Adam Zielinski several months ago now, where Adam came on and tried, in an audio form, it’s very hard to do, but explained in an audio form exactly what the underpinnings are.

\n\n\n\n

And the only words I can use to describe it are, it’s voodoo. It is literal magic. Just two or three years ago, if you’d have said that Playground was possible, I honestly would’ve thought that you were talking nonsense. It could not happen. That will never happen.

\n\n\n\n

[00:06:18] Birgit Pauli-Haack: Snake oil.

\n\n\n\n

[00:06:18] Nathan Wrigley: Yeah, exactly. And yet Adam managed to pull it off. And so just to re-explain what Birgit just said, it’s all in the browser. When you go to playground.wordpress.net, there is no server. Just say it again, there’s no server. There’s no PHP that you need to install on your local machine. It all happens inside the browser. Close the browser down, it goes away. We’ll come to that. Maybe that’s changed.

\n\n\n\n

But the idea is it’s happening in the browser, and so you can have any combination of website that you like immediately inside of Playground, and it really is remarkable.

\n\n\n\n

I liken to the moment that the iPhone got the App Store. The iPhone was a very useful thing to have. You know, it did phone calls and it looked beautiful, and you could upload music to the phone with a cable. And then along came the App Store, and suddenly a thousand, a million, different developers could get their hands on it and tell you, here’s a different way you can use the iPhone. And here’s another way, and here’s another thing that you can do. And it feels a bit like Playground is WordPress’ moment like that. You know, it just suddenly prizes the lid open, and makes developers able to show you what they’ve got in a heartbeat.

\n\n\n\n

[00:07:25] Birgit Pauli-Haack: Yeah. And that’s pretty much, that’s a very good analogy because we also have a Blueprints gallery that could be something like an app store where you can learn how you can assemble it. So the core technologies is not not, I don’t know any of the technology that’s underlying. It’s based on Web Assembly. And that has been around for about 10 years, trying to get a lot of different programming languages talk to each other in the browser.

\n\n\n\n

And then it’s based, not on MySQL, but on SQLite database. And then Service Workers and worker Threads API, that are browser APIs. For storage, for instance, yeah, or for sending commands to other different applications. But that’s all I know, yeah. I have never worked with Web Assembly, yeah. And MySQL, I know that, just really amazing.

\n\n\n\n

So you can use that. Many people use it to spin up a fully functional WordPress and demo that. So you can use it in educational settings. You don’t have to download a whole lot of stuff. You don’t have to, as a teacher, you don’t have to set up, talk to your IT department to set up a server for all the students. You can just point them to the Playground and then give them instructions on how to work with that.

\n\n\n\n

It’s a sandbox environment. It could be, yeah, if you want to. You can upload your content and then see what else can you change with it without messing with your live site. You can integrate it with your development. There is a WP now, VS Code extension where you can, so when you’re working on your plugin and you click on the button, it loads up a local Playground for you with the plugin that you’re working on already installed, and that’s really cool.

\n\n\n\n

Same with the theme. The training team has been working on interactive demos in terms of having code examples on one side, and then you make changes to the code and you see it in the right hand side. How it changes the website. So that’s really cool.

\n\n\n\n

[00:09:20] Nathan Wrigley: I think one of the things that you said there, you’ve got an understanding of some of the underlying technologies, but you were stressing that, basically you don’t need to understand them. Having a knowledge of them is fun, you know, it’s interesting. But a bit like I don’t have the faintest idea how to build an iPhone app, but I can still use an iPhone. And I can still benefit from this application, the maps, navigation app. I don’t need to understand how that’s built, but I can use it, it works.

\n\n\n\n

And really that’s, I think the purpose. The developers over there, thank you so much, but most people are never probably going to want to get into the weeds of that. They just want to click the button and see what happens.

\n\n\n\n

And just to be clear on this, if you’ve never done that, I, at my home, have a fairly good internet connection, so I don’t know if I’m in a sort of slightly privileged position, but when I click the button at playground.wordpress.net, I’m imagining it’s somewhere in the order of three to four seconds before that website is ready to go. Basically it’s the length of time it takes me to blink and grab the mouse again. It’s in a heartbeat. So there’s literally no friction.

\n\n\n\n

But if you go to playground.wordpress.net and click the button, what you’re going to get there is a vanilla version of WordPress, which is fine. Then you can do whatever you like with that, put plugins in, what have you. But wouldn’t it be interesting, wouldn’t it be great if somebody came up with, oh, I don’t know, let’s call them Blueprints or something like that, where you could pre-build something that then somebody else could use.

\n\n\n\n

So this is the App Store, isn’t it? You know, somebody’s built the maps navigation app. Somebody’s built the note taking app. Somebody’s built the whatever. This feels like what the Blueprints are. But I want to make sure that you are describing it and not me because I am not sure that I’ve encapsulated it perfectly.

\n\n\n\n

[00:11:00] Birgit Pauli-Haack: No, you did. But in opposite to the App Store, you actually can look at other people’s Blueprints and steal them. Blueprints are written in JSON has nothing to do with Jason. It’s JSON. It’s a data format for JavaScript. And there is a schema for it, so when you put it into your code editor, it gives you signals, yeah, that you formatted right.

\n\n\n\n

And then you have two different ways of configuring your Playground instance. One is to do settings. So you could do which PHP you want to use? Which WordPress version do you want to use? Also, do you want to have network enabled? And most of the time you want it enabled because you want to import and install themes or something like that. Those are the settings.

\n\n\n\n

And then you have steps. And those steps are also just formulated in JSON format. For instance, you can log in. Automatically log in the person in the Playground. Or you can say, I have a landing page that should land, so when somebody uses that blueprint, when Playground is ready to completely load it, you should land in the block editor, for instance. And you should have that particular block plugin already active on that post, so you can really play with blocks. Nick Diego with his plugin Block Visibility has done a great way for a live preview of his block from the repository.

\n\n\n\n

Another way is to, so install a plugin, add content to it. Use WP-CLI to instantly load up new versions, add new pictures, or use an export from another website, an XML file from another website and load it into the Playground instance.

\n\n\n\n

But sometimes you have, you said you get the vanilla if you just do that, if you just do playground.wordpress.net, you get the vanilla WordPress. But it’s one post, Hello World, and it’s one sample page. But you don’t see how content kind of interacts with whatever feature you want to demo. So you need some content there, yeah. And the Blueprints Gallery has actually some nice examples on how to configure that.

\n\n\n\n

[00:13:08] Nathan Wrigley: Let’s come back to the gallery in a minute. Just to recap what you just said. So there’s a bunch of settings, probably more for developers. You know, you might want to test something in a particular PHP environment or what have you, so you can select those. And then you can do these steps where you can essentially design, if somebody was to use that Playground and somebody was to click on your link, they would wait the 2, 3, 4 seconds, whatever, and then, depending on the steps that you’d set up, they would arrive where you chose them to be.

\n\n\n\n

So for example, you might pre-install the latest, greatest plugin that you want to share with the world. And you want people in a post for that. And you want them inside the block editor. And you can make it so that upon clicking the button, the first thing they get is, we’re inside your plugin, we’re about to use it. So the profundity of that is pretty amazing. You can really tailor the experience.

\n\n\n\n

So rather than going from being like Playground, which sounds like children, you’re messing about, larking about a little bit. It also becomes like serious ground a little bit, you know? Serious developers can use this to circumvent, I don’t know, support tickets, the capacity to demonstrate to users who’ve never seen your product before, your plugin, your theme, or whatever it may be.

\n\n\n\n

You can point them to a link. They can click the link. You as the developer configure everything within an inch of its life, so they get exactly where you want them to be. And in that way you can use it as a sales mechanism, as a support mechanism.

\n\n\n\n

[00:14:29] Birgit Pauli-Haack: And sometimes it’s really hard to tell people what your plugin does unless you show it them in the video. But then they still don’t get their hands on it. And with that feature, with the Playground combined with the Blueprints, you can actually make them feel the thing. How it works with them, and what ideas they get when they play around with it, and have better questions, educated questions for you, for the product, yeah.

\n\n\n\n

[00:14:51] Nathan Wrigley: So a Blueprint then is a version of Playground in which somebody has pre-configured things. Is that basically what it is? You know, let’s say that I have got this fabulous new plugin and I want you to experience it. I don’t necessarily want you to land on a particular page, but I just want the plugin to be available to you and you can do things.

\n\n\n\n

If I install my plugin, use Playground to do that, I can then share a link. And because I’ve tinkered with it, it becomes a Blueprint because it’s not the playground.wordpress.net version, it’s my doctored version, adapted version.

\n\n\n\n

[00:15:26] Birgit Pauli-Haack: Well, it also goes to playground.wordpress.net, but it has a query parameter, to be a little technical term, that says, use the blueprint at this URL. So a plugin developer for the repository, at the repository there are live preview buttons now. And the plugin developer can put in a separate directory Blueprints on the WordPress site, put all the assets, all the image that they want to load, and the configuration file, which is written in this JSON file, and put it there, and then make that live. And every time someone clicks on the preview button, they go to playground.wordpress.net with the Blueprint kind of loaded, the configuration files.

\n\n\n\n

[00:16:09] Nathan Wrigley: So it’s all happening through playground.wordpress.net. But then there’s JSON configuration file, which gets sort of sideloaded, if you like, through the URL. That tells it, okay, add this and then end up here and what have you. The important part is that JSON, that’s what makes it the Blueprint. It’s going to playground.wordpress.net, but the JSON file means that it does something else.

\n\n\n\n

And you said the word gallery, which tells me that there’s a whole host of these things. Pre-configured, pre-built, put into a box if you like. And we can go to that gallery and explore. What kind of stuff is in there?

\n\n\n\n

[00:16:38] Birgit Pauli-Haack: So, what kind of stuff is there? So there’s one, how do I put an admin notice on top of the dashboard? How do I add a dashboard widget and load it up with my Playground? So most of the time, when you want to log into a WordPress site, you get the dashboard. And if there’s a widget, you can actually guide people to go some other places. You can say, okay, I have a plugin that needs 50 posts, for whatever reason. So there is a Blueprint there and how to use WP-CLI to create 12 or 50 posts automatically, that are then loaded into the post content.

\n\n\n\n

So there’s also a Blueprint for a specific WooCommerce extension. So it loads WooCommerce, it loads the extension, it loads some products, and then you land for a shipping page where you can say, okay, this shipping plugin, what does it do for me? And you see it working with products on a Playground site. So that is really remarkable. It takes a little longer when you have content to load.

\n\n\n\n

[00:17:38] Nathan Wrigley: Goes up to like 10 seconds.

\n\n\n\n

[00:17:40] Birgit Pauli-Haack: So you go and get your coffee and come back.

\n\n\n\n

[00:17:42] Nathan Wrigley: But it’s still profound.

\n\n\n\n

[00:17:43] Birgit Pauli-Haack: Yeah, remarkable. Yeah, you don’t have to do anything, kind of just wait a bit.

\n\n\n\n

What else is in there? Oh, there is a demo of 2025. So when you load 2025 theme automatically and go to your website and see it, you get the post, the blog site, where all the posts are in one one big site with the full content. And not a whole lot of people have that kind of blog. And in the demo, you actually go to the magazine front page, and then see all the patterns that are in there. You can see all the templates in that Playground demo.

\n\n\n\n

That’s interesting for plugin developers that have experimental themes or experimental settings on the settings page that you can actually preload them as well. There’s an example in there for the Gutenberg experiments. They’re on the check marks on a setting site. And you can take that and replicate that for your own plugins site, how to do that, with the areas.

\n\n\n\n

Because you can do site options. So the site options is not only site title and tag descriptions, also, oh, make my block editor have the top toolbar instead of all the other things or the distraction free model, yeah. So these kind of features, you can also preload there and have examples from the Blueprints Gallery.

\n\n\n\n

[00:18:57] Nathan Wrigley: I think we’re just at the beginning really, aren’t we? Of of this journey. And basically, the underlying technology is now provisioned. It’s there. And we’re at point where, okay, people, developers, explore. And we’re really just at the beginning of that. And the gallery is probably a good place to go.

\n\n\n\n

But if you wanted to put one of these JSON files together, do you know, is there some credible documentation out there that would help people to get started, learn the ropes?

\n\n\n\n

[00:19:25] Birgit Pauli-Haack: Yeah, there’s definitely, there’s documentation of all the steps that are there, yeah, like how to run PHP, how to have additional PHP extensions installed and all that. So when you open the Playground, there are three, and you’re not going to the full page, so you have three panes. On the left hand side you have some menus, and one of them is the documentation link. So that’s good.

\n\n\n\n

And another link is there, it’s the Blueprint Gallery. So in the middle of the section of your Playground, you see all the list of all the gallery content. And then when you click on the preview or the view site, the Playground loads that for you, and then there’s another menu item where is says, view Blueprint. And that gives you a Blueprint editor.

\n\n\n\n

So you see the Blueprint loaded in, but then when you want to edit from the documentation, okay, what happens when I put that in? And you click the run button, and it reloads that Playground with your changes. So it’s really, very hands on, and you still don’t have to create a server or a local environment or something like that.

\n\n\n\n

[00:20:31] Nathan Wrigley: Yeah, there’s this really virtuous cycle of, okay, so you’ve used something from the gallery, but you’re curious about how it works. Look, here’s how it works. Here’s the buttons to click to go and explore. Oh, and whilst you’re at it, if you want to edit anything, here’s the option to edit it. And when you click save, it’ll restart that whole thing and you’ll get the new version.

\n\n\n\n

So all of the sort of helpful tooling is now built into it. Because when I talked to Adam, none of that existed. I mean, the version selection for PHP didn’t exist. The ability to land people on particular destinations when they first load up the playground, none of that existed. It was literally the technology of getting it working.

\n\n\n\n

So now built into it is this knowledge base, if you like. Not really a knowledge base, but more, you want to know how this one works? We’ll show you. And it’s that beautiful, well, the purpose of WordPress, democratising publishing. In this case, it’s democratising the nuts and the bolts, and the bits and pieces of publishing.

\n\n\n\n

Yeah, so that’s really nice. And that’s all built inside. So just follow the prompts in the UI, and you can adapt what you want, and what have you. But also there are some 101 articles out there, perhaps on Learn or something like that where can see in text format how do all.

\n\n\n\n

[00:21:40] Birgit Pauli-Haack: Yeah, the developer blog has, on developer.wordpress.org/news has three articles about Playground. One is about the underlying technology from the Web Assembly people. That was really good for those who want to explore that even further.

\n\n\n\n

And then there is one on what use cases you can do with a little bit of an example. And then also, so we are right now always talking about playground.wordpress.net. But you mentioned something that someone could put this on their website, and you can.

\n\n\n\n

Playground can be self-hosted. It does not have to go through the wordpress.net site. But how to do this is in the documentation. It has a seperate section there. So if you say, okay, I don’t have my plugin in the repo, but I want to use it through my own website, then you can actually put it there, and it’ll have your own branding around it. So it’s even get further than just the WordPress part.

\n\n\n\n

[00:22:35] Nathan Wrigley: So that’s a really important distinction to make. So in the cases that we’ve been talking about so far, if you want to go to playground.wordpress.net and you use your own JSON file, it will be able to suck in anything from the WordPress repo. And that’s the sort of, the WordPress way, if you like. I’m doing air quotes.

\n\n\n\n

[00:22:51] Birgit Pauli-Haack: Also from GitHub.

\n\n\n\n

[00:22:52] Nathan Wrigley: Oh, thank you. Yeah, that’s an important distinction. I’d forgotten that. Also from GitHub, but you know, it’s everything that’s open source out there, free to download already.

\n\n\n\n

But a big part of the WordPress community, one of the things that makes it popular, is the ability to sell commercial plugins. And so that was another question that I had. Is possible to do it?

\n\n\n\n

And so, yes, but you need to take the technology that builds WordPress at playground.wordpress.net, you put that onto your own server, and you can do whatever you like with that. So you can put your premium products in there on a, I don’t know, two day free trial sort of basis, and show people how that all works.

\n\n\n\n

So Playground suddenly becomes more interesting outside of the free to play area as well. And you can imagine that being a really, really useful tool. Because we’ve always been able to play fairly straightforwardly with free things on the repo, but suddenly the moment where you’ve got to pay $100 for a thing, the capacity to see that really is the bit which opens the wallet.

\n\n\n\n

Okay, it’s $100, maybe I’ll buy it, maybe I won’t. It’d be nice to see it. Okay, they’ve got a 14 day trial, but I’ve still got to pay for it. This opens up the capacity to, look, there it really is. Play with it for two days or whatever it may be. That’s fascinating.

\n\n\n\n

[00:24:05] Birgit Pauli-Haack: Absolutely, yeah. And if you want to test that plugin, yeah, you still would need a local server or a hosting server to load it on. And you have that 14 day trial. And now you can really test it right now.

\n\n\n\n

[00:24:16] Nathan Wrigley: Right. And that’s the other big thing. Because if you buy a commercial plugin, you then have to spin up a site somehow. You have to download the plugin, upload the plugin, get the plugin configured. This gets rid of all of that, because you don’t need to download and upload anything, and it can be pre-configured.

\n\n\n\n

So the author of the plugin can say, okay, if you want to use my LMS plugin for this kind of thing, here’s playground version with everything just right. And if you want to do it for this kind of thing, I don’t know, you’re an elementary school teacher who might use my LMS plugin in this way, or you’re a university lecturer, who might use it in this way. Let’s build it a perfect version for you.

\n\n\n\n

And you can imagine that a million times over for all the commercial plugins out there. You know, form plugins. Okay, this is the contact form that we’ve pre-built. This is the, I don’t know, the form which integrates with WooCommerce or whatever. So the developers can do all of this. And that really makes it super useful to them.

\n\n\n\n

[00:25:11] Birgit Pauli-Haack: Yes, absolutely, yeah. What’s coming down the pipeline for Playground. One is that you can also use it with private GitHub repos. Which right now is not possible, but it’s in the works. And there was a problem with the proxy, that you get some cross site downloading errors because some servers are not set up to have images downloaded from a machine. They have created a proxy server now, where that is kind of circumvented that you can also from non WordPress sites download stuff, like images and content, or PHP plugins.

\n\n\n\n

What also comes is, so SQL, MySQL, for some plugins Playground does not work yet, because they use very specific MySQL query, the union query, for instance. Select union and other commands like that. The SQLite doesn’t have those yet. And they are however working on it to replicate these kind of behavior of a database also with Playground. So to make it even more compatible with all the plugins that are out there.

\n\n\n\n

I think they did a test of 10,000 plugins that are in the repo, and test every month kind of how many plugins don’t work with it yet. And they got it down from, I think 7% to 5%. So it’s always kind of progressing very well towards zero.

\n\n\n\n

[00:26:33] Nathan Wrigley: Yeah, there’s a lot of things going on in the background that the likes of you and I probably, you know, because we’re curious about it, we’ll probably know about, but maybe the average listener who’s not wedded to this subject maybe doesn’t. But that’s really interesting.

\n\n\n\n

So the intention is to get it so that more or less anything works in more or less any scenario. And really nicely putting it out there so that you can do things which aren’t bound to GPL, WordPressy kind of things, if you know what I mean. So, you know, you can use your commercial product over here, and you can use your GitHub repo over here. That’s really nice.

\n\n\n\n

My understanding is that when Adam began it, he was immediately repurposed. So Adam Zielinski, he was an, was, still is, I think, an Automattician. And I think that it was immediately understood, this is profound. Let’s get Adam on this full time. You know, it’s no longer a hobby project. But I also think that he’s got other people from Automattic involved. There’s like a little team around it now, pushing the development of that. Is that still the case? Is this a team which is growing, or stagnating at, well not stagnating, maintaining at a certain number?

\n\n\n\n

[00:27:33] Birgit Pauli-Haack: Well, it’s growing in scope. So they’re also working, and that was a focus starting in last fall, that they’re working on using Playground for the Data Liberation Project. And that’s what Adam was doing also full-time now in the last few months. That he looks, okay, what kind of parser do we need to do really good data liberation from other systems, or from WordPress?

\n\n\n\n

Yeah, because the import and export in WordPress only gets you so far, yeah. And there are some quirks in there, and they want to really have a perfect data liberation through Playground. They have a browser extension. It’s all beta right now. It’s not functioning yet. But it’s really coming along quite nicely.

\n\n\n\n

[00:28:20] Nathan Wrigley: So Data Liberation then is this very laudable project of being able to bring into WordPress, I guess data liberation on some levels is the whole point of open source really, isn’t it? Is that you can grab your data and just pick it up and take it somewhere else.

\n\n\n\n

[00:28:34] Birgit Pauli-Haack: Open content.

\n\n\n\n

[00:28:35] Nathan Wrigley: Right, yeah. It’s your content. This platform is no longer being used, or you’ve fallen out with it. You know, you no longer love it in the way that you did. You want to now move it here. And you’ll be able to, let’s say, go Joomla into WordPress, Drupal into WordPress, or as you said, WordPress into WordPress.

\n\n\n\n

Which suddenly kind of opens up the whole idea of migrating websites, which a real mess frankly. It’s a really difficult thing to do. And I often think that people are bound to products and services that they’re purchasing on a monthly basis because the migration process is so difficult. And they don’t want to be caught up in all of that because things can go wrong. You know, it might not work perfectly and there’s all the just carrying it out.

\n\n\n\n

But if you can essentially do migrations, and Playground is the sort of go between. It’s the bit which talks from, I don’t know, one hosting company to another. So it goes from hosting company A to Playground. Playground then serves it up to hosting company B, which is where you want to end up. And all of that happens through Playground. That’s remarkable. And you can do the inspecting in the middle bit, the middleware, Playground if you like. Check it’s all working before you deploy it. That’s amazingly powerful.

\n\n\n\n

[00:29:41] Birgit Pauli-Haack: Yeah. And that’s actually the vision of Playground’s part of Data Liberation. They also have a browser extension to kind of identify a non WordPress site, the various pieces like the pages, the posts, the news, the events, kind of the custom post types. And then kind of teach Playground what it all is. But that’s kind of, it’s very technical on one side, but it’s also, you need to have a total different concept about content management systems to actually make that. So that’s not really for a normal consumer.

\n\n\n\n

[00:30:13] Nathan Wrigley: Yeah, because if you’re coming from Drupal and you’ve got like 1,000 different modules in there, you know, think plugins in the WordPress space. Then it’s going to be difficult to one-to-one map that over to WordPress. But the endeavor is to do a half decent job and in the middle you can step in and say, okay, this might need modifying, that might need modifying. And then you can go back to your Drupal install, change things a little bit, try again because it takes no time to do it. That is really a key, interesting part. You do kind of wonder actually if hosting companies in the future will just offer Playground in as part of their bundle, you know, their onboarding migrating bundle.

\n\n\n\n

[00:30:47] Birgit Pauli-Haack: Yeah. A lot of hosting companies have their own plugins for that. So I know that Pressable and SpinupWP, they all have their, or wordpress.com has their own plugin that they then connect with. I think it’s BlogVault most of the time. Pantheon, same, yeah. Where you can migrate in. But that part in the middle, that kind of always takes a long time.

\n\n\n\n

And you are bound to the hosting company to actually offer that, yeah. And that’s not a cheap plugin. But if you go from one small hosting to one, another small hosting, you don’t have that luxury.

\n\n\n\n

[00:31:20] Nathan Wrigley: Yeah, and if you’re crossing platforms as well, say Joomla into WordPress and what have you. That’s also really different.

\n\n\n\n

[00:31:25] Birgit Pauli-Haack: Yeah. There are a few agencies who have built for their customer things, but it’s not open source and it’s, well, it’s open source, but it’s not meant for a huge amount of public to kind of use it.

\n\n\n\n

[00:31:36] Nathan Wrigley: Yeah, I’d imagine that it’s fairly proprietary technology, isn’t it? It’s probably locked down because it’s the secret source of getting the Drupal installs into WordPress on their platform.

\n\n\n\n

One of the things which Adam spoke about when we talked, I don’t know where we’re at with this, but I raised the question of the destructibility of it. So essentially when I spoke to Adam, when you launched Playground, you fiddle with it, played with it, the moment you click close on the browser tab everything went away. That’s how it was designed. But he said that at some point in the near future, and maybe that moment has already been passed.

\n\n\n\n

[00:32:09] Birgit Pauli-Haack: It’s here.

\n\n\n\n

[00:32:09] Nathan Wrigley: Yeah, so now we’ve got a more permanent version. Tell us about that. Are there any constraints on that? Like, can I close the browser tab? Can I shut my computer down, for example? I mean, will it last forever? Could I even use it as a, I don’t know, as a temporary website in, let’s say I work in a school and I want an intranet for my staff or something, could for those kind of things?

\n\n\n\n

[00:32:29] Birgit Pauli-Haack: Well, it cannot be, it doesn’t have a domain or something like that. So that wouldn’t work. But yes, you can save. You have two options to save the site that you’re working on, so you can come back tomorrow. One is in the browser. So it uses the local storage of the browser and really downloads the whole WordPress stuff there. And then you open up the browser again, you get the site again. You cannot load it from another computer because it’s a different browser.

\n\n\n\n

And the second option is to load it in your local file system. So you can, it downloads the whole thing, gives you a directory and that’s your website, and you can load it then back into Playground a day later, or a week later, or two months later, because it’s still on your computer.

\n\n\n\n

You can also have multiple sites now in one Playground instance. So you can say, okay, save this site, and then now I use another blueprint, load it again and it’s another temporary site. And you load it, you save it again, then you have a second website there.

\n\n\n\n

[00:33:29] Nathan Wrigley: A curious version of version control or something like that. You’ve added this plugin in, I’m going to save a new version marking that this plugin got added. Let’s see how that works. And then if it doesn’t work, we can roll back to the, just delete that one and go back to the previous one. Oh gosh. So essentially permanent. Locally permanent maybe is the better way to describe it.

\n\n\n\n

[00:33:50] Birgit Pauli-Haack: And you need to think about the saving part. If you do a second site and you close it, a browser without the saving part, it’s going to go away. Yeah, it’s still ephemeral there. Which is also a good thing sometimes.

\n\n\n\n

[00:34:02] Nathan Wrigley: But obviously as you said, you know, the point of hosting in the end is that, you know, it connects to a domain name, it goes through the DNS process and you you can see it online. No.

\n\n\n\n

[00:34:10] Birgit Pauli-Haack: No, not yet.

\n\n\n\n

[00:34:11] Nathan Wrigley: This is not. Oh, not yet. I wonder.

\n\n\n\n

[00:34:12] Birgit Pauli-Haack: No, no, I don’t think that’s ever going to be. But what can be, soon hopefully is kind of pushing it to a hosting company. And that, I think it needs to be just finalised which hosting is going to be there. And the Playground team learns a lot from wordpress.com, because the new development, local development system that wordpress.com has, Studio, is based on Playground. They develop some of the features also for, that wordpress.com can use them in their Studio. And what was the bug fixes? Come to Playground.

\n\n\n\n

[00:34:46] Nathan Wrigley: That makes real sense though, for hosting companies to be clamoring all over this, to build a Playground import functionality. Because then developers all over the world, you know, maybe if in teams it might be a little bit more difficult, but you know, a solo developer, certainly at the moment, you’ve been working on something. You’ve got this perfect version of the site, you’ve got all the plugins that you want, you’ve set it up, it’s working on my machine. Now I go over to my hosting company of choice, click the import Playground button and there it is. Why wouldn’t the hosting companies offer that frankly, it just seems too straightforward.

\n\n\n\n

[00:35:17] Birgit Pauli-Haack: Syncing up with the live site or there’s also a GitHub deployment there. It opens so many ideas, yeah. And when you ask Adam, well, if I think about this, and can you do that? He said, sure.

\n\n\n\n

[00:35:28] Nathan Wrigley: Give a few weeks. I’ll add it to list of 1,000 things that people have already suggested.

\n\n\n\n

[00:35:32] Birgit Pauli-Haack: Yeah, we need to develop that. Yeah, the ideas are there, the prototypes are there, the proof of concept is already done. Just a matter of resources now, yeah. I can for instance see one thing is, if you have a documentation and you need people to contribute to documentation, you load the documentation in Playground, you make the changes, and then you push it to GitHub as a pull request. And then somebody can review it, load it in their own Playground and approve it so the documentation could be updated.

\n\n\n\n

Something like that is already in use. That scenario, that’s in prototype. It’s not there yet, but we know that it can work, because some theme developers have that process. They’re not developers per se, that they go into the files. They load the theme into Playground, use the Create Block Theme plugin. Make the changes to the theme. Save it and create the block theme, so it’s in files. Then push it to GitHub as a pull request for this theme, and then have all the changes there. So that’s how a lot of designers work with their developers on the themes. They don’t have to touch any code, but it’s still all saved in code.

\n\n\n\n

[00:36:48] Nathan Wrigley: It’s just such an interesting beginning of everything. It does feel like we are at a moment where there’s just so many different roads that could be taken, and lots of people coming up with lots of different ideas.

\n\n\n\n

Just quickly circling back to the Studio thing that you mentioned. So Studio is a local development environment. You’re going to be downloading this as a software bundle for your Mac or your Windows machine or what have you. You’re saying that’s a wrapper for Playground, is it?

\n\n\n\n

[00:37:13] Birgit Pauli-Haack: Exactly.

\n\n\n\n

[00:37:13] Nathan Wrigley: But that’s immutably stored. That’s not dependent on.

\n\n\n\n

[00:37:17] Birgit Pauli-Haack: No, it’s on your machine, yeah.

\n\n\n\n

[00:37:19] Nathan Wrigley: Right. So it’s going for the files on the machine approach as opposed to being stored in the browser. So if you download and make use of Studio, you can close that machine down, come back to it whenever you like, it’s there until you decide to delete it.

\n\n\n\n

[00:37:32] Birgit Pauli-Haack: Like any other local environment that you can, yeah.

\n\n\n\n

[00:37:35] Nathan Wrigley: Yeah, okay. And that’s available free you to download for anybody.

\n\n\n\n

[00:37:38] Birgit Pauli-Haack: Free, open source.

\n\n\n\n

[00:37:39] Nathan Wrigley: Okay. Is there anything else you wanted to cover off, apart from the fact that we’ve both got ridiculously excited about this. Was there anything curious, interesting, quirky, novel that you’ve seen out there that we haven’t yet touched?

\n\n\n\n

[00:37:50] Birgit Pauli-Haack: No, not yet. But I’m starting now to kind of dream about it. And sooner or later I come up with something, yeah.

\n\n\n\n

What I would want and what I want to pursue is that I can have a Playground instance for writers. And I know writers who are not very keen on using the Block Editor, because it gets in the way. But the Block Editor has these settings where you can do distraction free, where you can do, put the toolbar on top, yeah, and hide it as long as I write, and just let me have when I’m not writing kind of thing, and log in and not have to go to the menu.

\n\n\n\n

Right now, if I’m a blogger, I have to log into WordPress, and then I need to look at post, new post. This would give you, start writing, and don’t have to worry about the rest of it. And then click a button and then your WordPress site is updated with it. That’s kind of what I’m working on. I don’t know if really helpful, but.

\n\n\n\n

[00:38:44] Nathan Wrigley: No, that’s really great. I mean, one of the things that I always thought was curious about it would be the idea in education, for educators literally standing in front of pupils, children who, you know, depending on what the kind of curriculum they’ve got. It might be we’re doing about poetry. We want everybody to upload and modify a poem, or comment on a poem or something like that.

\n\n\n\n

And here’s the link. You know, we’re in an environment where everybody’s, we’re in the computer lab, everybody’s got a computer. Just click on this link, scan the QR code, whatever it may be. Give us your modifications, what have you. And I know that’s a sort strange example, but it’s the fact that instantly, very, very inexperienced users are in the same exact interface as all the other experienced users. And the level of difficulty was clicking a link. You just needed to click a link.

\n\n\n\n

And the educator didn’t need a great deal of technology to set it up. The pupils needed zero technology to access it. And so it’s that one to many thing, where lots and lots of people can access the same thing in a heartbeat. And I’m imagining that the tooling to create the Playground installs, and to create the Blueprints is going to make it more and more easy in the future. So possibly not the perfect example, but I do like the example of one to many.

\n\n\n\n

[00:39:56] Birgit Pauli-Haack: Yeah. What I like about it is that it’s not about WordPress. It’s about poetry. It’s about writing. It’s about, well, even image uploading and editing, yeah. You could certainly do that. Technology gets out of the way. And for the last 25 years, that’s always been in the way, yeah, and now it’s out of the way.

\n\n\n\n

[00:40:14] Nathan Wrigley: Well, because the internet is basically a reading experience. I mean, I know we’ve got forms, but really all you’re doing is submitting a form so that somebody can read that. But you go to any website and largely websites, you know, if you’re going to some sort of SaaS app, that’s a different thing, it’s configured probably to be more interactive. But broadly speaking, you’re going to consume information.

\n\n\n\n

But in this, you click a link and you’re reading information, but then you can do things with it. Oh, I think it would be better if there was an image there in that poem. Or, I don’t know, it’s an explanation of some principle of physics or something, and a diagram would be really useful at this point, and I don’t like the way they describe that, that could go in bold. And you are interacting with the internet. And it’s totally free, and it will be easy to deploy, and it’ll take seconds to load. And all of a sudden the internet became more interactive. And it’s just the beginning. It’s very exciting.

\n\n\n\n

[00:41:05] Birgit Pauli-Haack: Yeah, it is.

\n\n\n\n

[00:41:06] Nathan Wrigley: Birgit Pauli-Haack, thank you very much for talking to me today.

\n\n\n\n

[00:41:09] Birgit Pauli-Haack: Thank you for leading me down the road of all the ideas here.

\n\n\n\n

[00:41:13] Nathan Wrigley: Thank you for explaining it.

\n
\n\n\n\n

On the podcast today we have Birgit Pauli-Haack.

\n\n\n\n

Birgit is a long time WordPress user, an influential voice in the WordPress community. She’s known for her role as the curator at the Gutenberg Times and host of the Gutenberg Changelog podcast. And brings her wealth of experience as a Core contributor to WordPress as well.

\n\n\n\n

She joins me today for an in-person conversation, recorded at WordCamp Asia in the Philippines, and we’re discussing Playground, a remarkable development that’s set to redefine the WordPress development landscape.

\n\n\n\n

Playground allows users to launch a fully functional WordPress instance directly in their browser. Without the necessity of a server, database, or PHP, Playground breaks down barriers, offering developers, product owners, educators and everyone in between a new way to interact with WordPress.

\n\n\n\n

We explore how this technology not only simplifies the testing and development process, but also sets the stage for more interactive and immediate web experiences.

\n\n\n\n

We explore the concept of Blueprints within Playground, tailored configurations that enable a bespoke user experience by preloading plugins, themes, and content. This feature helps developers to present their work in a controlled environment, offering users an insightful hands-on approach that can significantly enhance understanding and engagement, and it’s all available with just one click. It really does eliminate the traditional hurdles associated with installing WordPress.

\n\n\n\n

If you’re curious about how the WordPress Playground is set to usher in a new era of friction-free web development, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

 Gutenberg Times

\n\n\n\n

Gutenberg Changelog podcast

\n\n\n\n

Podcast with Adam Zielinski on How Playground Is Transforming WordPress Website Creation

\n\n\n\n

 WordPress Playground

\n\n\n\n

 Block Visibility plugin by Nick Diego

\n\n\n\n

Playground  Blueprints Gallery

\n\n\n\n

WordPress Developer Blog > News

\n\n\n\n

 Data Liberation Project

\n\n\n\n

 SpinupWP

\n\n\n\n

 BlogVault

\n\n\n\n

 Pantheon

\n\n\n\n

WordPress  Studio

\n\n\n\n

 Create Block Theme plugin

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 Apr 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:19;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"Do The Woo Community: The Web Agency Summit 2025 with Andrew Palmer\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93794\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"https://dothewoo.io/the-web-agency-summit-2025-with-andrew-palmer/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:195:\"The Web Agency Summit is a free event from April 7-11, 2025, focusing on web development, offering insights into AI, SEO, and networking opportunities for professionals across platforms and CMSs.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 Apr 2025 10:22:53 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:20;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"Do The Woo Community: When It’s Time to Let Go of Your Podcast\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93347\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:65:\"https://dothewoo.io/blog/when-its-time-to-let-go-of-your-podcast/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:198:\"Podcasting can be challenging, requiring time and effort. After managing eight podcasts, I learned the importance of knowing when to let go, recognizing that not all ideas sustain long-term success.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 Apr 2025 10:14:21 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:21;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"WordPress.org blog: WordPress 6.8 Release Candidate 2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18662\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/04/wordpress-6-8-release-candidate-2/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:8637:\"

The second Release Candidate (“RC2”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it’s recommended that you evaluate RC2 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone. While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC2 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC2 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update –version=6.8-RC2
WordPress PlaygroundUse the 6.8 RC2 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025.  Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for further details.

\n\n\n\n

What’s in WordPress 6.8 RC2?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement. For more technical information related to issues addressed since RC1, you can browse the following links:

\n\n\n\n\n\n\n\n

Want to look deeper into the details and technical notes for this release? These recent posts cover some of the latest updates:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community of people collaborating on and contributing to its development. The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable.  It’s also a meaningful way for anyone to contribute.  This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report.  You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled. Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases. With RC2, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English? ¿Español? Français? Русский? 日本語? हिन्दी? বাংলা? मराठी? ಕನ್ನಡ?  You can help translate WordPress into more than 100 languages. This release milestone (RC2) also marks the hard string freeze point of the 6.8 release cycle.

\n\n\n\n

An RC2 haiku

\n\n\n\n

Testing, 1, 2, 3
It’s almost April fifteenth
Squashing all the bugs

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @michelleames, @tacoverdo, @jopdop30, @vgnavada, @jeffpaul.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 01 Apr 2025 15:53:20 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Jonathan Desrosiers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:22;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"Do The Woo Community: Host Adam Weeks Covers CloudFest 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93611\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:63:\"https://dothewoo.io/blog/host-adam-weeks-covers-cloudfest-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:321:\"Our host Adam Weeks was busy during CloudFest and the Hackathon. And on top of that he was making sure we had content to share while he enjoyed the event. So kudos to Adam and here are recaps of his episodes. Episode 621: Inspiring Innovation through Hackathons A peek into the CloudFest Hackathon with insights […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 01 Apr 2025 10:30:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:23;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:70:\"Do The Woo Community: Engaging Young People in the WordPress Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=88452\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"https://dothewoo.io/blog/engaging-young-people-in-the-wordpress-community/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:248:\"The WordPress community must engage younger generations by simplifying onboarding, providing education, promoting career opportunities, and fostering connections, ensuring sustainable contributions to the platform’s future development and growth.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 31 Mar 2025 09:10:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:24;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:123:\"Gutenberg Times: Field Guide, No-Code Theme, Pattern Library, why you might not need a Custom Block — Weekend Edition 323\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://gutenbergtimes.com/?p=38176\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:127:\"https://gutenbergtimes.com/field-guide-no-code-theme-pattern-library-why-you-might-not-need-a-custom-block-weekend-edition-323/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:18889:\"

Hi,

\n\n\n\n

Spring is here. On the weekend I saw Forsythia bushes in full bloom all over the city. Yesterday, I passed the National Museum and saw their Magnolia trees blooming as well. The temperatures are still too low for my taste, but not for long. 🌤️

\n\n\n\n\"\"\n\n\n\n

“Isn’t this a WordPress newsletter”, you might think. I know, I know. Let’s get on with it, then. Carpe diem! 🤗

\n\n\n\n

Have a fabulous weekend!

\n\n\n\n

Yours, 💕
Birgit

\n\n\n\n

PS: The links for mentioned people are now going to their Blue Sky profile, and if I couldn’t find them, it’s till their X (formerly known as Twitter) profile.

\n\n\n\n

Follow us on Bluesky @bph.social and @gutenbergtimes.com

\n\n\n\n\n\n\n\n
\n\n\n\n

The Page Builder summit 2025 is on the calendar now: Anchen le Roux and Nathan Wrigley announced the eighth edition of the virtual conference will take place from 12th to 16th of May 2025. Save the date, and add your name to the Waitlist, to receive info, when registration opens. “The summit is a 5-day event that will help WordPress developers, designers, freelancers, and agencies to build better websites faster and more efficient. As well as learn more about the page builders and the awesome things you can do with them. “, they wrote.

\n\n\n\n
\n\n\n\n

Web Agency Summit 2025 will happen April 7-11, 2025. “Learn proven strategies top agencies are using today to scale sustainably, streamline operations, attract high-value clients, and stay ahead of the curve.”

\n\n\n\n
\n\n\n\n

WordSesh returns May 13–15, 2025. It is a virtual conference for WordPress professionals. Its host, Brian Richards, is a seasoned virtual conference producer and WordPress educator. His speaker and session curation is top-notch. Sign up to receive updates on the next event.

\n\n\n\n

Developing Gutenberg and WordPress

\n\n\n\n

WordPress 6.8 Release Candidate 1 is now available for testing. Final release is scheduled for April 15, 2025

\n\n\n\n
    \n
  • You can check out the post Help Test WordPress 6.8 with detailed instructions and videos on selected features.
  • \n\n\n\n
  • The Field Guide holds relevant information for developers about the new version.
  • \n\n\n\n
  • The Source of Truth compliments with detailed information on block editor features for end users, plugin, and theme developers.
  • \n
\n\n\n\n

The latest Dev Notes for WordPress 6.8

\n\n\n\n\n\n\n\n
\n\n\n\n

Gutenberg 20.6

\n\n\n\n

George Mamadashvili released Gutenberg 20.6 RC 1 version, and it’s ready for testing. What to expect in this version?

\n\n\n\n
    \n
  • The Table of contents block received a new option to control the level of heading included. (69063)
  • \n\n\n\n
  • The Navigation block now sports a slider to control the transparency for submenu background. (69063)
  • \n\n\n\n
  • The RSS block now has an option to allow opening the links in a new tab and set the rel attribute. (69641)
  • \n
\n\n\n
\n \n
\n \n \n \n
\n\n\n
\n

🎙️ Latest episode: Gutenberg Changelog 116 – WordPress 6.8, Source of Truth, Field Guide, Gutenberg 20.5 and 20.6 with special guest JC Palmes, WebDev Studios

\n\n\n\n\"\"\n
\n\n\n\n

Plugins, Themes, and Tools for #nocode site builders and owners

\n\n\n\n

Wes Theron created a video tutorial to teach you How to Build a WordPress Theme the No-Code Way. He shows you where to update your colors, choose your fonts, modify the Single page template and then use the Create block Theme plugin to save all the settings into a new theme’s file structure.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

In this short video on X (former Twitter), Jamie Marsland shows us How to create a One-Pager website with WordPress, using the site editor, core blocks and some custom CSS.

\n\n\n\n
\n\n\n\n

MahdiAli Khanusiya, is the designer behind the PatternWP plugin that offers a big library of WordPress block patterns and full-page templates. Using it will instantly increase the range of designs and layout you can offer your customers, and streamline your production process. There is also a pro version available.

\n\n\n\n\"\"\n\n\n\n

Theme Development for Full Site Editing and Blocks

\n\n\n\n

Latest six block themes in the WordPress repository:

\n\n\n\n\n\n\n\n\"\"\n\n\n\n

 “Keeping up with Gutenberg – Index 2025” 
A chronological list of the WordPress Make Blog posts from various teams involved in Gutenberg development: Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. The previous years are also available: 2020 | 2021 | 2022 | 2023 | 2024

\n\n\n\n

Building Blocks and Tools for the Block editor.

\n\n\n\n

In his post How to extend core WordPress blocks with Blocks API, Joel Olawanle, technical editor at Kinsta, introduced you to the basic extension methods like Block Styles and Block Variations with code examples and multiple ways to accomplish the tasks.

\n\n\n\n
\n\n\n\n

Alfredo Navas, web developer at WebDev Studios, wrote a tutorial on how to use the Block Bindings API and why you might not need a Custom Block. Navas walks you through registering a Custom Source, how to create a Block Variation with custom data and making it all work in the editor and on the front end.

\n\n\n\n
\n\n\n\n

In last week’s livestream, Ryan Welcher created a new WordPress block theme for the Block Developer Cookbook and gave it a new look. You can watch him turning change his color scheme and turn his existing theme into a style variation.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

Brian Coords found a way to create Dynamic WordPress Playground Blueprints with Cloudflare Workers and shared in his video how he built a system to spin up demo WooCommerce stores. The code lives on GitHub

\n\n\n
\n
\n
\n
\n
\n\n\n

Need a plugin .zip from Gutenberg’s master branch?
Gutenberg Times provides daily build for testing and review.

\n\n\n\n

Now also available via WordPress Playground. There is no need for a test site locally or on a server. Have you been using it? Email me with your experience

\n\n\n\n

\"GitHub

\n\n\n\n

Questions? Suggestions? Ideas?
Don’t hesitate to send them via email or
send me a message on WordPress Slack or Twitter @bph.

\n\n\n\n
\n\n\n\n

For questions to be answered on the Gutenberg Changelog,
send them to changelog@gutenbergtimes.com

\n\n\n\n
\n\n\n\n

Featured Image:

\n\n\n\n
\n\n\n\n

Don’t want to miss the next Weekend Edition?

\n\n\n

We hate spam, too, and won’t give your email address to anyone
except Mailchimp to send out our Weekend Edition

Thanks for subscribing.
\n\n\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 29 Mar 2025 09:21:31 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:25;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:83:\"Do The Woo Community: Christian Taylor Joins as Co-Host of the Creative Sparks Show\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93581\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:82:\"https://dothewoo.io/christian-taylor-joins-as-co-host-of-the-creative-sparks-show/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:96:\"BobWP announces new co-hosts for the Content Sparks show, video content expert Christian Taylor.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 28 Mar 2025 11:40:15 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:26;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"Do The Woo Community: Do the Woo Friday Shares, March 28, 2025 v12\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93556\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"https://dothewoo.io/blog/do-the-woo-friday-shares-march-28-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:206:\"This content highlights our carefully selected information and resources from the Woo and WordPress community, aiming to provide valuable insights and updates for users and enthusiasts in the digital space.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 28 Mar 2025 08:42:11 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:27;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"Do The Woo Community: WordPress Flexibility and Simplicity: Building for Users with Ben Ritner\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93525\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:92:\"https://dothewoo.io/wordpress-flexibility-and-simplicity-building-for-users-with-ben-ritner/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:384:\"In today’s Woo ProductChat, co-hosts Katie Keith, founder and CEO at Barn2, and James Kemp, the core product manager at WooCommerce, sit down with Ben Ritner, the Senior Director of Product at StellarWP. They dive into the intricate balance between customizability and simplicity in WordPress products, particularly focusing on Ben’s work with the Cadence suite. […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 27 Mar 2025 16:39:33 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:28;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"Do The Woo Community: Leveling Out the Audio on a Podcast with Multiple Guests\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93358\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:82:\"https://dothewoo.io/blog/leveling-out-the-audio-on-a-podcast-with-multiple-guests/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:252:\"Podcasting requires managing sound levels effectively, especially during livestreams. Auphonic, with its Loudness Normalization feature, simplifies post-production, ensuring balanced audio quality and saving valuable time for creators, plus a lot more.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 27 Mar 2025 12:26:21 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:29;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"BuddyPress: BuddyPress 14.3.4, 12.5.3 & 11.4.4 Security Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://buddypress.org/?p=336835\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:81:\"https://buddypress.org/2025/03/buddypress-14-3-4-12-5-3-11-4-4-security-releases/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:2347:\"

BuddyPress 14.3.4, BuddyPress 12.5.3, and BuddyPress 11.4.4 are all now available. This is a security release. Please update as soon as possible.

\n\n\n\n

14.3.4, 12.5.3 & 11.4.4 fixed two bugs:

\n\n\n\n
    \n
  • Restrict bulk notification management to owner. Many thanks to Brian Mungah for responsibly reporting the problem.
  • \n\n\n\n
  • Improve security of status update messages. Many thanks to mikemyers for responsibly reporting the issue.
  • \n
\n\n\n\n

For complete details, visit the 14.3.4 changelog.

\n\n\n\n
\n\n\n\n\n\n\n\n
\n\n\n\n

You can get the latest version by clicking on the above button, downloading it from the WordPress.org plugin directory or checking it out from our Subversion repository.

\n\n\n\n

Many thanks to our 14.3.4 contributors 

\n\n\n\n

emaralivejjj, and dcavins.

\n\n\n\n

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 27 Mar 2025 02:22:26 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"David Cavins\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:30;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"WPTavern: #162 – Jo Minney on Website Usability Testing for WordPress Projects\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=193251\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"https://wptavern.com/podcast/162-jo-minney-on-website-usability-testing-for-wordpress-projects\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:54757:\"Transcript
\n

[00:00:00] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress, the people, the events, the plugins, the blocks, the themes, and in this case, the efficacy of website usability testing for WordPress projects.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice. Or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.

\n\n\n\n

Today I bring you the first in a mini series of podcasts I recorded in person at WordCamp Asia in Manila. This flagship WordPress event brought together hundreds of WordPress professionals, enthusiasts, and all manner of interested parties under one roof for a three day event. One contributor day, and two days of presentations.

\n\n\n\n

I tracked down several of the speakers and workshop organizers and recorded them speaking about the subject they were presenting upon. I hope that you enjoy what they had to say.

\n\n\n\n

So on the podcast today, we have the first of those conversations, and it’s with Jo Minney.

\n\n\n\n

Jo based in Perth, Australia, is passionate about user experience, data-driven decision making, cats, pockets, and travel. She’s a small business founder, and works with organizations creating digital platforms with WordPress. She also freelances as a UX consultant. She volunteers with Mission Digital to address social issues using technology, and is an ambassador for She Codes Australia, promoting tech accessibility for women. Recognized as a 2023 Shining Star by Women in Technology, Western Australia, Jo is an international speaker on topics like user experience, accessibility, and gender equality. She’s committed to ensuring a seamless user experience, and today shares her insights from practical, everyday usability testing.

\n\n\n\n

Joe’s presentation entitled, Budget Friendly Usability Testing for WordPress, helped attendees understand what usability testing is, and clarified why it differs from other testing methods. She shares examples from her work showing how small changes can significantly impact user experience, which is better for you, the website builder, and your client, the website owner.

\n\n\n\n

We also discuss how usability testing can transform a website’s effectiveness by improving conversions. Joe explains the importance of recruiting novice users for testing, and highlights how usability testing pushes for real, user-centered, improvements.

\n\n\n\n

Towards the end, Jo share’s practical advice on when and how to integrate usability testing into your process. Advocating for early and iterative testing to preemptively address potential issues.

\n\n\n\n

If you’re looking to gain a deeper understanding of usability testing and its benefits, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast where you’ll find all the other episodes as well.

\n\n\n\n

And so without further delay, I bring you Jo Minney.

\n\n\n\n

I am joined on the podcast by Jo Minney. Hello, Jo.

\n\n\n\n

[00:04:06] Jo Minney: Hi. It’s good to be back again Nathan.

\n\n\n\n

[00:04:08] Nathan Wrigley: Yeah, you’ve been on the podcast before. But this time it’s different because this time we’re actually facing each other. Last time we were doing it on, you know, something like Zoom or something like that, but here we are staring at each other because we’re at WordCamp Asia. We’re in the Philippines, Manila. It is the second day of the event, kind of. We had Contributor Day yesterday. Today is presentation day. It’s the first day of the presentations, and you are doing one.

\n\n\n\n

[00:04:29] Jo Minney: I’ve done one actually. I did it at 11 o’clock this morning.

\n\n\n\n

[00:04:33] Nathan Wrigley: How did it go?

\n\n\n\n

[00:04:34] Jo Minney: It went really well, I think. I had very good feedback from it. Half of the things on my slides didn’t work. I think that’s normal for a conference though, and I’m pretty experienced now at just winging it, and rolling with it anyway, so. It was really exciting because it’s a topic that I’m super passionate about and I haven’t had a chance to speak about it at a conference before. So, yeah, it was really nice to be able to share something that I do on a day-to-day basis and can stand up there and really confidently talk about.

\n\n\n\n

[00:04:58] Nathan Wrigley: I don’t think I’ve ever spoken about this subject before in any of the podcasts that I’ve done. That is quite nice, and it’s novel. I’ll just introduce the topic. The presentation that you gave was called Budget-Friendly Usability Testing for WordPress. And obviously that sort of sums it up. We’re going to talk about usability testing.

\n\n\n\n

But before we do that, Jo, just to nail your colours to the mast a bit, tell us about you. Where you’re from. What you do for a job, and anything that you think is relevant to this podcast.

\n\n\n\n

[00:05:22] Jo Minney: Okay, I really like cats and pockets.

\n\n\n\n

[00:05:25] Nathan Wrigley: I saw that in your show notes. Why pockets?

\n\n\n\n

[00:05:27] Jo Minney: Okay. So I think pockets are a great example of something that can be both a fantastic and a terrible user experience. You are like, oh yeah, maybe I know what you’re talking about. But, let me ask, do you live with a woman?

\n\n\n\n

[00:05:39] Nathan Wrigley: I do.

\n\n\n\n

[00:05:39] Jo Minney: I know that’s a very personal question, sorry Nathan. But, how many times on average a month does she complain about not having pockets in her clothing?

\n\n\n\n

[00:05:48] Nathan Wrigley: Never, she carries a bag.

\n\n\n\n

[00:05:50] Jo Minney: Yeah, but why do we have to carry a bag, right? She has to carry a bag because her clothing doesn’t have pockets. So I spoke at a conference late last year, and I asked this question. This has been a life goal of mine, was to speak about pockets at a conference. And I managed to do it. I asked all of the women in the audience, hands up if you’ve ever thrown out clothes or gotten rid of them because they didn’t have pockets in? And every single woman stood up and was like, yes, I’ve gotten rid of clothes because they didn’t have pockets in.

\n\n\n\n

Most of the people that were there were men. And I said, stand up if you don’t have pockets in your clothes right now. And 400 men stayed seated. But this is an example of something where, yes, there’s a subsection of the population that’s experiencing this problem, but it’s a big problem for us. It’s very frustrating. You’re at a conference, you don’t want to have to carry around a handbag. So, pockets. They’re a great example of user experience.

\n\n\n\n

[00:06:45] Nathan Wrigley: Okay, I get it. I understand now. Tell us a little bit about your sort of day-to-day work, though. You work with WordPress, I guess.

\n\n\n\n

[00:06:51] Jo Minney: I do. So I run a small agency. We’re what I usually call a micro agency, and we have only three of us that are working on the WordPress team. We do website development, but specifically for charities, nonprofits, cause-based organisations, so a lot of social enterprises and that sort of thing.

\n\n\n\n

On top of that, I also do consulting for user experience research. I’m not a designer. UX and UI often get lumped together. They’re very different. UI is about the interface and what people see, and UX is about user experience and how people use things. And they can’t be completely separated, but they’re also very different.

\n\n\n\n

So I am lucky because I work in the niche that I work in, that I’m able to do a lot of usability testing and it’s something that a lot of people don’t get the experience to do. And so I thought I would share what I’ve been able to learn over having this sort of unique opportunity to do so much usability testing, and share with people how they can do it more cost effectively, but also the benefit that it can have for a project.

\n\n\n\n

[00:07:54] Nathan Wrigley: Let’s dig into it and I’m going to actually crib the questions which you posed to the audience today. You put four questions surrounding your subject. And the first one is this. And I’m sure that the listeners to this podcast, if they’re anything like me, they’ll probably have some impression that usability testing is a thing that you could do. And I think the word there is could, as opposed to do, do.

\n\n\n\n

I imagine most people have an impression of what it is, but whether or not they do it is another thing altogether. But that would then lead to this. What even is it? So what is usability testing, and what are you actually testing for? So that was a question you posed to the audience and now I’m throwing it right back at you.

\n\n\n\n

[00:08:34] Jo Minney: Yeah, it’s a good question. It’s probably the sensible place to start. So usability testing is not the same as user testing, or user acceptance testing. And it’s focusing on, how do we identify what the problems are with something that we have created?

\n\n\n\n

So a lot of UX research is focused on what we call quantitative testing. So, meaning we’re looking for quantities of something. It could be the amount of time it takes someone to do an action. It could be using heat maps. So we have a thousand users, let’s see where their cursors most often are going. Let’s see how often they scroll down the page. And quantitative testing is really good at showing you comparisons of whether one thing or another thing works better, but it’s not actually good at identifying what the problem is, only that there is a problem.

\n\n\n\n

So you can do a lot of testing and still not know what the problem is. Usability testing is different because it’s what we call qualitative testing. So it means that we’re not looking for big numbers, we’re not looking for lots of data. We are looking for really deep user experience examples. And in a nutshell, the way that that works is you recruit some participants, usually five people per round is ideal. And often I get asked, well, how can you have statistically significant data with only five people? That’s not the point of qualitative testing. The point of qualitative testing is not to have statistically relevant data, it’s to have the actual user experiences.

\n\n\n\n

So you recruit your people, you come up with your research questions and that’s the problem that you’re trying to solve or the question you’re trying to get an answer to. So, an example might be, are users going to recognise this label that I’ve used in my navigation? Is this button going to get clicked if I put it in this location? It’s often a thing that, if you’re working with a customer to develop a website for them, what we find is that often the things that we are testing for in usability testing are things that the customer and I disagree on, or things where they weren’t sure when they made the decision in the first place. And they’re a great example of things that you want to test for.

\n\n\n\n

But the research questions are only the first part because if I say, the example I used in my talk today is that we had a support service directory. And this was for people who are experiencing family domestic violence. And they didn’t want to use the term directory because it’s a very harsh term. So they had called it support services, which sounds, on the surface like a good idea, but a lot of the people that are using their platform are not English first language. And they also tend to be in a really stressed out state as you can imagine.

\n\n\n\n

And so what we actually found is that when we said to them, can you imagine you’re helping someone, can you help them find a legal service that will enable them to get a restraining order or something like this? What we found is that repeatedly they didn’t go to support services to start with. The minute we changed that to service directory, they started to find the thing that we wanted them to click on.

\n\n\n\n

It’s such a small change, but it made a huge impact, the usability. Now, we found that out after the second test, which meant that we were able to change it after the second test, and then we had three more tests where we could show that every time they were able to find the thing that we wanted them to be looking for.

\n\n\n\n

So this is an example where the research question and the research task or the activity that we’re giving to the user, they’re not the same thing. If we said to them, find support services, find the service directory, if we use that language, obviously they’re going to look for that label. But instead we asked them to do an activity that would hopefully take them to the place we wanted them to go to.

\n\n\n\n

And then finally the last step is to iterate that and to actually take that data and make decisions, and make improvements to the project iteratively to try and make it better. That’s the goal, right? Is to find what the problems are and fix them. So we still have to work out how to fix them, but at least we know what the problems are and not just that people were not clicking on the button and we don’t know why.

\n\n\n\n

[00:12:27] Nathan Wrigley: I have a couple of follow up questions. First thing isn’t the question, it’s an observation. So that’s really cleared up in my head what it is, so that’s amazing. But one of the things that I want to know from that is, do you filter out people who, let’s say for example, you’ve got a website, the kind that you just described. Do you filter out people who are not the target audience? So in other words, I don’t know, maybe that’s not a perfect example. But let’s say, on some websites, would it be better to have really inexperienced users of the internet as your five candidates?

\n\n\n\n

[00:12:59] Jo Minney: That is exactly the ideal person.

\n\n\n\n

[00:13:02] Nathan Wrigley: So people who are just, I’ve never come across this before. You want people who are potentially bound to be confused. If somebody’s going to be confused, it’s you five.

\n\n\n\n

[00:13:10] Jo Minney: That is the ideal participant for a usability study. And often people say, I want to start learning how to do usability testing. Where should I start? And my advice to them is always the same, with your mum.

\n\n\n\n

Recruit a person that’s a generation older than you, because I can guarantee that in most cases, sorry to generalise, but they tend to be less efficient and less used to technology because they haven’t grown up with it. So for millennials and younger, we have had technology for all of our adult lives and most of our childhood.

\n\n\n\n

For my parents’ generation, they have had to learn that technology as an adult, and so their brains have a different mental model, and they don’t take for granted things that we take for granted. Like, when I click the logo, it will take me back to the homepage. I know that, you know that, your mum might not know that.

\n\n\n\n

And I think that is something that is really valuable is to understand the benefit of testing with people who aren’t as experienced with technology. Who don’t speak English as a first language. Who are experiencing some kind of accessibility challenge. Whether that’s using assistive technology, being colorblind. Things like that are really good things to try and get some cross-sectional representation in your testing participant pool.

\n\n\n\n

[00:14:25] Nathan Wrigley: So the idea then is that you’ve got these novice users who hopefully will immediately illustrate the point. And it’s driven by questions. So it’s not just, we are just going to stand over your shoulder and watch you browse the internet, and when you do something and describe, you’re looking for something and you can’t find it, that’s not how it’s done.

\n\n\n\n

It’s more, okay, here’s a defined task, do this thing and we’re going to ask you to do five things today, we want you to achieve them all and describe what you’re doing, but it’s more of that process.

\n\n\n\n

And then the idea is that you go from an imperfect website, slowly over time, iterating one problem after another towards a better website. The goal is never reached. It’s just an iterative process.

\n\n\n\n

[00:15:01] Jo Minney: That’s it. Perfection does not exist.

\n\n\n\n

[00:15:03] Nathan Wrigley: Okay, so that’s interesting. So we start with the novice. We’ve got a small cohort of people. We ask them specific questions, and we get feedback about those specific questions.

\n\n\n\n

So the other thing that I wanted to ask then is, when do you do it? Because it feels like you need to build the website first, then show it to people. So there’s got to be something. This isn’t process of discovery prior to the website. You need pixels on pages. Buttons that are potentially mislabeled or what have you. Is that the case? Build first, then usability test afterwards. There’s no usability testing prior to the initial build.

\n\n\n\n

[00:15:37] Jo Minney: It’s kind of a trick question because you can usability test at most stages. Probably the only stage you can’t usability test at is when you don’t yet have a site map. Having said that, my recommendation is, assuming you had unlimited budget and unlimited time, I would do at minimum two rounds of usability testing, and I would do one before you have any design, and I would do it just using wire frames.

\n\n\n\n

So we build interactive wire frames using WordPress. So for the demo that I did today, I spun one up. I used InstaWP. You can get like a seven day website or something through there. It took me 42 minutes to build out the website in just the block editor, with no design or anything, just the layout of it. And I was eating a loaded potato at the time. So if I can do that in 42 minutes, eating a loaded potato, and that’s not my job, I think it’s a pretty efficient and cost effective way of being able to do early usability testing.

\n\n\n\n

And often the thing that we’re testing for there is like, have I got the right navigation structure and hierarchy? Are the labels that I’m using sensible for people? Do they fit with the mental models of what our users are actually expecting? And the benefit of doing it that early is that when you don’t have a design applied, it’s a lot easier to identify problems.

\n\n\n\n

Because there is a thing that happens in human psychology, and there’s a lot of psychology in user experience. And there’s a thing that happens where if something’s pretty, we will say that it is easier to use. Our experience is that it’s easier to use because it’s nice to look at. And that’s great. That means that UI is really important, but it also means that, if you have a really nice UI, it can mask problems that you have in the background. It is great that things can be easier if they’re pretty, but imagine how much easier they would be if they worked well and were pretty, that’s what we should be aiming for.

\n\n\n\n

So typically we would do one round of usability testing when we just have a framework and just have the navigation. When someone lands on a page, sometimes we’ll just write a message on there and say, congratulations, you found the service directory where you can find this thing, this thing, this thing, this thing, and then we put a little button there. When they click it, it releases confetti on the page. So they get a dopamine hit and it’s like, yay, I completed the activity. You don’t have to have all of your content in place to be able to do testing, and identify early that you’ve got problems that you need to fix.

\n\n\n\n

[00:18:02] Nathan Wrigley: It sounds almost like an overly complicated design is the enemy of usability. We are drawn towards beautiful, but sometimes maybe beautiful just is overwhelming. You know, there’s lots of colors on the page, the buttons get hidden, there’s just too much text on there. Looks great, but it might be sort of masking the thing that you’re really trying to show. And it feels like there’s this tight rope act of trying to balance one thing against the other. Yeah, that’s really interesting.

\n\n\n\n

So, with the wire frame thing, in that case, you are really just testing, can the person find the thing? But I’m guessing once you’ve move beyond the wire frame stage and you’ve got a website, it’s literally out on the internet, it’s functional. It’s exactly what we hope would be the perfect version, then you’re drilling into more detail. You know, can a person find this resource? Do they know that this button is what we are intending them to click? Those kind of things.

\n\n\n\n

[00:18:49] Jo Minney: Yeah. So I think things like searchability and discoverability are much easier to test for in the early stages when you’re just doing, say, using like a wire frame or a prototype. And things like usability, you really do need to have the complete designed product to be able to test for them well. And I say that, there’s actually kind of four categories of the different types of tasks that we can do. I’ll give you the link to the blog post that I wrote that has all of this in detail because we do not have time to go deep into that today.

\n\n\n\n

But things like, does my search form work the way that I want it to? They’re the sorts of things that you do have to do some development to be able to get them working. So it’s not always practical to do that at the very early stages when you do want to start testing your navigation and stuff like that.

\n\n\n\n

Something that you can do is if you’ve only got enough budget, or enough time, to be able to do, say, five usability tests total, you could do two of them early, and then you could do three of them towards the end, after you have the majority of the design and the development work in place. Users are pretty forgiving when they’re doing a usability test. If you say, this is still a work in progress, there might be a couple of pages that look odd and aren’t quite ready to go live yet. If you get somewhere and you’re not sure, you can just go back, it’s okay.

\n\n\n\n

It’s not meant to be a perfect experience. The point is that you are getting their real time thoughts and feedback as they’re doing it. So it’s really important that you try and encourage them to follow the think aloud protocol, which is really outlining every single thing that goes through they’re head, just brain dump on me please. Like, I just want to hear all of your thoughts and thought processes.

\n\n\n\n

And the only thing as the facilitator that I will say during a usability test is, tell me what you’re thinking. And other than that, I am completely silent. So even when it comes to giving them the activity, so if I’m asking you to do an activity like help somebody find a legal service that they can use in this particular state. I would actually send that task to you via the chat or something like that.

\n\n\n\n

I would send the task to you via the chat, and then I would get you to read that task back to me, because I don’t want you to be thinking about how I’m saying it. I want you to be able to go back to that task and look at it, and think about it, and process everything inside your own head. But I want you to be telling me all of that.

\n\n\n\n

So often we’ll find people ask questions during that, like, what should I do next? And the answer to that is really hard to train yourself out of replying to them with anything other than, what would you do if I wasn’t here? And I think that’s the hardest thing about learning to facilitate a usability test.

\n\n\n\n

[00:21:24] Nathan Wrigley: Yeah, and in a sort of an ideal scenario, you wouldn’t even be in the room. But in some strange way, you’d be able to just get into their head and say, okay, now I want you to do this, but every time you’ve got problem, just figure figure it out, and we’ll watch. But you have to be there because you have to be able to listen to what they’re saying and what have you. Yeah, that’s curious.

\n\n\n\n

[00:21:40] Jo Minney: Yeah, and we do, at the end of each activity, we’ll then ask them for feedback on how they found it. If they had any suggestions or things that they didn’t say out loud while they were doing it that they wanted to share with us. How confident were they with the activity, and did they think that they were successful in it, which is a really good way of telling, I wasn’t really sure what the activity was meant to do. Or I wasn’t really sure if what I found really met the needs that I was looking for.

\n\n\n\n

Then we ask them, how certain are you with the answer that you just gave? And if they’re like, three out of five, you’re like, alright, this person didn’t understand what it was that I was asking them to do in the first place. Maybe the problem is actually with my question and not with the website.

\n\n\n\n

[00:22:18] Nathan Wrigley: Okay, so the whole process is, you’re not just asking for feedback about the website, there’s a whole process of asking for feedback about the process as well which is, that’s kind of curious. Meta, meta processing.

\n\n\n\n

[00:22:27] Jo Minney: Very meta, for sure.

\n\n\n\n

[00:22:29] Nathan Wrigley: We’re in an industry where at the moment everything is trying to be automated.

\n\n\n\n

[00:22:32] Jo Minney: Is this the AI question?

\n\n\n\n

[00:22:34] Nathan Wrigley: Well, no, this feels like it’s a very human thing. You need actual bodies on the ground. So it’s really a question of economics. Because I’m wondering if this often turns out to be a fairly expensive process. And because of that, I wonder if people push against it, because the budgets may not be there. If this is something that clients typically would say, well, okay, tell me how much that’s going to cost. It’s a nice idea but, okay, it’s going to cost us X thousand dollars because we’ve got to put five people in a room and we’ve got to pay for your time to moderate the event, and come up with the questions and so on.

\n\n\n\n

How do we manage that in an era of automation where everything is, the dollar cost of everything has got to be driven down. This feels like the dollar cost is going up because there’s humans involved.

\n\n\n\n

[00:23:14] Jo Minney: Yeah, it’s a great question. Have you ever run a Google ad before?

\n\n\n\n

[00:23:17] Nathan Wrigley: It’s expensive.

\n\n\n\n

[00:23:18] Jo Minney: It’s very expensive. It’s very expensive to get a new lead. It’s a lot more cost effective to convert a lead than it is to get a new one. And the point of usability testing is to improve conversion of people being able to do the thing that you want them to do on the website.

\n\n\n\n

So my first answer to that would be, look at the cost benefit analysis. It’s worth it in most cases to do usability testing. Something that we’ve found with positioning of usability testing is that if we offer it as an add-on, then people don’t want to do it because they don’t want to pay for it. They see the value in it necessarily. However, we don’t offer it as an add-on.

\n\n\n\n

We actually have it just as part of our proposal right from the start where we’re like, this is part of the point of difference between what you get when you build with us versus when you build with someone else. They’ll tell you what they think is the best way to do something. If we are unsure about the best way to do something or we disagree on it, it’s not going to ultimately be me making a decision or you making a decision. We’re going to test and we’re going to get real evidence from customers.

\n\n\n\n

And they’re the ones that are going to be developing it so you know that the final result that you get is going to be the best possible version of the website. And often we might be more expensive than our competitors, but people will go with us because we are not competing on price. We’re competing on offering a service that nobody else is offering. I asked today in the presentation who has done usability testing before and not a single person put their hand up.

\n\n\n\n

[00:24:42] Nathan Wrigley: That would’ve been my assumption actually.

\n\n\n\n

[00:24:44] Jo Minney: Yeah. And honestly, I don’t think any of the people that we’re competing against in the industry that I’m in are doing the same thing as what we’re doing. And so it is very much a point of difference. I think it’s not a well understood technique, but it’s so valuable that it is a really easy way to position yourself as being different, and really actually do a better job for your customers, for the people that you’re building websites for. Because ultimately you are going to have a better result at the end of it.

\n\n\n\n

[00:25:12] Nathan Wrigley: The interesting thing there is, when I say usability testing, somehow in my head there is a connection between that and accessibility. And that’s not where I’m going with this question, but there’s just something about it being unnecessary. And I’m not binding that to the word accessibility. What I’m saying is clients often think, I don’t need to do that. Obviously, we’re moving into an era where legislation says otherwise. But I can just leave it over there. I don’t need to worry about that, usability testing, not for me.

\n\n\n\n

However, the lever that you’ve just pulled, it completely changes the dynamic because you’ve pulled an economic lever, which is that if we can get everybody to follow this action, I don’t know, fill up the cart with widgets and then press the buy now button, and go through the checkout process. If that’s the thing that you’re usability testing, you’ve made direct line. You’ve joined up the dots of, okay, user, money.

\n\n\n\n

So it’s not just about it being a better website so that people can browse around it all day. It’s also about connecting the economics of it. So the usability is about people buying, converting, getting the resource. And so there might not be an economic transfer there, but it will be some benefit to your business. There might be downloading that valuable PDF that you want everybody to see or whatever.

\n\n\n\n

So that’s kind of interesting. That’s changed my thoughts about it a little bit. And it is more about that. It’s getting an understanding of what you want out the website, getting an understanding of what you think should be happening is actually possible and happening. Have I sort of summed that up about right?

\n\n\n\n

[00:26:40] Jo Minney: Yeah, I think that’s a really good summary it. I think the only thing I would add there is that a lot of the times the conversation around accessibility and the conversation around usability do have a lot of crossover. They are fundamentally different, but one of my favorite examples is actually something that I think applies to both.

\n\n\n\n

So two of the common problems that we find very early on in design is often to do with colour. And so one of them is colour contrast and the other one is colourblind accessibility. And I think it’s a great way to get people to change their thinking, and their perception of the way we have these conversations is, if you have an e-commerce website, Nathan, what would you say if I said to you, I can instantly get you 8% more customers?

\n\n\n\n

[00:27:23] Nathan Wrigley: Yeah, I’d say that’s great.

\n\n\n\n

[00:27:24] Jo Minney: And I’d be like, cool, change your buttons so that colourblind people can read them, because 8% of men are colourblind. So actually it’s only 4% of people because assuming half of them are men, then you’ve actually only got 4%. But still 8% of men are colourblind, that’s a big percentage of the population. So if your button is red and green, then you’re going to have a problem. People are not going to be able to find the thing that you want them to click to give you their money.

\n\n\n\n

Likewise, if you want people to be able to use your website when they’re outside and using their phone in sunlight, then you need to have good colour contrast on your website. So often this conversation is around, well, I don’t have people who are disabled, I’m not trying to cater to people that are using screen readers. It doesn’t matter because not very many people that are using my website are blind. And I’m like, well, I’m not blind but I still struggle when I’m looking at something where the text is too faint, and I’m looking at it on my phone, and I’m standing outside in the sun because we naturally don’t visualise as much contrast there.

\n\n\n\n

So I think being able to position it in a way where people can see the value to themselves. I want to use a website that has better contrast, and so it makes that conversation easier with a customer.

\n\n\n\n

[00:28:32] Nathan Wrigley: I hadn’t really drawn the line between accessibility and usability, but it seems like they’re partner topics, basically. There’s like a Venn diagram, accessibility over here, usability over here, with a massive overlap somewhere in the middle.

\n\n\n\n

[00:28:43] Jo Minney: A hundred percent. That’s why we always encourage having that sort of intersection between accessibility and usability in our testing pool. So we always try and have one person who experiences some kind of accessibility challenge, whether that’s being colourblind, hearing impaired, if we’ve got a lot of video on the site, for example. And I think that it can be a really valuable way of collecting multiple data points at one time.

\n\n\n\n

[00:29:04] Nathan Wrigley: When you have a client that comes to you and they’ve obviously, by the time that they’ve signed the contract with you, usability is already part of the deal it sounds like. How do you decide, what’s the thing in round one that we’re going to pick up on? Is there sort of like a copy book that you go through? Is it like, I don’t know, buttons or the checkout or colour or? Where do you go first? And sort of attached to that question a little bit, this process never ends, right? In theory, you could do usability testing each month. But I was wondering if you did it like on an annual cycle or something, yeah.

\n\n\n\n

[00:29:34] Jo Minney: If you’re not changing stuff super often, I would say, there’s probably more cost effective ways that you can collect information about it. Typically we encourage, long-term, have things like heat maps and stuff like that. They will help you identify if there is a problem. If you know that there is a problem, let’s say you’ve got a heat map and you’re like, why is nobody clicking on our buy now link? That is a good instance of where you would do some usability testing to figure out what the problem is.

\n\n\n\n

But if everything’s working and you’re getting conversions, then probably doing usability testing isn’t the most valuable thing that you can do. If you’re looking at making significant changes to the way that your website works, that’s another good time to introduce a round of usability testing. So we don’t do it just for the sake of doing it. We do it because we need to do it, and because there’s value in it for our customers.

\n\n\n\n

[00:30:18] Nathan Wrigley: Do you keep an eye on your customer’s websites so that you can sort of get ahead of that, if you know what I mean? So let’s say that you put heat maps in, very often that would then get handed over to the client and it’s somebody in the client’s company’s job is to check the heat maps. Or do you keep an eye on that and, oh look, curiously, we’ve seen over the last 12 months, yeah, look at that. There’s not much going on over at that very important button over there. Let’s go back to the client and discuss that. That could be another round of usability testing.

\n\n\n\n

[00:30:44] Jo Minney: Yeah, so I think we’re not uncommonly, a lot of agencies now do have some kind of retainer program where they will maintain communication and assistance for their clients. So we call them care plans. I know everyone has a different name for it. I think it’s pretty standard now in the WordPress ecosystem. It’s a very common thing to do.

\n\n\n\n

As part of our care plans we have scheduled meeting with our clients once every three months or six months or 12 months, depending on how big the site is. And one of the things that we’ll do at that time is review their analytics, review the heat maps, that sort of thing.

\n\n\n\n

Ask them, have they experienced any problems? Have they noticed a downturn in the people signing up for the memberships? Or have they noticed, have they had any complaints from people about something? Is there anything that they’re not sure about? Are they going to be changing the way that they operate soon, and introducing something new into their navigation that we need to consider where does that fit in the grand scheme of things?

\n\n\n\n

I find if we’re having those conversations early and we are the ones starting those conversations, then often we are coming to them with solutions instead of them coming to us with problems.

\n\n\n\n

[00:31:46] Nathan Wrigley: I think that’s the key bit, isn’t it? If you can prove to be the partner that comes with, we’ve got this intuition that there’s something that we can explore here. You are proactive, you’re going to them not, okay, anything you want? Is there anything we can help you with, you know? And the answer to that is always, not really.

\n\n\n\n

Whereas if you go and say, look, we’ve got this idea, based upon some data that we’ve seen, we’ve got heat maps and what have you, shall we explore that further? That seems much more credible. You are far likely, I think to have an economic wheel which keeps spinning if you adopt that approach, as opposed to the is there anything you want doing, kind of approach?

\n\n\n\n

[00:32:18] Jo Minney: Absolutely. I think every developer’s worst nightmare is having a customer come back to them and say, I’ve just noticed that I haven’t had anyone send through anything in my contact form for the last three weeks. And I’ve just noticed, when I went and tested it, that the contact form’s not working anymore.

\n\n\n\n

I’m sure I’ve had that nightmare at least once. And I think if you can avoid being in that situation where they’re coming to you with something like, oh my God, it’s broken, how do I fix it? If instead you can go to them and be proactive about it and just kind of keep your finger on the pulse.

\n\n\n\n

Yes, there’s a little bit of ongoing work, but like honestly, I jump on, I check all of the analytics maybe once every three months for my clients. I set aside one day to do it. Go and have a look through that. If I notice anything, I can usually fix it, make sure that we’re collecting the data again before it becomes a problem.

\n\n\n\n

And then that way when there is an issue, we’ve got data that we can back up and we can start from there and go, okay, yes, we’ve identified, here’s where we need to do more research. And then we can apply something like usability testing to that.

\n\n\n\n

[00:33:16] Nathan Wrigley: How much of your time on a monthly basis, let’s say as a percentage, do you spend on usability of existing clients? Is this something that is a lot of the work that you do? What I’m trying to figure out here is, for people listening, is this something that they can turn into a real engine of their business?

\n\n\n\n

Because you might get two days, three days work a week just on the usability of pre-existing clients. So in a sense, you’ve created interest and work out of thin air, because these clients already exist, they’re in your roster, but there’s a whole new thing that we can offer to them. So, how much do you spend doing it?

\n\n\n\n

[00:33:50] Jo Minney: Yeah, so it’s a great question. I would say it’s cyclical. I couldn’t really say like, I always spend this much amount of time. There might be entire weeks that go by where my whole life is usability testing, and there might be a month that goes by where I don’t do any. And it really does often depend on where our projects are in the life cycle at any particular time.

\n\n\n\n

So we’re often working on projects that will span over years. And because of that, they might introduce a completely new part of their project. And that’s a good time to reintroduce that usability testing. As I said, like you don’t really want to do it just for the sake of doing it, but at the same time, if you can show that there will be value in making a change, if you can show that there is a lost opportunity somewhere, then a hundred percent you can sell that, the value to them of, hey, you could spend $1,000 now, but you could be earning $5,000 more every month for the next several years. That’s a no-brainer, right?

\n\n\n\n

People are happy to make investment if they can see that there’s going to be a cost benefit for them in the future. Or if the thing that they’re trying to do is maybe their government website or something, and they’ve got a particular thing that they need to meet, they’ve got KPIs. If you can show that you are able to help them meet those KPIs, then they are going to invest in doing that thing that you’re trying to offer them.

\n\n\n\n

[00:35:02] Nathan Wrigley: We talked about the Venn diagram of accessibility and usability, and the fact that there’s a lot of an overlap. In the year 2025, this is a year where, in Europe at least anyway, accessibility, the legal cogs are turning and the screw is getting tighter. So accessibility is becoming mandated in many respects.

\n\n\n\n

And I was wondering about that, whether there was any kind of overlap in legislation on the usability side. The accessibility piece is obviously easier to sort of define in many ways, and it’s going to become less optional. But I was wondering if there was any usability legal requirements. I don’t know quite how that would be encapsulated.

\n\n\n\n

[00:35:41] Jo Minney: Sort of. An example that comes to mind is that there are a lot of practices that historically have been really prevalent on the internet, and they’ve been identified as being really bad for usability. And they’ve actually now been identified as being so bad that they’re almost evil. And they’ve started to crack down on those.

\n\n\n\n

And an example of that is, have you ever tried to unsubscribe from a gym? It’s basically impossible. And so now if you, at least in Australia, I know if you have a subscription on your site, you legally have to have a way of people being able to unsubscribe without having to call someone or send an email somewhere.

\n\n\n\n

And that is an example where that is actually usability. And I think there are definitely things where we are picking up on stuff that is maybe a shady way of working, and a shady way of developing websites. And those things are starting, we’re starting to cut down on them.

\n\n\n\n

I’m not sure if that is purely usability, or just like not being being a bad person. But I think that there is definitely, the only reason that we know that those things are a problem is because we have all had those bad experiences. And ultimately that’s all user experience is, it’s just how good or bad is experience of using a platform.

\n\n\n\n

[00:36:49] Nathan Wrigley: I share your frustration with those kind of things because I’ve been through that process. Not just canceling a subscription but, I don’t know, something that you’ve got yourself accidentally into and you don’t want to be on that email list anymore. Seemingly no way to get off it.

\n\n\n\n

[00:37:01] Jo Minney: They’ve changed the unsubscribe link so it doesn’t have the word unsubscribe in it. And now you just have to look for the word that’s not underlined, or highlighted in a different colour. That when you hover over it, something pops up and you’re like, oh, that’s the link. That thing that says manage preferences down the bottom, hidden in the wall of text. That is a shady practice. That is a poor user experience just as much as it’s just a bad thing to do.

\n\n\n\n

[00:37:23] Nathan Wrigley: I think it’s got the label of deceptive design now. It used to be called dark patterns, didn’t it? But deceptive design. This notion of doing things in such a way to just deliberately confuse the user so that the green big button, which is the exact opposite of what you want to click, is the one which is visible. And then there’s this tiny little bit of greyed out text, which is the one which, clearly, you’ve ended up at this page, that’s the one you want. That’s the enemy of usability in a way. But for the business, it may be exactly what they want because it keeps the economic engine rolling.

\n\n\n\n

Yeah, that’s interesting. I wonder if there’ll be more legislation to tighten those things up so that they’re not allowed. Yeah, that’s fascinating.

\n\n\n\n

Last question. We’re running out of time. Last question. And it refers to something that we talked about earlier. I’m guessing this really never ends. This is a journey which you begin, you tweak it, you do a little bit, you fix, and then you start again a little bit later and what have you. Is there ever a moment though where you go to a client and say, we did it? This site, as far as we’re concerned, is now perfect. Or is it never a goal? It’s a journey and never a destination.

\n\n\n\n

[00:38:23] Jo Minney: I think you’ll probably agree with me here, Nathan, that it’s basically impossible to be perfect, because ultimately someone is always going to have a different opinion. Someone’s always going to think that your shade of purple is too dark. Someone is always going to dislike the font that you chose, because it’s not loopy enough, or it’s too loopy, right?

\n\n\n\n

So I don’t think there is such a thing as perfect. But through doing five usability tests, five people, you can pick up at least 85% of the potential problems with your design. And I’m not aiming for perfect, but I know that for me, if I can confidently say to my customers that I’ve been able to identify 85% of the potential problems that they might experience in their project, then they can confidently go away and say, hey, we’re pretty happy with what we’ve got.

\n\n\n\n

We can definitely improve on that over time. But that is a huge milestone to be able to hit. And being able to have enough data, and enough research to confidently say that, I think is a really big win both for us and for our customers.

\n\n\n\n

[00:39:26] Nathan Wrigley: Sadly, Jo, time is the enemy, and I feel like we’ve just pulled back the lid a teeny tiny bit on the big subject of usability. Honestly, I reckon I could talk for another two hours on this at least. You know, because you’ve got into colours there and all sorts, and there’s just so many tendrils that we haven’t been able to explore. But we’ve prized it open a little bit, and so hopefully the listener to this has become curious. If they have, where would they find you? What’s a good place to discover you online?

\n\n\n\n

[00:39:53] Jo Minney: Yeah, so I think the best place is to hit up my personal blog, jominney.com. So it’s J O M I N N E Y .com. And I have a lot of stuff on there about usability, usability testing. I have a blog post that I wrote specifically for this talk that shares all of the resources that I used to put together the slides and everything. The talk itself will be on WordCamp TV. If you’re on socials and you want to hit me up, pretty much the only platforms I’m active on nowadays are LinkedIn and Bluesky, and I’m Jo Minney on both of them.

\n\n\n\n

[00:40:23] Nathan Wrigley: Jo Minney, thank you so much for chatting to me today. I really appreciate it.

\n\n\n\n

[00:40:27] Jo Minney: You’re most welcome, Nathan. Thanks for having me again.

\n
\n\n\n\n

Today, I bring you the first in a mini series of podcasts I recorded in person at WordCamp Asia in Manila. This flagship WordPress event brought together hundreds of WordPress professionals, enthusiasts and all manner of interested parties under one roof for a three day event – one contributor day, and two days of presentations.

\n\n\n\n

I tracked down several of the speakers and workshop organisers, and recorded them speaking about the subject they were presenting upon. I hope that you enjoy what they have to say.

\n\n\n\n

So on the podcast today we have the first of those conversations, and it’s with Jo Minney.

\n\n\n\n

Jo, based in Perth, Australia, is passionate about user experience, data-driven decision-making, cats, pockets and travel. She’s a small business founder, and works with organisations creating digital platforms with WordPress. She also freelances as a UX consultant. She volunteers with Mission Digital to address social issues using technology, and is an ambassador for She Codes Australia, promoting tech accessibility for women. Recognised as a 2023 Shining Star by Women in Technology Western Australia, Jo is an international speaker on topics like user experience, accessibility, and gender equality. She’s committed to ensuring a seamless user experience, and today shares her insights from practical, everyday usability testing.

\n\n\n\n

Jo’s presentation, entitled Budget-Friendly Usability Testing for WordPress helped attendees understand what usability testing is, x and clarified why it differs from other testing methods. She shares examples from her work, showing how small changes can significantly impact user experience, which is better for you, the website builder, and your client, the website owner.

\n\n\n\n

We also discuss how usability testing can transform a website’s effectiveness by improving conversions. Jo explains the importance of recruiting novice users for testing, and highlights how usability testing pushes for real, user-centered improvements.

\n\n\n\n

Towards the end, Jo shares practical advice on when and how to integrate usability testing into your process, advocating for early and iterative testing to preemptively address potential issues.

\n\n\n\n

If you’re looking to gain a deeper understanding of usability testing and its benefits, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

WordCamp Asia in Manila

\n\n\n\n

Jo’s WordCamp Asia 2025 presentation: Budget-Friendly Usability Testing for WordPress

\n\n\n\n

InstaWP

\n\n\n\n

Think Aloud Protocol

\n\n\n\n

Jo Minney’s website

\n\n\n\n

Jo on Bluesky

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 26 Mar 2025 18:37:05 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:31;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:102:\"Do The Woo Community: Building Trust and Converting Sales with Simple UX Decisions with Marc McDougall\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93465\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:101:\"https://dothewoo.io/building-trust-and-converting-sales-with-simple-ux-decisions-with-marc-mcdougall/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:198:\"In this episode of Woo DevChat, hosts discuss UX design and CRO with Marc McDougall, who shares insights on common misconceptions, mistakes, and the evolving role of AI in enhancing user experience.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 26 Mar 2025 15:58:22 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:32;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"Do The Woo Community: Get Ready for the Atarim Web Agency Summit 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93450\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"https://dothewoo.io/blog/get-ready-for-the-atarim-web-agency-summit-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:359:\"The Atarim Web Agency Summit 2025, scheduled for April 7-11, is a free virtual event for web professionals. Featuring over 40 expert-led sessions, it offers actionable insights for agency growth, networking opportunities, and access to industry leaders. Registration is free, with replay options available, making it essential for anyone in the digital space.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 26 Mar 2025 15:08:27 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:33;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:135:\"HeroPress: With open arms – friendships in the WordPress community – Su atviromis rankomis – draugystės WordPress bendruomenėje\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://heropress.com/?post_type=heropress-essays&p=7820\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:180:\"https://heropress.com/essays/with-open-arms-friendships-in-the-wordpress-community/#utm_source=rss&utm_medium=rss&utm_campaign=with-open-arms-friendships-in-the-wordpress-community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:19273:\"\"Pull

Šį rašinį galima rasti ir lietuvių kalba.

\n\n\n\n

Truth be told, unlike my husband, I have never been the most social person. At a party, you’ll usually find me talking to the dog (or cat). Throughout my life, I’ve only had a few close friends, and I’d rather be reading a book than going to a concert. While WordPress has been a huge part of the growth of my business, I’d like to take this opportunity to discuss something much more important – the friendships that I have formed through this wonderful community.

\n\n\n\n
\n

Due to WordPress, I have some truly spectacular friends in my life.

\n
\n\n\n\n

While we may have started as strangers, we moved into attending each other’s weddings, laughing until we’re crying while packing hundreds of swag orders, holding hands in a hospital bed and being there for each other through thick and thin. Being a privacy lawyer, I won’t name any names here but you’ll probably be able to tell pretty quickly if I’m writing this about you. 

\n\n\n\n

A little backstory 

\n\n\n\n

When I was finishing up law school, I worked at a small web design agency in Chicago as their COO. I met my husband, Hans, who was the owner of a different agency when he came to buy us out. It was love at first sight (yes, really) and we have been inseparable ever since. We shared our struggles and annoyances over dinner one night – writing Privacy Policies for clients was monotonous for me and he had no idea what to do when a client asked him about website policies. So we created Termageddon – an auto-updating website policies solution for agencies and their clients. Since we started an agency partner program, we knew that we had to find agencies who would be willing to try our new product and that’s when we came across WordCamps and the WordPress community. 

\n\n\n\n

Our first WordCamp 

\n\n\n\n

WordPress has a huge community and going to a large WordCamp such as WordCamp US when you don’t know anyone can be really scary (especially for an introvert like me) so we thought that we’d get our feet wet with a smaller WordCamp nearby. Enter WordCamp Jackson, Michigan.

\n\n\n\n
\n

Driving into the most adorable small city that we have ever visited, we were very nervous – what if no one wanted to talk to us? 

\n
\n\n\n\n

These fears were quickly dispelled when we walked into a room with about 30 friendly faces. Even the mayor was in attendance! During a break, we all sat on couches and our new friends helped us come up with the design for our very first swag item: a t-shirt with a pirate asking “Arrrr you compliant?”. I still smile every time I put it on. The next thing we know, the informative presentations are over and we’re all piling into cars and going to an escape room. The friendships formed during that event have lasted many years. In fact, one of our friends from that very first WordCamp helped us build our chicken coop. 

\n\n\n\n

Come on over! 

\n\n\n\n

A while later, my husband went to London and met a friend through a non-WordPress event and they truly hit it off (seriously, they have a standing call twice per month for five years now). A few months later, it was time for our first WordCamp US and our friend flew from the UK to Chicago to stay with us and our plan was to take a road trip and drive from our home to the WordCamp. Well, it just so happened that his other friend who was also going to WordCamp (someone we haven’t met before), missed his flight. Our friend called us to explain the situation and asked whether he could change his flight to Chicago, stay with us and join our road trip. We said “come on over!” Well, that missed flight led to the best trip of all time and a lifelong friendship.

\n\n\n\n

I’ll always remember him walking me to the store to buy some tea on a cold evening, all of us posing for a picture next to the St. Louis arch, hanging out in various hotels and Airbnb’s throughout the years, sharing stories from our youth, marveling at the excitement and joy of growing families, and supporting each other’s business ventures. We’ve seen each other many times throughout the years on various trips and WordCamps and I think of us as our core group at these events – a safe space amidst all of the chaos. 

\n\n\n\n

Better together 

\n\n\n\n

When you start establishing yourself in an industry or a community, you may think of other people in the space as competitors. While it’s certainly not the best trait that humanity has to offer, I think that this happens more frequently than we would like to admit. When I was new in the WordPress community, there was an established privacy attorney who had been a part of that community for much longer than I have. Going to WordCamp US, I knew that she was going to be giving a speech on the California Consumer Privacy Act and how to comply with this privacy law. To be honest with myself and you, I was extremely nervous about meeting her. What if she thought that I was a competitor? What if she disliked me? What if there’s not enough room for two privacy lawyers at this event? Should I just hide throughout the entire event to make sure that she doesn’t see me? 

\n\n\n\n

It’s true that we create these extreme scenarios in our minds but reality is usually much different (and less scary). We quickly bonded over the fact that we were the only two people there who knew what CCPA even is and, by the end of the night, we were jammed together in an Uber going to a bar. Throughout the years, we have supported each other’s projects, participated in long evenings of conversations, shared our struggles and wins. Due to her kindness and welcoming nature, we did not head towards competition but are able to enjoy the benefits of a wonderful symbiosis and a true friendship. 

\n\n\n\n

Family for life 

\n\n\n\n

Hanging out with your friends at WordCamps is fun but it’s even more fun when your friendship progresses to the point where your friends fly over to hang out at your home. Well, in this case, we only got to hang out for one day before my friend got very sick. Not the “I have the flu” kind of sick, the over a week in the ICU and months in the hospital kind of sick. 

\n\n\n\n

Throughout that time, we met her family, who stayed with us for a while as we live very close to the hospital. While this time was certainly grueling for everyone involved, it also shed a new perspective on how friends get through tough times. Whether it was rides to the hospital, sitting together, crying together, making home cooked meals, celebrating every win, no matter how small, the friendship, the community, and the knowledge that we were there for each other let us make it through this difficult time. The day that she got out of the hospital was truly miraculous.

\n\n\n\n
\n

And now, we are most certainly not just WordCamp friends, we’re family – for life. 

\n
\n\n\n\n

The little things 

\n\n\n\n

Up to this point in my life, I have been a part of many communities – from school, to dance groups, to attorney associations, to my local neighborhood, each community has had something special to offer. However, I have never been involved with another community that is as welcoming or that has led to the formation of so many wonderful friendships as WordPress. From sharing a beer (or a boot of beer), to attending our wedding through Zoom (2020), to making a flower crown, to eating so much sushi that I could barely walk back to the Airbnb, to corn mazes and petting zoos, and touring a submarine together, I am truly thankful that the WordPress community has welcomed me with open arms and I hope that I can do the same for others! 

\n\n\n
\n\n
\n

Donata’s Work Environment

\n\n\n\n

We asked Donata for a view of her office this is what she sent!

\n\n\n
\n \"Donata\n
\n\n\n\n\n

HeroPress would like to thank Draw Attention for their donation of the plugin to make this interactive image!

\n
\n\n
\n\n\n\n\n

Su atviromis rankomis – draugystės WordPress bendruomenėje

\n\n\n\n

Tiesą sakant, kitaip nei mano vyras, niekada nebuvau pati socialiausia asmenybė. Vakarėlyje mane dažniausiai rastumėte kalbančią su šunimi (ar kate). Visą savo gyvenimą turėjau tik keletą artimų draugų, o knygos skaitymas man visada buvo malonesnis nei koncerto lankymas. Nors WordPress atliko didžiulį vaidmenį plėtojant mano verslą, norėčiau pasinaudoti šia proga ir pakalbėti apie kai ką daug svarbesnio – draugystes, kurias užmezgiau šioje nuostabioje bendruomenėje.

\n\n\n\n
\n

Dėl WordPress turiu iš tiesų nuostabių draugų savo gyvenime.

\n
\n\n\n\n

Nors pradėjome kaip svetimi, mes tapome tais, kurie dalyvauja vienas kito vestuvėse, juokiasi iki ašarų pakuodami šimtus reklaminių dovanų, laiko vienas kitam ranką ligonines lovoje ir būna kartu per storą ir ploną. Kadangi esu privatumo teisininkė, nemininesiu vardų, tačiau tikriausiai greitai suprasite, jei rašau apie jus.

\n\n\n\n

Trumpa istorija

\n\n\n\n

Kai baiginėjau teisės studijas, dirbau mažoje interneto dizaino agentūroje Čikagoje kaip COO. Ten sutikau savo vyrą Hansą, kuris buvo kitos agentūros savininkas, kai jis atvyko mus nupirkti. Tai buvo meilė iš pirmo žvilgsnio (taip, tikrai), ir nuo to laiko mes esame neatskiriami. Vieną vakarą dalinomės savo sunkumais ir nepasitenkinimais – man buvo nuobodu rašyti privatumo politikos dokumentus klientams, o jis net nežinojo, ką daryti, kai klientas paprašydavo interneto svetainės politikos. Taip gimė Termageddon – automatiškai atnaujinamas interneto svetainių politikos sprendimas agentūroms ir jų klientams. Kadangi pradėjome agentūrų partnerių programą, turėjome rasti agentūras, kurios būtų pasiruošusios išbandyti mūsų naują produktą, ir tada mes atradome WordCamps ir WordPress bendruomenę.

\n\n\n\n

Mūsų pirmasis WordCamp

\n\n\n\n

WordPress turi didžiulę bendruomenę, o vykstant į didelį WordCamp renginį, pavyzdžiui, WordCamp US, kai nieko nepažįsti, gali būti labai baisu (ypač tokiai intravertei kaip aš), todėl nusprendėme pradėti nuo mažesnio WordCamp netoli mūsų. Taip mes atsidūrėme WordCamp Jackson, Mičiganas.

\n\n\n\n
\n

Važiuodami į vieną mieliausių mažų miestelių, kokius tik esame matę, labai nervinomės – o kas bus jei niekas nenorės su mumis kalbėtis?

\n
\n\n\n\n

Šios baimės greitai išnyko, kai įėjome į kambarį su maždaug 30 draugiškų veidų. Netgi miesto meras dalyvavo! Per pertrauką visi susėdome ant sofų, o naujieji draugai padėjo mums sukurti mūsų pirmojo reklaminių dovanų daikto dizainą: marškinėlius su piratu, klausiančiu “Arrrr you compliant?” (Ar esate atitinkantys?). Vis dar šypsausi, kai juos apsivelku. Nespėjome apsidairyti, o jau po naudingų pranešimų visi susėdome į automobilius ir vykome į pabėgimo kambarį. Draugystės, užmezgtos šio renginio metu, tęsiasi jau daugelį metų. Tiesą sakant, vienas iš mūsų draugų iš to pirmojo WordCamp padėjo mums pastatyti vištų tvartą.

\n\n\n\n

Užeikit!

\n\n\n\n

Kiek vėliau mano vyras išvyko į Londoną ir susipažino su draugu per ne-WordPress renginį, ir jie tikrai susidraugavo (rimtai, jie kalbasi kas dvi savaites jau penkerius metus). Po kelių mėnesių atėjo metas mūsų pirmajam WordCamp US, ir mūsų draugas nuskrido iš JK į Čikagą, kad apsistotų pas mus, o mūsų planas buvo keliauti automobiliu nuo namų iki WordCamp. Tačiau nutiko taip, kad jo kitas draugas, kuris taip pat vyko į WordCamp (mes jo dar nebuvome sutikę), praleido savo skrydį. Mūsų draugas paskambino mums, paaiškino situaciją ir paklausė, ar jo draugas gali pakeisti skrydį į Čikagą, apsistoti pas mus ir prisijungti prie mūsų kelionės. Mes pasakėme: “Užeikit!” Tas praleistas skrydis privedė prie geriausios kelionės gyvenime ir viso gyvenimo draugystės.

\n\n\n\n

Aš visada prisiminsiu, kaip jis lydėjo mane į parduotuvę nusipirkti arbatos šaltą vakarą, kaip visi kartu pozavome nuotraukai prie Saint Louis arkinio paminklo, kaip per daugelį metų leisdavome laiką įvairiuose viešbučiuose ir Airbnb, dalijomės jaunystės istorijomis, stebėjomės augančių šeimų džiaugsmu ir jauduliu bei palaikėme vieni kitų verslo sumanymus. Per daugelį metų matėmės daugybę kartų įvairių kelionių ir WordCamp renginių metu, ir aš mus laikau pagrindine grupe šiuose renginiuose – saugia vieta viso šurmulio apsuptyje.

\n\n\n\n

Geriau kartu

\n\n\n\n

Kai pradedate įsitvirtinti tam tikroje pramonėje ar bendruomenėje, galite pagalvoti, kad kiti žmonės šioje srityje yra konkurentai. Nors tai tikrai nėra geriausia žmonijos savybė, manau, kad taip nutinka dažniau, nei norėtume pripažinti. Kai buvau naujokė WordPress bendruomenėje, buvo viena pripažinta privatumo teisininkė, kuri buvo šios bendruomenės dalis daug ilgiau nei aš. Važiuodama į WordCamp US,  žinojau kad ji ketina skaityti pranešimą apie Kalifornijos vartotojų privatumo įstatymą (CCPA) ir kaip laikytis šio privatumo įstatymo. Būsiu atvira – man buvo labai neramu ją sutikti. O kas, jei ji manytų, kad esu konkurentė? O jei jai nepatikčiau? O jei šiame renginyje nepakaktų vietos dviem privatumo teisininkėms? Gal man geriau viso renginio metu slėptis, kad tik ji manęs nepastebėtų?

\n\n\n\n

Tiesa ta, kad dažnai kuriame kraštutinius scenarijus savo galvose, bet realybė dažniausiai būna visai kitokia (ir mažiau bauginanti). Greitai susidraugavome, nes supratome, kad esame vienintelės dvi moterys renginyje, kurios iš viso žinojo kas yra CCPA. Vakaro pabaigoje jau spraudėmės kartu į Uber važiuodamos į barą. Per tuos metus palaikėme viena kitos projektus, dalijomės ilgais pokalbiais vakarais, kartu išgyvenome sunkumus ir džiaugėmės pasiekimais. Dėl jos geranoriškumo ir svetingumo nepasukome konkurencijos keliu, o galėjome džiaugtis nuostabia simbioze ir tikra draugyste.

\n\n\n\n

Šeima visam gyvenimui

\n\n\n\n

Leisti laiką su draugais „WordCamp“ renginiuose yra smagu, bet dar smagiau, kai draugystė tampa tokia stipri, kad draugai atskrenda pas jus tiesiog pabūti kartu. Na, šiuo atveju, mes spėjome pabūti tik vieną dieną, kol mano draugė labai susirgo. Ne „turiu gripą“ lygio susirgo, o taip, kad teko praleisti daugiau nei savaitę reanimacijoje ir kelis mėnesius ligoninėje.

\n\n\n\n

Tuo sunkiu metu susipažinome su jos šeima, kuri kurį laiką gyveno pas mus, nes gyvename labai arti ligoninės. Nors šis laikotarpis tikrai buvo alinantis visiems, jis taip pat suteikė naują perspektyvą, kaip draugai išgyvena sunkius laikus kartu. Nesvarbu, ar tai buvo kelionės į ligoninę, sėdėjimas kartu, verksmas kartu, naminiai patiekalai ar kiekvienos, net ir mažiausios pergalės šventimas – draugystė, bendruomenė ir žinojimas, kad esame vieni kitiems, padėjo mums išgyventi šį sunkų laikotarpį. Diena, kai ji išėjo iš ligoninės, buvo tikras stebuklas.

\n\n\n\n
\n

Dabar mes tikrai ne tik WordCamp draugės – mes šeima visam gyvenimui.

\n
\n\n\n\n

Mažos smulkmenos 

\n\n\n\n

Iki šiol mano gyvenime buvo daugybė bendruomenių – nuo mokyklos, šokių grupių, teisininkų asociacijų iki mano vietinės kaimynystės – kiekviena bendruomenė turėjo ką nors ypatingo. Tačiau niekada nebuvau dalis kitos bendruomenės, kuri būtų tokia svetinga ir kuri būtų padovanojusi tiek daug nuostabių draugysčių kaip WordPress. Nuo alaus bokalo (arba alaus bato) dalijimosi, iki mūsų vestuvių stebėjimo per Zoom (2020 m.), iki gėlių vainikų pynimo, iki tiek daug sušio valgymo, kad vos galėjau pareiti atgal į „Airbnb“, iki kukurūzų labirintų ir gyvūnų ūkių lankymo, ir net povandeninio laivo ekskursijos – esu nuoširdžiai dėkinga, kad WordPress bendruomenė mane priėmė atviromis rankomis, ir tikiuosi, kad galėsiu padaryti tą patį kitiems!

\n

The post With open arms – friendships in the WordPress community – Su atviromis rankomis – draugystės WordPress bendruomenėje appeared first on HeroPress.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 26 Mar 2025 01:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"Donata Stroink-Skillrud\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:34;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"WordPress.org blog: WordPress 6.8 Release Candidate 1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18639\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/03/wordpress-6-8-release-candidate-1/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:9186:\"

The first Release Candidate (“RC1”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development.  Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, it’s recommended that you evaluate RC1 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone.  While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC1 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC1 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-RC1
WordPress PlaygroundUse the 6.8 RC1 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025.  Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for further details.

\n\n\n\n

What’s in WordPress 6.8 RC1?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement.  For more technical information related to issues addressed since Beta 3, you can browse the following links:

\n\n\n\n\n\n\n\n

Want to look deeper into the details and technical notes for this release? These recent posts cover some of the latest updates:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community of people collaborating on and contributing to its development.  The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable.  It’s also a meaningful way for anyone to contribute.  This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report.  You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases.  With RC1, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English?  ¿Español?  Français?  Русский?  日本語? हिन्दी? বাংলা? मराठी?  You can help translate WordPress into more than 100 languages.  This release milestone (RC1) also marks the hard string freeze point of the 6.8 release cycle.

\n\n\n\n

An RC1 haiku

\n\n\n\n

March fades, nearly there,
Six-eight hums—a steady beat,
RC greets the world.

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @joemcgill @benjamin_zekavica @courane01 @mkrndmane @audrasjb @areziaal @ankit-k-gupta @krupajnanda @bph.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Mar 2025 16:19:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:35;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"Do The Woo Community: A Continued Saga About the Life of Blog Posts\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93306\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"https://dothewoo.io/blog/a-continued-saga-about-the-life-of-blog-posts/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:225:\"BobWP chats about the importance of adding content instead of removing it, expressing commitment to producing more podcasts, videos, and blog posts despite claims of blog irrelevance, valuing audience engagement over metrics.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Mar 2025 13:01:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:36;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:89:\"Do The Woo Community: On the Floor at CloudFest 2025 with Adam Weeks and Christian Taylor\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93275\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:88:\"https://dothewoo.io/on-the-floor-at-cloudfest-2025-with-adam-weeks-and-christian-taylor/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:226:\"Adam Weeks and Christian Taylor explore CloudFest, assessing booth designs and marketing strategies. They discuss visual engagement, effective messaging, and the significance of interactive experiences in attracting attendees.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Mar 2025 07:46:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:37;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:70:\"Do The Woo Community: How AI is Reshaping Enterprise WordPress in 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=91953\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"https://dothewoo.io/blog/how-ai-is-reshaping-enterprise-wordpress-in-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:191:\"AI is transforming enterprise WordPress through coding tools and personalization, but poses risks requiring careful integration and oversight amidst evolving challenges and security concerns.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 24 Mar 2025 11:40:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:38;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:111:\"Gutenberg Times: Get ready for WordPress 6.8, Source of Truth, a book, and code with AI — Weekend Edition 322\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://gutenbergtimes.com/?p=38031\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:115:\"https://gutenbergtimes.com/get-ready-for-wordpress-6-8-source-of-truth-a-book-and-code-with-ai-weekend-edition-322/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:21287:\"

Hi, the spring is coming to Munich this weekend, or that’s what the forecast tells us. With temperatures around 18 °C / 64° F, I will spend a few hours outside on long walks in the Englisch Garden and possible get my bicycle working again. I am looking forward to getting away from the screens all together and having in-person conversations with my cousin and his wife. They are accomplished musicians and different kind of nerds.

\n\n\n
\n

🔖 What kind of activities are in your future and are they also determined by the weather like mine? Hit reply and let me know.

\n
\n\n\n

Yours, 💕
Birgit

\n\n\n\n

PS: I just started my travel preparation for WordCamp Europe. Want to meet me? bit.ly/WCEUMeetBirgit

\n\n\n\n\"\"\n\n\n\n\n\n\n\n

Developing Gutenberg and WordPress

\n\n\n\n

WordPress 6.8 Beta 3 was released on March 18, 2025, and it is ready for testing. If you need inspiration and instruction on how and what to test, the test team’s post is for you. Help Test WordPress 6.8.

\n\n\n\n
\n\n\n\n

Joe Dolson published the dev note on Changes to the .screen-reader-text class in WordPress 6.8 The .screen-reader-text class replaces the deprecated clip property with clip-path: inset(50%) for modern browser compatibility and accessibility improvements. Focus styles remain unchanged to ensure visibility during keyboard navigation. Developers should update themes and plugins using .screen-reader-text to align with these changes for future-proofing.

\n\n\n\n
\n\n\n\n

A group of contributors collaborated on the Source of Truth (WordPress 6.8). Learn everything about enhanced data views, query loops, and block interactions. Also about the more cohesive design experience through the Zoom Out editing approach, expanded style controls, and improved typography options. WordPress 6.8 is scheduled to be released on April 15, 2025

\n\n\n\n\"\"\n\n\n\n
\n\n\n\n

George Mamadashvili released Gutenberg 20.5 and the changelog is available on GitHub. Among the updates you’ll find

\n\n\n\n
    \n
  • the ability to create a new page from the button block added to a site navigation, (69368)
  • \n\n\n\n
  • the pages list in the site editor can now display hierarchical relationship similar to the current pages list page, (69550)
  • \n\n\n\n
  • developers can now control the modal size called via DataViews action functions (69302)
  • \n
\n\n\n\n
\n\n\n\n

Troy Chaplin published What’s new for developers? (March 2025) on the WordPress Developer blog. He covers Gutenberg 20.3 and 20.4 as well as updates around the WordPress 6.8 release cycle.

\n\n\n\n
\n\n\n\n

As one of the first to cover the upcoming major release, Nithin Sreeraj at WP-Content posted WordPress 6.8 Expected Features and Changes.

\n\n\n\n
\n

🎙️ Latest episode: Gutenberg Changelog 116 – WordPress 6.8, Source of Truth, Field Guide, Gutenberg 20.5 and 20.6 with special guest JC Palmes, WebDev Studios

\n\n\n\n\"\"\n
\n\n\n\n

Plugins, Themes, and Tools for #nocode site builders and owners

\n\n\n\n

Bhargav (Bunty) Bhandari takes building in public quite literally. This time he created a Poll block for WordPress. It allows you to create interactive polls directly within the WordPress Block Editor, with design tools, voting options and results in real time. The code is available on GitHub until he submits it to the WordPress repository.

\n\n\n\n\"\"\n\n\n\n

Jamie Marsland runs an always friendly and welcoming WordPress Gutenberg Facebook group! The description read: “A community for Gutenberg users to learn, share, and explore tips on building WordPress websites using the Blocks Editor.” It’s a private group, too. Marsland wrote: “Whether you need help with WordPress editing or want to share your knowledge, we’d love to have you.”

\n\n\n\n\"\"\n\n\n\n

Theme Development for Full Site Editing and Blocks

\n\n\n\n

Some people like to learn via videos; other people prefer books.

\n\n\n\n

Koji Kuno, a web developer from Japan and contributor to WordPress, published a book called Creating a Website with Twenty-Twenty-Five in late 2024. This book is designed for beginners who want to learn how to create websites using WordPress 6.7 and its newest theme, Twenty-Twenty-Five.

\n\n\n\n

The book starts by explaining the basics of WordPress, including how its block themes, block editor, and site editor work. Once readers understand these concepts, Kuno dives deeper into the Twenty-Twenty-Five theme. He provides a detailed overview of the theme’s files, layout structures, style options for blocks and fonts, and how templates and patterns connect to each other.

\n\n\n\n

Kuno also includes step-by-step guides for building two types of websites: a blog site and a coffee shop site. He uses clear explanations and helpful graphics to make everything easy to follow, even for beginners. While most of the instructions focus on using WordPress’s site editor, Kuno also touches on the underlying code for certain features, such as supporting post formats.

\n\n\n\n

Overall, the book strikes a good balance between practical tutorials and technical insights. It’s an excellent resource for anyone looking to learn website design with WordPress in an approachable way.

\n\n\n\n\"\"Screenshot of Patterns and how they fit into the template structure of Twenty-Twenty-Five. (Page 44) \n\n\n\n
\n\n\n\n

Elliot Richmond experimented with Cursor AI to build a Block Theme. You can follow along on YouTube and see he is using Cursor AI for refactoring and code generation, about the challenges and results of AI-generated block themes, and some lesson learned turned into best practices .

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

In his post Additional Block Styles for Child Themes, Silvan Hagen shares how you can block styles by copying the relevant CSS file from the parent theme to the child theme and making adjustments. Hagen also provides a code snippet to append custom block styles from the child theme without overwriting the parent styles, by adding a function to the child theme’s functions.php file that enqueues the custom styles.

\n\n\n\n

 “Keeping up with Gutenberg – Index 2025” 
A chronological list of the WordPress Make Blog posts from various teams involved in Gutenberg development: Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. The previous years are also available: 2020 | 2021 | 2022 | 2023 | 2024

\n\n\n\n

Building Blocks and Tools for the Block editor

\n\n\n\n

In his post, Local WordPress Development Workflows Using Studio , Nick Diego walks you through two development workflows using Studio by WordPress.com. He covers using Git Deployments to WordPress.com for your newly developed plugin or theme. In the second part of the article you’ll learn how to structure a complete website build, share a preview with clients and colleagues, and sync to a live site on WordPress.com.

\n\n\n\n\"Using\n\n\n\n
\n\n\n\n

Muhammad Muhsin, developer at Awesome Motive, used the WordPress Interactivity API to build a simple Stopwatch block. He is also working on a tutorial to go along with it. Meanwhile, you can study his code on GitHub next to the documentation of the Interactivity API.

\n\n\n\n
\n\n\n\n

In this week’s live stream, How to build incredible WordPress Blocks with Cursor AI, Ryan Welcher and Nick Diego explored how AI can help you create great WordPress blocks. They shared useful tips and cool AI tools to improve your block-building skills and make things easier. Don’t miss this chance to discover new possibilities for your WordPress site!

\n\n\n\n\"\"\n\n\n\n
\n\n\n\n

The @wordpress/data package introduces a data layer to the WordPress Block Editor, enabling efficient state management and interaction with the editor’s ecosystem.

\n\n\n\n

In two of his live streams, JuanMa Garrido embarked into the depth of the data package and discuss how to work with the data package. In Data in the Block Editor, part one, he explores the various stores, how to retrieve and update store data and dispatch actions. In Data In the Block Editor, part two, Garrido continues to work through the block editor documentation and the date layer course on learn.WordPress.org

\n\n\n
\n
\n
\n
\n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

In his live stream, Ryan Welcher walked his viewers through the work necessary to add tests to his Advanced Query Loop plugin so developers who want to extend on the plugin can test custom hooks.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

On his video channel, Jon Bossenger streams on his adventure using AI for coding. You find out with him what works and what doesn’t. In his latest video Let’s Vibe, he wanted to find out what Vibe Coding is all about and if it actually can produce functional software.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

Need a plugin .zip from Gutenberg’s master branch?
Gutenberg Times provides daily build for testing and review.

\n\n\n\n

Now also available via WordPress Playground. There is no need for a test site locally or on a server. Have you been using it? Email me with your experience

\n\n\n\n

\"GitHub

\n\n\n\n

Questions? Suggestions? Ideas?
Don’t hesitate to send them via email or
send me a message on WordPress Slack or Twitter @bph.

\n\n\n\n
\n\n\n\n

For questions to be answered on the Gutenberg Changelog,
send them to changelog@gutenbergtimes.com

\n\n\n\n
\n\n\n\n

Featured Image: Garage door and wall with rectangles of various colors painted on them for decoration Photo by Marcus Burnette found on WordPress.org/photos

\n\n\n\n
\n\n\n\n

Don’t want to miss the next Weekend Edition?

\n\n\n

We hate spam, too, and won’t give your email address to anyone
except Mailchimp to send out our Weekend Edition

Thanks for subscribing.
\n\n\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 22 Mar 2025 05:29:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:39;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"Matt: Automattic Operating System\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"https://ma.tt/?p=140810\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"https://ma.tt/2025/03/aos/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:5146:\"

I was interviewed by Inc magazine for almost two hours where we covered a lot of great topics for entrepreneurs but almost none of it made it into the weird hit piece they published, however since both the journalist and I had recording of the interview I’ve decided to adapt some parts of it into a series of blog posts, think of it as the Inc Article That Could Have Been. This bit talks about some of the meta-work that myself and the Bridge team at Automattic do.

At Automattic, the most important product I work on is the company itself. I’ve started referring to it as the “Automattic Operating System.” Not in the technical sense like Linux, but the meta layer the company runs on. The company isn’t WordPress.com or Beeper or Pocket Casts or any one thing. I’m responsible for the culture of the people who build those things, building the things that build those things. It’s our hiring, our HR processes, our expenses, the onboarding docs; it’s all of the details that make up the employee experience — all the stuff that shapes every employee’s day-to-day experience.

\n\n\n\n

Take expense reports. If you’ve got to spend two hours taking pictures of receipts and something like that, that’s a waste of time. You’re not helping a customer there. We switched to a system where everyone just gets a credit card. It does all the reporting and accounting stuff automatically. You just swipe the card and it just automatically files an expense report. Sometimes there’s an exception and you have to work with the accounting rules, but it just works and automates the whole process most of the time.

\n\n\n\n

Another commonly overlooked detail is the offer letter. We think so much about the design of our websites and our products. We have designers work on that and we put a lot of care and thought into it. But I realized we didn’t have the same attention to detail on our offer letter. When you think about it, getting an offer letter from a company and deciding to take it is a major life decision, something you only do a handful of times in your life.  This is one of the things that determines your life path. Our offer letter was just made by attorneys and HR. No designer had looked at it right. We hadn’t really thought about it from a product experience point of view. And so it was just this, generic document with bad typography and not great design. But it’s important, so one of the things we did was redesign it. Now it has a nice letterhead, great typography, and it’s designed for the end user.

I realized that the salary and stuff was buried in paragraph two. It was just a small thing in the document! Well, what’s key when you’re deciding whether to take a job? Start date, salary, you know, that sort of thing, so we put the important parts at the very top.

\n\n\n\n

And then there’s the legal language. All the legal stuff, which is different in every country. We have people in 90 countries, so there’s all the legal stuff that goes in there. And then it has this nudge inspired by the behavioral economics book, Predictably Irrational.

There’s the story about how, if you have an ethics statement above where you sign the test or something, people cheat less. So I thought, well, what’s our equivalent of that? We have the Automattic Creed. It’s an important part of our culture. So we put the creed in, it says

\n\n\n\n
\n

I will never stop learning. I won’t just work on things that are assigned to me. I know there’s no such thing as a status quo. I will build our business sustainably through passionate and loyal customers. I will never pass up an opportunity to help out a colleague, and I’ll remember the days before I knew everything. I am more motivated by impact than money, and I know that Open Source is one of the most powerful ideas of our generation. I will communicate as much as possible, because it’s the oxygen of a distributed company. I am in a marathon, not a sprint, and no matter how far away the goal is, the only way to get there is by putting one foot in front of another every day. Given time, there is no problem that’s insurmountable.

\n
\n\n\n\n

It’s not legally binding, but it’s written in the first person, you read it and you kind of identify with it and then you sign below that. We want people who work at the company who identify with our core values and our core values really are in the creed.

\n\n\n\n

These sorts of things are key to our culture. And they’re universal. Again, we have people from over 90 countries. These are very different cultures, yes, and very different historical backgrounds and cultural makeups. But what’s universal? We have our philosophies that we apply every day regardless of where you were born or where you work.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 21 Mar 2025 22:15:05 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Matt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:40;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"Gravatar: Digital Business Card Examples With Professional Flair\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3083\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"https://blog.gravatar.com/2025/03/21/digital-business-card-examples/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:19747:\"

Looking for digital business card examples that actually work? Networking has changed, but the need to make a strong first impression hasn’t, and business cards are a big part of it. So, if you’re looking for inspiration, we’ll show you real digital business cards from various industries that successfully blend professional presentation with practical functionality.

\n\n\n\n

Our list includes sleek corporate profiles and creative designs for artists and freelancers, each a great example of how to make your information accessible while maintaining your personal brand. 

\n\n\n\n

By the end of this article, you’ll have actionable ideas for creating your own digital business card. And the best part? You can set up a free, customizable digital business card in minutes using Gravatar – no coding or design skills required.

\n\n\n\n

Universal Digital Business Cards with Gravatar

\n\n\n\n\"Ronnie\n\n\n\n

Looking at my Gravatar profile, you can see how it functions as a complete digital business card that travels with me across the web. I’ve personally included a professional headshot, custom banner image, some interesting images, and verified links to all my social profiles. These sections are completely customizable, and what you include depends entirely on your goals. 

\n\n\n\n

What makes this especially useful for networking is the QR code functionality. When meeting someone at a conference or event, I can quickly pull up my Gravatar profile QR code from my phone’s digital wallet. With one quick scan, my new contact instantly has access to all my professional information.

\n\n\n\n\"Adding\n\n\n\n
\n

Anyone who scans my QR code can immediately connect with me through multiple channels – they can view my contact details, send me money, or browse through my featured photos for a more personal touch. No more fumbling with paper cards or manually typing contact info into phones.

\n
\n\n\n\n

As a technical professional, my Gravatar profile is quite literally the foundation of my online presence. When I contribute to GitHub, post on Stack Overflow, or communicate through Slack, my Gravatar profile appears automatically, helping me build a more recognizable personal brand.

\n\n\n\n\"Ronnie\n\n\n\n

The best part? I only need to update my information in one place. If I change roles or add new contact methods, updating my Gravatar profile instantly refreshes my presence across all integrated platforms – saving time and ensuring consistency.

\n\n\n\n

Want to create your own universal digital business card? Sign up at Gravatar.com using just your email address. It takes minutes to set up but provides lasting professional benefits everywhere you go online.

\n\n\n\n\"\"\n\n\n\n

Industry-Specific Showcases: Real Estate to Tech Professionals

\n\n\n\n

Real estate agents face unique networking challenges – they need to connect instantly with potential buyers and showcase properties efficiently. Digital business cards can help in this process by offering scannable QR codes that provide immediate connections with house hunters.

\n\n\n\n

Take Liz Nitz’s digital business card as an example. 

\n\n\n\n\"Liz\n\n\n\n

As a Bozeman-based real estate agent, her Gravatar profile functions as a powerful lead generation tool. When potential clients scan her QR code, they gain instant access to her contact information plus direct links to her real estate website, where current property listings are just a tap away. This approach eliminates friction in the buying process – no typing long URLs or searching for contact details.

\n\n\n\n

The benefits go beyond real estate into technical fields where showing your expertise is extremely important. Tech professionals use digital business cards to highlight their portfolios, technical skills, and ongoing projects.

\n\n\n\n

Simon Willison, founder of Datasette, demonstrates this approach effectively through his GitHub profile. 

\n\n\n\n\"Simon\n\n\n\n

His presence includes links to his technical blog and personal projects, creating a comprehensive snapshot of his expertise. Visitors can easily contact him while exploring his work samples – all from a single profile.

\n\n\n\n

What makes this especially powerful for tech professionals is GitHub’s integration with Gravatar. When developers update their Gravatar profile picture, those changes automatically appear on GitHub and ensure a consistent, professional presence without requiring multiple updates.

\n\n\n\n

For many industries, digital business cards eliminate the limitations of paper while adding dynamic elements like direct portfolio access, property listings, and instant contact options – turning a simple introduction into a potential business opportunity.

\n\n\n\n

Creative examples for freelancers and artists

\n\n\n\n

For creative professionals, first impressions matter tremendously. Digital business cards give artists and freelancers a powerful advantage – the ability to showcase their actual work during initial meetings rather than just talking about it.

\n\n\n\n

Jonathan H. Kantor’s digital business card perfectly demonstrates this advantage. 

\n\n\n\n\"Jonathan\n\n\n\n

As an illustrator at Talking Bull Games, his Gravatar profile displays samples of his artwork directly on the card itself. New contacts can immediately see his illustration style and quality before clicking through to his full portfolio website. This visual introduction creates an instant connection that paper cards simply cannot match.

\n\n\n\n

Similarly, Shannon Cutts uses her digital business card to establish her credibility as a freelance writer. 

\n\n\n\n\"Shannon\n\n\n\n

Her profile links directly to her writing samples and service pages, allowing potential clients to quickly assess her style and expertise. This immediate access to her work helps her stand out in competitive pitching situations.

\n\n\n\n

Both Jonathan and Shannon have enhanced their cards with integrated QR codes connected to payment systems. This smart addition means that when someone appreciates their work, they can commission or purchase it on the spot by sending payment directly to the artist’s designated eWallet. No invoicing delays or payment friction – just a seamless transaction from introduction to sale, all through a digital business card.

\n\n\n\n

Corporate digital cards that mean business

\n\n\n\n

Corporate professionals require business cards that convey expertise, professionalism, and comprehensive information. Thomas McCorry’s digital business card exemplifies this approach perfectly.

\n\n\n\n\"Thomas\n\n\n\n

His Gravatar profile is like a mini-CV, with a detailed bio section outlining his professional history and accomplishments. The card includes direct links to his personal website, portfolio of work, and LinkedIn profile – all organized in a clean, accessible format alongside professional photographs.

\n\n\n\n

This structured approach gives potential clients and contacts an immediate sense of Thomas’s experience and capabilities at a glance. Rather than trying to cram limited information onto a paper card, his digital version provides depth without overwhelming the viewer. Someone meeting Thomas can quickly understand his background and then access more detailed supporting materials about specific projects or expertise areas with a single tap.

\n\n\n\n

Charles Leisure takes corporate networking a step further by connecting a QR code to his digital business card. 

\n\n\n\n\"Charles\n\n\n\n

This practical addition allows him to instantly share his complete professional profile during meetings or conferences by simply opening the QR code stored in his Apple or Google Wallet. Contacts can scan the code with their smartphone and immediately have all his information saved – eliminating the traditional business card exchange and ensuring his information never gets lost in a pocket or briefcase.

\n\n\n\n

How to Create Your Perfect Digital Business Card with Gravatar

\n\n\n\n

Creating a professional digital business card doesn’t require design skills or technical expertise. Anyone can set up a functional, customizable card like the examples showcased in this article by signing up for a free Gravatar profile.

\n\n\n\n

Getting started takes just minutes, and the process is straightforward:

\n\n\n\n
    \n
  1. Sign up using your email address – Visit Gravatar.com and click “Get Started Now.” Enter your email address and follow the verification steps. If you already have a WordPress.com account, you can connect it to speed up the process.
  2. \n
\n\n\n\n\"Creating\n\n\n\n

\n\n\n\n
    \n
  1. Add a professional headshot – Upload a high-quality photo that represents you well. The image will be cropped to a square format, so choose one where your face is clearly visible. For business purposes, opt for good lighting and a neutral background.
  2. \n
\n\n\n\n\"Adding\n\n\n\n
    \n
  1. Insert verified links and social media profiles – Add your website, portfolio, and social media accounts. Gravatar verifies these connections, adding credibility to your profiles with a verification badge that builds trust with new contacts.
  2. \n
\n\n\n\n\"Adding\n\n\n\n
    \n
  1. Add a professional bio – Craft a concise, compelling description that highlights your expertise and unique value. Think of this as your elevator pitch in written form – clear, engaging, and focused on what makes you stand out.
  2. \n
\n\n\n\n\"Adding\n\n\n\n
    \n
  1. Add relevant images – Beyond your profile picture, you can add additional images that showcase your work, which is especially helpful for creative professionals wanting to display their portfolio directly on their card.
  2. \n
\n\n\n\n\"Adding\n\n\n\n
    \n
  1. Create a QR code for easy profile sharing – Once your profile is complete, you can generate a QR code that links directly to your digital business card. This code can be added to your Apple or Google Wallet for easy sharing during in-person networking events.
  2. \n
\n\n\n\n\"Generating\n\n\n\n
    \n
  1. Customize the style and feel – Personalize your digital business card with custom backgrounds, banner images, and button styles that align with your personal or corporate branding.
  2. \n
\n\n\n\n\"Customize\n\n\n\n

With these seven simple steps, you’ll have a professional digital business card that works across platforms and makes networking more efficient and effective.

\n\n\n\n

Customization features and design possibilities

\n\n\n\n

Gravatar offers extensive customization options that let you create a truly personalized digital business card:

\n\n\n\n
    \n
  • Background options: Add unique solid colors or image backgrounds that align with your personal aesthetic or company branding. 
  • \n\n\n\n
  • Custom header/banner images: Feature your logo, portfolio samples, or professional photography that represents your work. 
  • \n
\n\n\n\n\"Header\n\n\n\n
    \n
  • Button style customization: Match link buttons to your overall design theme for a cohesive, professional appearance. 
  • \n
\n\n\n\n\"Customizing\n\n\n\n
    \n
  • Section rearrangement: Position the most important elements (like payment options) at the top of your profile for better usability. 
  • \n
\n\n\n\n\"Rearranging\n\n\n\n
    \n
  • Custom domains: Transform your profile from username.gravatar.com to yourname.social (or other extensions like .bio, .contact, and more). 
  • \n
\n\n\n\n

Privacy is also thoughtfully integrated into the design system. Gravatar gives you control over which information remains public (like your avatar and display name) and which stays private (such as phone numbers or birth dates). 

\n\n\n\n\"Adjusting\n\n\n\n

When a new site or app requests access to your non-public information, Gravatar will ask for your confirmation first.

\n\n\n\n

This privacy-first approach highlights one of Gravatar’s main strengths – functioning as a universal profile. Update your information once, and those changes instantly sync across all integrated platforms like WordPress, GitHub, and Slack, making your digital business card both customizable and remarkably efficient.

\n\n\n\n

Start Building Your Professional Digital Presence

\n\n\n\n

A free Gravatar profile offers the perfect solution for professionals seeking to establish a consistent online presence. More than just a digital business card, it functions as your unified identity across the web, appearing automatically on compatible platforms whenever you interact.

\n\n\n\n

Getting started takes just minutes. Visit Gravatar.com, enter your email address, and follow the simple verification steps to create your profile. Add a professional photo, customize your information, and start connecting your social accounts. The process is straightforward and designed for users of all technical skill levels.

\n\n\n\n

What truly sets Gravatar apart is its automatic synchronization capability. Once set up, your digital business card will appear seamlessly across WordPress.com, GitHub, Stack Overflow, and numerous other integrated platforms. 

\n\n\n\n

Start building your professional digital presence with Gravatar today!

\n\n\n\n\"\"\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 21 Mar 2025 15:26:48 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:41;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:115:\"Do The Woo Community: Introducing the Content Sparks Hosting Team: Derek Hanson, Rae Morey, Robbie Adair and BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93144\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:110:\"https://dothewoo.io/introducing-the-content-sparks-hosting-team-derek-hanson-rae-morey-robbie-adair-and-bobwp/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:210:\"In the latest episode of Content Sparks, BobWP introduces three monthly hosts: Robbie Adair on content and AI, Rae Morey on all things media, and Derek Hansen on content management, promising valuable insights.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 21 Mar 2025 13:24:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:42;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"Do The Woo Community: Do the Woo Friday Shares, March 21, 2025 v11\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93186\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"https://dothewoo.io/blog/do-the-woo-friday-shares-march-21-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:70:\"Our curated content across the Woo and WordPress community and beyond.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 21 Mar 2025 10:47:01 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:43;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:122:\"Do The Woo Community: Discovering the Impact of i2Coalition at Cloudfest with Christian Dawson, David Snead and James Webb\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93118\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:120:\"https://dothewoo.io/discovering-the-impact-of-i2coalition-at-cloudfest-with-christian-dawson-david-sneak-and-james-webb/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:232:\"At CloudFest 2025, experts from i2Coalition and BigScoots discuss the importance of collaboration in the hosting industry, addressing legislative challenges while emphasizing WordPress\'s role in supporting small businesses globally.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 21 Mar 2025 09:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:44;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:95:\"Do The Woo Community: From Founding to Funding, Marieke van de Rakt’s Entrepreneurial Journey\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=92989\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:90:\"https://dothewoo.io/from-founding-to-funding-marieke-van-de-rakts-entrepreneurial-journey/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:229:\"In this episode, Jonathan Wold and Tammy Lister chat with Marieke van de Rakt, co-founder of Progress Planner. They discuss her teaching, investment philosophy, and insights on e-commerce challenges and open source opportunities.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 20 Mar 2025 13:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:45;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:104:\"Do The Woo Community: Thoughts on CloudFest, Rollercoasters and WP Cloud’s Strategy with Elise Prather\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93074\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:99:\"https://dothewoo.io/thoughts-on-cloudfest-rollercoasters-and-wp-clouds-strategy-with-elise-prather/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:236:\"Elise Prather, VP at Automattic\'s WP Cloud, shares her immersive experience at CloudFest, highlighting its vast size, unique networking opportunities, and the customizable hosting solutions WP Cloud offers for companies and freelancers.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 20 Mar 2025 09:33:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:46;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:15:\"Matt: Radiohead\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"https://ma.tt/?p=140773\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://ma.tt/2025/03/radiohead/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:785:\"

It’s so funny that my random re-engagement with Radiohead re-emergence coincides with them doing a new entity that might mean something. I did a poll on Twitter and people preferred OK Computer to Kid A 78%!

\n\n\n\n

Grok told me: “The band has recently registered a new limited liability partnership (LLP) named RHEUK25, which includes all five members—Thom Yorke, Jonny Greenwood, Colin Greenwood, Ed O’Brien, and Philip Selway. This move is notable because Radiohead has historically created similar business entities before announcing new albums, tours, or reissues.”

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 19 Mar 2025 23:06:02 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Matt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:47;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:98:\"Do The Woo Community: Tara Claeys on the Benefits of Niching Down to School and Nonprofit Websites\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=92779\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:97:\"https://dothewoo.io/tara-claeys-on-the-benefits-of-niching-down-to-school-and-nonprofit-websites/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:230:\"In this episode of WP Agency Tracks, hosts Marcus Burnett and Cami MacNamara discuss the benefits and challenges of niching down with guest Tara Claeys, emphasizing her focus on schools and nonprofits for greater business success.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 19 Mar 2025 14:04:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:48;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"Do The Woo Community: Ronnie Burt Chats About Gravatar’s Evolution and CloudFest Experiences\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93052\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:90:\"https://dothewoo.io/ronnie-burt-chats-about-gravatars-evolution-and-cloudfest-experiences/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:189:\"At CloudFest, Ronnie Burt discusses Gravatar\'s history, its integration with WordPress, recent spikes in usage from platforms like ChatGPT, and the importance of digital identity ownership.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 19 Mar 2025 10:30:38 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:49;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:65:\"Do The Woo Community: The Winners of the CloudFest Hackathon 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93009\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://dothewoo.io/blog/the-winners-of-the-cloudfest-hackathon-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:210:\"The CloudFest Hackathon 2025 celebrated innovation in open-source development, featuring diverse awards and emphasizing inclusivity within the tech community, with Accessible Infographics as the overall winner.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 18 Mar 2025 15:57:07 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";O:48:\"WpOrg\\Requests\\Utility\\CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:9:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Wed, 09 Apr 2025 23:13:38 GMT\";s:12:\"content-type\";s:8:\"text/xml\";s:13:\"last-modified\";s:29:\"Wed, 09 Apr 2025 23:00:29 GMT\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:16:\"content-encoding\";s:2:\"br\";s:7:\"alt-svc\";s:19:\"h3=\":443\"; ma=86400\";s:4:\"x-nc\";s:9:\"HIT ord 1\";}}s:5:\"build\";i:1744240221;s:21:\"cache_expiration_time\";i:1744283618;s:23:\"__cache_expiration_time\";i:1744283618;}','off'), +(152,'_transient_timeout_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1744283618','off'), +(153,'_transient_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1744240418','off'), +(154,'_transient_timeout_dash_v2_88ae138922fe95674369b1cb3d215a2b','1744283618','off'), +(155,'_transient_dash_v2_88ae138922fe95674369b1cb3d215a2b','','off'), +(156,'wp-graphql_allow_tracking','yes','auto'), +(157,'wp-graphql_tracking_notice','hide','auto'), +(158,'wp-graphql_tracking_last_send','1744240419','auto'), +(159,'_site_transient_timeout_popular_importers_968d0fadeded9636c5b63190aaec278f','1744413228','off'), +(160,'_site_transient_popular_importers_968d0fadeded9636c5b63190aaec278f','a:2:{s:9:\"importers\";a:7:{s:7:\"blogger\";a:4:{s:4:\"name\";s:7:\"Blogger\";s:11:\"description\";s:54:\"Import posts, comments, and users from a Blogger blog.\";s:11:\"plugin-slug\";s:16:\"blogger-importer\";s:11:\"importer-id\";s:7:\"blogger\";}s:9:\"wpcat2tag\";a:4:{s:4:\"name\";s:29:\"Categories and Tags Converter\";s:11:\"description\";s:71:\"Convert existing categories to tags or tags to categories, selectively.\";s:11:\"plugin-slug\";s:18:\"wpcat2tag-importer\";s:11:\"importer-id\";s:10:\"wp-cat2tag\";}s:11:\"livejournal\";a:4:{s:4:\"name\";s:11:\"LiveJournal\";s:11:\"description\";s:46:\"Import posts from LiveJournal using their API.\";s:11:\"plugin-slug\";s:20:\"livejournal-importer\";s:11:\"importer-id\";s:11:\"livejournal\";}s:11:\"movabletype\";a:4:{s:4:\"name\";s:24:\"Movable Type and TypePad\";s:11:\"description\";s:62:\"Import posts and comments from a Movable Type or TypePad blog.\";s:11:\"plugin-slug\";s:20:\"movabletype-importer\";s:11:\"importer-id\";s:2:\"mt\";}s:3:\"rss\";a:4:{s:4:\"name\";s:3:\"RSS\";s:11:\"description\";s:30:\"Import posts from an RSS feed.\";s:11:\"plugin-slug\";s:12:\"rss-importer\";s:11:\"importer-id\";s:3:\"rss\";}s:6:\"tumblr\";a:4:{s:4:\"name\";s:6:\"Tumblr\";s:11:\"description\";s:53:\"Import posts & media from Tumblr using their API.\";s:11:\"plugin-slug\";s:15:\"tumblr-importer\";s:11:\"importer-id\";s:6:\"tumblr\";}s:9:\"wordpress\";a:4:{s:4:\"name\";s:9:\"WordPress\";s:11:\"description\";s:96:\"Import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.\";s:11:\"plugin-slug\";s:18:\"wordpress-importer\";s:11:\"importer-id\";s:9:\"wordpress\";}}s:10:\"translated\";b:0;}','off'), +(162,'_site_transient_update_plugins','O:8:\"stdClass\":5:{s:12:\"last_checked\";i:1744240431;s:8:\"response\";a:0:{}s:12:\"translations\";a:0:{}s:9:\"no_update\";a:3:{s:9:\"hello.php\";O:8:\"stdClass\":10:{s:2:\"id\";s:25:\"w.org/plugins/hello-dolly\";s:4:\"slug\";s:11:\"hello-dolly\";s:6:\"plugin\";s:9:\"hello.php\";s:11:\"new_version\";s:5:\"1.7.2\";s:3:\"url\";s:42:\"https://wordpress.org/plugins/hello-dolly/\";s:7:\"package\";s:60:\"https://downloads.wordpress.org/plugin/hello-dolly.1.7.3.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-256x256.jpg?rev=2052855\";s:2:\"1x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-128x128.jpg?rev=2052855\";}s:7:\"banners\";a:2:{s:2:\"2x\";s:67:\"https://ps.w.org/hello-dolly/assets/banner-1544x500.jpg?rev=2645582\";s:2:\"1x\";s:66:\"https://ps.w.org/hello-dolly/assets/banner-772x250.jpg?rev=2052855\";}s:11:\"banners_rtl\";a:0:{}s:8:\"requires\";s:3:\"4.6\";}s:41:\"wordpress-importer/wordpress-importer.php\";O:8:\"stdClass\":10:{s:2:\"id\";s:32:\"w.org/plugins/wordpress-importer\";s:4:\"slug\";s:18:\"wordpress-importer\";s:6:\"plugin\";s:41:\"wordpress-importer/wordpress-importer.php\";s:11:\"new_version\";s:5:\"0.8.4\";s:3:\"url\";s:49:\"https://wordpress.org/plugins/wordpress-importer/\";s:7:\"package\";s:67:\"https://downloads.wordpress.org/plugin/wordpress-importer.0.8.4.zip\";s:5:\"icons\";a:2:{s:2:\"1x\";s:63:\"https://ps.w.org/wordpress-importer/assets/icon.svg?rev=2791650\";s:3:\"svg\";s:63:\"https://ps.w.org/wordpress-importer/assets/icon.svg?rev=2791650\";}s:7:\"banners\";a:1:{s:2:\"1x\";s:72:\"https://ps.w.org/wordpress-importer/assets/banner-772x250.png?rev=547654\";}s:11:\"banners_rtl\";a:0:{}s:8:\"requires\";s:3:\"5.2\";}s:25:\"wp-graphql/wp-graphql.php\";O:8:\"stdClass\":10:{s:2:\"id\";s:24:\"w.org/plugins/wp-graphql\";s:4:\"slug\";s:10:\"wp-graphql\";s:6:\"plugin\";s:25:\"wp-graphql/wp-graphql.php\";s:11:\"new_version\";s:5:\"2.1.1\";s:3:\"url\";s:41:\"https://wordpress.org/plugins/wp-graphql/\";s:7:\"package\";s:53:\"https://downloads.wordpress.org/plugin/wp-graphql.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:63:\"https://ps.w.org/wp-graphql/assets/icon-256x256.png?rev=3111985\";s:2:\"1x\";s:63:\"https://ps.w.org/wp-graphql/assets/icon-128x128.png?rev=3111985\";}s:7:\"banners\";a:2:{s:2:\"2x\";s:66:\"https://ps.w.org/wp-graphql/assets/banner-1544x500.png?rev=3111985\";s:2:\"1x\";s:65:\"https://ps.w.org/wp-graphql/assets/banner-772x250.png?rev=3111985\";}s:11:\"banners_rtl\";a:0:{}s:8:\"requires\";s:3:\"6.0\";}}s:7:\"checked\";a:3:{s:9:\"hello.php\";s:5:\"1.7.2\";s:41:\"wordpress-importer/wordpress-importer.php\";s:5:\"0.8.4\";s:25:\"wp-graphql/wp-graphql.php\";s:5:\"2.1.1\";}}','off'), +(163,'_site_transient_wp_plugin_dependencies_plugin_data','a:0:{}','off'), +(164,'recently_activated','a:1:{s:41:\"wordpress-importer/wordpress-importer.php\";i:1744240487;}','off'), +(165,'wp_calendar_block_has_published_posts','1','auto'), +(166,'category_children','a:0:{}','auto'); +/*!40000 ALTER TABLE `wp_options` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_postmeta` +-- + +DROP TABLE IF EXISTS `wp_postmeta`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_postmeta` ( + `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `post_id` bigint(20) unsigned NOT NULL DEFAULT 0, + `meta_key` varchar(255) DEFAULT NULL, + `meta_value` longtext DEFAULT NULL, + PRIMARY KEY (`meta_id`), + KEY `post_id` (`post_id`), + KEY `meta_key` (`meta_key`(191)) +) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_postmeta` +-- + +LOCK TABLES `wp_postmeta` WRITE; +/*!40000 ALTER TABLE `wp_postmeta` DISABLE KEYS */; +INSERT INTO `wp_postmeta` VALUES +(1,2,'_wp_page_template','default'), +(2,3,'_wp_page_template','default'), +(5,6,'_edit_last','1'), +(6,6,'_pingme','1'), +(7,6,'_encloseme','1'), +(8,7,'_wp_page_template','default'), +(9,8,'_wp_page_template','default'), +(10,10,'_pingme','1'), +(11,10,'_encloseme','1'), +(12,10,'_edit_last','1'), +(13,1,'_wp_trash_meta_status','publish'), +(14,1,'_wp_trash_meta_time','1744240453'), +(15,1,'_wp_desired_post_slug','hello-world'), +(16,1,'_wp_trash_meta_comments_status','a:1:{i:1;s:1:\"1\";}'); +/*!40000 ALTER TABLE `wp_postmeta` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_posts` +-- + +DROP TABLE IF EXISTS `wp_posts`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_posts` ( + `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `post_author` bigint(20) unsigned NOT NULL DEFAULT 0, + `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_content` longtext NOT NULL, + `post_title` text NOT NULL, + `post_excerpt` text NOT NULL, + `post_status` varchar(20) NOT NULL DEFAULT 'publish', + `comment_status` varchar(20) NOT NULL DEFAULT 'open', + `ping_status` varchar(20) NOT NULL DEFAULT 'open', + `post_password` varchar(255) NOT NULL DEFAULT '', + `post_name` varchar(200) NOT NULL DEFAULT '', + `to_ping` text NOT NULL, + `pinged` text NOT NULL, + `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_content_filtered` longtext NOT NULL, + `post_parent` bigint(20) unsigned NOT NULL DEFAULT 0, + `guid` varchar(255) NOT NULL DEFAULT '', + `menu_order` int(11) NOT NULL DEFAULT 0, + `post_type` varchar(20) NOT NULL DEFAULT 'post', + `post_mime_type` varchar(100) NOT NULL DEFAULT '', + `comment_count` bigint(20) NOT NULL DEFAULT 0, + PRIMARY KEY (`ID`), + KEY `post_name` (`post_name`(191)), + KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`), + KEY `post_parent` (`post_parent`), + KEY `post_author` (`post_author`) +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_posts` +-- + +LOCK TABLES `wp_posts` WRITE; +/*!40000 ALTER TABLE `wp_posts` DISABLE KEYS */; +INSERT INTO `wp_posts` VALUES +(1,1,'2025-04-09 23:13:13','2025-04-09 23:13:13','\n

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

\n','Hello world!','','trash','open','open','','hello-world__trashed','','','2025-04-09 23:14:13','2025-04-09 23:14:13','',0,'http://localhost:8888/?p=1',0,'post','',1), +(2,1,'2025-04-09 23:13:13','2025-04-09 23:13:13','\n

This is an example page. It\'s different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:

\n\n\n\n

Hi there! I\'m a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin\' caught in the rain.)

\n\n\n\n

...or something like this:

\n\n\n\n

The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.

\n\n\n\n

As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!

\n','Sample Page','','publish','closed','open','','sample-page','','','2025-04-09 23:13:13','2025-04-09 23:13:13','',0,'http://localhost:8888/?page_id=2',0,'page','',0), +(3,1,'2025-04-09 23:13:13','2025-04-09 23:13:13','\n

Who we are

\n\n\n

Suggested text: Our website address is: http://localhost:8888.

\n\n\n

Comments

\n\n\n

Suggested text: When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.

\n\n\n

An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.

\n\n\n

Media

\n\n\n

Suggested text: If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.

\n\n\n

Cookies

\n\n\n

Suggested text: If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year.

\n\n\n

If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser.

\n\n\n

When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed.

\n\n\n

If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.

\n\n\n

Embedded content from other websites

\n\n\n

Suggested text: Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website.

\n\n\n

These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website.

\n\n\n

Who we share your data with

\n\n\n

Suggested text: If you request a password reset, your IP address will be included in the reset email.

\n\n\n

How long we retain your data

\n\n\n

Suggested text: If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue.

\n\n\n

For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.

\n\n\n

What rights you have over your data

\n\n\n

Suggested text: If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.

\n\n\n

Where your data is sent

\n\n\n

Suggested text: Visitor comments may be checked through an automated spam detection service.

\n\n','Privacy Policy','','draft','closed','open','','privacy-policy','','','2025-04-09 23:13:13','2025-04-09 23:13:13','',0,'http://localhost:8888/?page_id=3',0,'page','',0), +(4,1,'2025-04-09 23:13:37','0000-00-00 00:00:00','','Auto Draft','','auto-draft','open','open','','','','','2025-04-09 23:13:37','0000-00-00 00:00:00','',0,'http://localhost:8888/?p=4',0,'post','',0), +(6,1,'2025-04-09 18:29:34','2025-04-09 18:29:34','\n

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

\n','Hello world!','','publish','open','open','','hello-world-2','','','2025-04-09 18:29:34','2025-04-09 18:29:34','',0,'http://localhost:8888/?p=1',0,'post','',1), +(7,1,'2025-04-09 18:29:34','2025-04-09 18:29:34','\n

This is an example page. It\'s different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:

\n\n\n\n

Hi there! I\'m a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin\' caught in the rain.)

\n\n\n\n

...or something like this:

\n\n\n\n

The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.

\n\n\n\n

As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!

\n','Sample Page','','publish','closed','open','','sample-page-2','','','2025-04-09 18:29:34','2025-04-09 18:29:34','',0,'http://localhost:8888/?page_id=2',0,'page','',0), +(8,1,'2025-04-09 18:29:34','2025-04-09 18:29:34','\n

Who we are

\n\n\n

Suggested text: Our website address is: http://localhost:8888.

\n\n\n

Comments

\n\n\n

Suggested text: When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.

\n\n\n

An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.

\n\n\n

Media

\n\n\n

Suggested text: If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.

\n\n\n

Cookies

\n\n\n

Suggested text: If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year.

\n\n\n

If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser.

\n\n\n

When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed.

\n\n\n

If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.

\n\n\n

Embedded content from other websites

\n\n\n

Suggested text: Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website.

\n\n\n

These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website.

\n\n\n

Who we share your data with

\n\n\n

Suggested text: If you request a password reset, your IP address will be included in the reset email.

\n\n\n

How long we retain your data

\n\n\n

Suggested text: If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue.

\n\n\n

For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.

\n\n\n

What rights you have over your data

\n\n\n

Suggested text: If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.

\n\n\n

Where your data is sent

\n\n\n

Suggested text: Visitor comments may be checked through an automated spam detection service.

\n\n','Privacy Policy','','draft','closed','open','','privacy-policy','','','2025-04-09 18:29:34','2025-04-09 18:29:34','',0,'http://localhost:8888/?page_id=3',0,'page','',0), +(9,1,'2025-04-09 18:29:56','2025-04-09 18:29:56','','Navigation','','publish','closed','closed','','navigation','','','2025-04-09 18:29:56','2025-04-09 18:29:56','',0,'http://localhost:8888/navigation/',0,'wp_navigation','',0), +(10,1,'2025-04-09 20:45:15','2025-04-09 20:45:15','\n

Sample content here!

\n\n\n\n

\n','Sample Post','','publish','open','open','','sample-post','','','2025-04-09 20:45:15','2025-04-09 20:45:15','',0,'http://localhost:8888/?p=7',0,'post','',0), +(11,1,'2025-04-09 23:14:13','2025-04-09 23:14:13','\n

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

\n','Hello world!','','inherit','closed','closed','','1-revision-v1','','','2025-04-09 23:14:13','2025-04-09 23:14:13','',1,'http://localhost:8888/?p=11',0,'revision','',0); +/*!40000 ALTER TABLE `wp_posts` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_term_relationships` +-- + +DROP TABLE IF EXISTS `wp_term_relationships`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_term_relationships` ( + `object_id` bigint(20) unsigned NOT NULL DEFAULT 0, + `term_taxonomy_id` bigint(20) unsigned NOT NULL DEFAULT 0, + `term_order` int(11) NOT NULL DEFAULT 0, + PRIMARY KEY (`object_id`,`term_taxonomy_id`), + KEY `term_taxonomy_id` (`term_taxonomy_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_term_relationships` +-- + +LOCK TABLES `wp_term_relationships` WRITE; +/*!40000 ALTER TABLE `wp_term_relationships` DISABLE KEYS */; +INSERT INTO `wp_term_relationships` VALUES +(1,1,0), +(6,1,0), +(6,3,0), +(10,2,0), +(10,3,0); +/*!40000 ALTER TABLE `wp_term_relationships` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_term_taxonomy` +-- + +DROP TABLE IF EXISTS `wp_term_taxonomy`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_term_taxonomy` ( + `term_taxonomy_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `term_id` bigint(20) unsigned NOT NULL DEFAULT 0, + `taxonomy` varchar(32) NOT NULL DEFAULT '', + `description` longtext NOT NULL, + `parent` bigint(20) unsigned NOT NULL DEFAULT 0, + `count` bigint(20) NOT NULL DEFAULT 0, + PRIMARY KEY (`term_taxonomy_id`), + UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`), + KEY `taxonomy` (`taxonomy`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_term_taxonomy` +-- + +LOCK TABLES `wp_term_taxonomy` WRITE; +/*!40000 ALTER TABLE `wp_term_taxonomy` DISABLE KEYS */; +INSERT INTO `wp_term_taxonomy` VALUES +(1,1,'category','',0,1), +(2,2,'category','This is a sample category!',0,1), +(3,3,'post_tag','All posts with sample data in them!',0,2); +/*!40000 ALTER TABLE `wp_term_taxonomy` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_termmeta` +-- + +DROP TABLE IF EXISTS `wp_termmeta`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_termmeta` ( + `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `term_id` bigint(20) unsigned NOT NULL DEFAULT 0, + `meta_key` varchar(255) DEFAULT NULL, + `meta_value` longtext DEFAULT NULL, + PRIMARY KEY (`meta_id`), + KEY `term_id` (`term_id`), + KEY `meta_key` (`meta_key`(191)) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_termmeta` +-- + +LOCK TABLES `wp_termmeta` WRITE; +/*!40000 ALTER TABLE `wp_termmeta` DISABLE KEYS */; +/*!40000 ALTER TABLE `wp_termmeta` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_terms` +-- + +DROP TABLE IF EXISTS `wp_terms`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_terms` ( + `term_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(200) NOT NULL DEFAULT '', + `slug` varchar(200) NOT NULL DEFAULT '', + `term_group` bigint(10) NOT NULL DEFAULT 0, + PRIMARY KEY (`term_id`), + KEY `slug` (`slug`(191)), + KEY `name` (`name`(191)) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_terms` +-- + +LOCK TABLES `wp_terms` WRITE; +/*!40000 ALTER TABLE `wp_terms` DISABLE KEYS */; +INSERT INTO `wp_terms` VALUES +(1,'Uncategorized','uncategorized',0), +(2,'Category 1','category-1',0), +(3,'Sample Data','sample-data',0); +/*!40000 ALTER TABLE `wp_terms` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_usermeta` +-- + +DROP TABLE IF EXISTS `wp_usermeta`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_usermeta` ( + `umeta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `user_id` bigint(20) unsigned NOT NULL DEFAULT 0, + `meta_key` varchar(255) DEFAULT NULL, + `meta_value` longtext DEFAULT NULL, + PRIMARY KEY (`umeta_id`), + KEY `user_id` (`user_id`), + KEY `meta_key` (`meta_key`(191)) +) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_usermeta` +-- + +LOCK TABLES `wp_usermeta` WRITE; +/*!40000 ALTER TABLE `wp_usermeta` DISABLE KEYS */; +INSERT INTO `wp_usermeta` VALUES +(1,1,'nickname','admin'), +(2,1,'first_name',''), +(3,1,'last_name',''), +(4,1,'description',''), +(5,1,'rich_editing','true'), +(6,1,'syntax_highlighting','true'), +(7,1,'comment_shortcuts','false'), +(8,1,'admin_color','fresh'), +(9,1,'use_ssl','0'), +(10,1,'show_admin_bar_front','true'), +(11,1,'locale',''), +(12,1,'wp_capabilities','a:1:{s:13:\"administrator\";b:1;}'), +(13,1,'wp_user_level','10'), +(14,1,'dismissed_wp_pointers',''), +(15,1,'show_welcome_panel','1'), +(16,1,'session_tokens','a:1:{s:64:\"fd7f1ace0a81c5447d651384e7bceb859b5687f3efa8e19e3d22b041f1b34512\";a:4:{s:10:\"expiration\";i:1744413216;s:2:\"ip\";s:12:\"192.168.65.1\";s:2:\"ua\";s:117:\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36\";s:5:\"login\";i:1744240416;}}'), +(17,1,'wp_dashboard_quick_press_last_post_id','4'), +(18,1,'community-events-location','a:1:{s:2:\"ip\";s:12:\"192.168.65.0\";}'); +/*!40000 ALTER TABLE `wp_usermeta` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `wp_users` +-- + +DROP TABLE IF EXISTS `wp_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `wp_users` ( + `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `user_login` varchar(60) NOT NULL DEFAULT '', + `user_pass` varchar(255) NOT NULL DEFAULT '', + `user_nicename` varchar(50) NOT NULL DEFAULT '', + `user_email` varchar(100) NOT NULL DEFAULT '', + `user_url` varchar(100) NOT NULL DEFAULT '', + `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `user_activation_key` varchar(255) NOT NULL DEFAULT '', + `user_status` int(11) NOT NULL DEFAULT 0, + `display_name` varchar(250) NOT NULL DEFAULT '', + PRIMARY KEY (`ID`), + KEY `user_login_key` (`user_login`), + KEY `user_nicename` (`user_nicename`), + KEY `user_email` (`user_email`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `wp_users` +-- + +LOCK TABLES `wp_users` WRITE; +/*!40000 ALTER TABLE `wp_users` DISABLE KEYS */; +INSERT INTO `wp_users` VALUES +(1,'admin','$P$BqQESVUhlVKQME6eMG0K5xLr1dmB861','admin','wordpress@example.com','http://localhost:8888','2025-04-09 23:13:13','',0,'admin'); +/*!40000 ALTER TABLE `wp_users` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*M!100616 SET NOTE_VERBOSITY=@OLD_NOTE_VERBOSITY */; + +-- Dump completed on 2025-04-09 23:15:01 diff --git a/examples/next/template-hierarchy/wp-env/setup/.htaccess b/examples/next/template-hierarchy/wp-env/setup/.htaccess new file mode 100644 index 00000000..fd77845f --- /dev/null +++ b/examples/next/template-hierarchy/wp-env/setup/.htaccess @@ -0,0 +1,15 @@ +# BEGIN WordPress +# The directives (lines) between "BEGIN WordPress" and "END WordPress" are +# dynamically generated, and should only be modified via WordPress filters. +# Any changes to the directives between these markers will be overwritten. + +RewriteEngine On +RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] +RewriteBase / +RewriteRule ^index\.php$ - [L] +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule . /index.php [L] + + +# END WordPress \ No newline at end of file From 71002af78013469566d83001064e4a9cf8fd0624 Mon Sep 17 00:00:00 2001 From: Alex Moon Date: Tue, 17 Jun 2025 15:42:58 -0700 Subject: [PATCH 02/10] basic catch-all --- .../example-app/src/pages/[[...uri]].js | 17 +++ .../example-app/src/pages/index.js | 117 ------------------ 2 files changed, 17 insertions(+), 117 deletions(-) create mode 100644 examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js delete mode 100644 examples/next/template-hierarchy/example-app/src/pages/index.js diff --git a/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js b/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js new file mode 100644 index 00000000..aaa05bf8 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js @@ -0,0 +1,17 @@ +export default function Page({ params }) { + return ( +
+

Dynamic Route Example

+

URI: {"/" + params.uri.join("/") + "/"}

+
+ ); +} + +export async function getServerSideProps(context) { + const { params } = context; + return { + props: { + params, + }, + }; +} diff --git a/examples/next/template-hierarchy/example-app/src/pages/index.js b/examples/next/template-hierarchy/example-app/src/pages/index.js deleted file mode 100644 index c6599e77..00000000 --- a/examples/next/template-hierarchy/example-app/src/pages/index.js +++ /dev/null @@ -1,117 +0,0 @@ -import Head from "next/head"; -import Image from "next/image"; -import { Geist, Geist_Mono } from "next/font/google"; -import styles from "@/styles/Home.module.css"; - -const geistSans = Geist({ - variable: "--font-geist-sans", - subsets: ["latin"], -}); - -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", - subsets: ["latin"], -}); - -export default function Home() { - return ( - <> - - Create Next App - - - - -
-
- Next.js logo -
    -
  1. - Get started by editing src/pages/index.js. -
  2. -
  3. Save and see your changes instantly.
  4. -
- - -
- -
- - ); -} From 82596291c159351789661721d6592093bb428252 Mon Sep 17 00:00:00 2001 From: Alex Moon Date: Wed, 18 Jun 2025 11:47:56 -0700 Subject: [PATCH 03/10] feat: basic seed query, template hierarchy data fetching --- .../example-app/package.json | 3 +- .../example-app/src/components/Layout.js | 17 ++ .../src/components/TemplateHierarchyInfo.js | 26 +++ .../example-app/src/lib/client.js | 37 ++++ .../example-app/src/lib/context.js | 3 + .../example-app/src/lib/seedQuery.js | 84 +++++++++ .../example-app/src/lib/templateHierarchy.js | 60 ++++++ .../example-app/src/lib/templates.js | 173 ++++++++++++++++++ .../example-app/src/pages/[[...uri]].js | 30 ++- .../example-app/src/styles/Home.module.css | 168 ----------------- .../example-app/src/styles/globals.css | 51 ++---- .../example-app/src/wp-templates/home.js | 0 12 files changed, 438 insertions(+), 214 deletions(-) create mode 100644 examples/next/template-hierarchy/example-app/src/components/Layout.js create mode 100644 examples/next/template-hierarchy/example-app/src/components/TemplateHierarchyInfo.js create mode 100644 examples/next/template-hierarchy/example-app/src/lib/client.js create mode 100644 examples/next/template-hierarchy/example-app/src/lib/context.js create mode 100644 examples/next/template-hierarchy/example-app/src/lib/seedQuery.js create mode 100644 examples/next/template-hierarchy/example-app/src/lib/templateHierarchy.js create mode 100644 examples/next/template-hierarchy/example-app/src/lib/templates.js delete mode 100644 examples/next/template-hierarchy/example-app/src/styles/Home.module.css create mode 100644 examples/next/template-hierarchy/example-app/src/wp-templates/home.js diff --git a/examples/next/template-hierarchy/example-app/package.json b/examples/next/template-hierarchy/example-app/package.json index 21fbceb8..40a482cd 100644 --- a/examples/next/template-hierarchy/example-app/package.json +++ b/examples/next/template-hierarchy/example-app/package.json @@ -9,8 +9,9 @@ "lint": "next lint" }, "dependencies": { + "next": "15.3.3", "react": "^19.0.0", "react-dom": "^19.0.0", - "next": "15.3.3" + "urql": "^4.2.2" } } diff --git a/examples/next/template-hierarchy/example-app/src/components/Layout.js b/examples/next/template-hierarchy/example-app/src/components/Layout.js new file mode 100644 index 00000000..e6a05b7d --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/components/Layout.js @@ -0,0 +1,17 @@ +import { useContext } from "react"; +import { RouteDataContext } from "@/lib/context"; +import TemplateHierarchyInfo from "@/components/TemplateHierarchyInfo"; + +export default function Layout({ children }) { + const { templateData, uri } = useContext(RouteDataContext); + + return ( +
+ +
+

Template Hierarchy Example

+
+
{children}
+
+ ); +} diff --git a/examples/next/template-hierarchy/example-app/src/components/TemplateHierarchyInfo.js b/examples/next/template-hierarchy/example-app/src/components/TemplateHierarchyInfo.js new file mode 100644 index 00000000..3d6ba3ce --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/components/TemplateHierarchyInfo.js @@ -0,0 +1,26 @@ +export default function TemplateHierarchyInfo({ template, uri }) { + return ( + + ); +} diff --git a/examples/next/template-hierarchy/example-app/src/lib/client.js b/examples/next/template-hierarchy/example-app/src/lib/client.js new file mode 100644 index 00000000..cafac136 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/lib/client.js @@ -0,0 +1,37 @@ +import { Client, fetchExchange } from "urql"; +export { gql } from "urql"; + +const GRAPHQL_URL = "index.php?graphql"; +const graphqlApi = new URL(GRAPHQL_URL, "http://localhost:8888").href; + +/** + * This is a very basic URQL client setup. + * It uses the fetchExchange to make network requests. + * + * You can add more exchanges like the `@urql/exchange-persisted` for network caching with WPGraphQL SmartCache. + */ +export const client = new Client({ + url: graphqlApi, + exchanges: [fetchExchange], +}); + +export const fetchAllPaginated = async (query, getData, getPageInfo) => { + const allData = []; + let hasNextPage = true; + let after = null; + + while (hasNextPage) { + const { data, error } = await client.query(query, { after }); + + if (error) { + console.error("Error fetching paginated data:", error); + break; + } + + allData.push(...getData(data)); + after = getPageInfo(data).endCursor; + hasNextPage = getPageInfo(data).hasNextPage; + } + + return allData; +}; diff --git a/examples/next/template-hierarchy/example-app/src/lib/context.js b/examples/next/template-hierarchy/example-app/src/lib/context.js new file mode 100644 index 00000000..71d0c45f --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/lib/context.js @@ -0,0 +1,3 @@ +import React from "react"; + +export const RouteDataContext = React.createContext(); diff --git a/examples/next/template-hierarchy/example-app/src/lib/seedQuery.js b/examples/next/template-hierarchy/example-app/src/lib/seedQuery.js new file mode 100644 index 00000000..73dcc8c8 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/lib/seedQuery.js @@ -0,0 +1,84 @@ +import { client, gql } from "./client.js"; + +export async function getSeedQuery({ uri }) { + return client.query(SEED_QUERY, { uri }); +} + +export const SEED_QUERY = gql` + query GetSeedNode( + $id: ID! = 0 + $uri: String! = "" + $asPreview: Boolean = false + ) { + ... on RootQuery @skip(if: $asPreview) { + nodeByUri(uri: $uri) { + __typename + ...GetNode + } + } + ... on RootQuery @include(if: $asPreview) { + contentNode(id: $id, idType: DATABASE_ID, asPreview: true) { + __typename + ...GetNode + } + } + } + + fragment GetNode on UniformResourceIdentifiable { + __typename + uri + id + ...DatabaseIdentifier + ...ContentType + ...User + ...TermNode + ...ContentNode + ...MediaItem + ...Page + } + + fragment DatabaseIdentifier on DatabaseIdentifier { + databaseId + } + + fragment MediaItem on MediaItem { + id + mimeType + } + + fragment ContentType on ContentType { + name + isFrontPage + isPostsPage + } + + fragment Page on Page { + isFrontPage + isPostsPage + } + + fragment TermNode on TermNode { + isTermNode + slug + taxonomyName + } + + fragment ContentNode on ContentNode { + isContentNode + slug + contentType { + node { + name + } + } + template { + templateName + } + } + + fragment User on User { + name + userId + databaseId + } +`; diff --git a/examples/next/template-hierarchy/example-app/src/lib/templateHierarchy.js b/examples/next/template-hierarchy/example-app/src/lib/templateHierarchy.js new file mode 100644 index 00000000..db28f87c --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/lib/templateHierarchy.js @@ -0,0 +1,60 @@ +import { + getTemplate, + getPossibleTemplates, + getAvailableTemplates, +} from "./templates.js"; +import { getSeedQuery } from "./seedQuery"; + +export async function uriToTemplate({ uri }) { + const returnData = { + uri, + seedQuery: undefined, + availableTemplates: undefined, + possibleTemplates: undefined, + template: undefined, + }; + + const { data, error } = await getSeedQuery({ uri }); + + returnData.seedQuery = { data, error }; + + if (error) { + console.error("Error fetching seedQuery:", error); + return returnData; + } + + if (!data.nodeByUri) { + console.error("HTTP/404 - Not Found in WordPress:", uri); + + returnData.template = { id: "404 Not Found", path: "/404" }; + + return returnData; + } + + const availableTemplates = await getAvailableTemplates(); + + returnData.availableTemplates = availableTemplates; + + if (!availableTemplates || availableTemplates.length === 0) { + console.error("No templates found"); + return returnData; + } + + const possibleTemplates = getPossibleTemplates(data.nodeByUri); + + returnData.possibleTemplates = possibleTemplates; + + if (!possibleTemplates || possibleTemplates.length === 0) { + console.error("No possible templates found"); + return returnData; + } + const template = getTemplate(availableTemplates, possibleTemplates); + + returnData.template = template; + + if (!template) { + console.error("No template not found for route"); + } + + return returnData; +} diff --git a/examples/next/template-hierarchy/example-app/src/lib/templates.js b/examples/next/template-hierarchy/example-app/src/lib/templates.js new file mode 100644 index 00000000..a5418f34 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/lib/templates.js @@ -0,0 +1,173 @@ +import { readdir } from "node:fs/promises"; +import { join } from "node:path"; +import { cwd } from "node:process"; +const TEMPLATE_PATH = "wp-templates"; + +export function getPossibleTemplates(node) { + let possibleTemplates = []; + + if (node.template?.templateName && node.template.templateName !== "Default") { + possibleTemplates.push(`template-${node.template.templateName}`); + } + + // Front page + if (node.isFrontPage) { + possibleTemplates.push("front-page"); + } + + // Blog page + if (node.isPostsPage) { + possibleTemplates.push("home"); + } + + // CPT archive page + // eslint-disable-next-line no-underscore-dangle + if (node.__typename === "ContentType" && node.isPostsPage === false) { + if (node.name) { + possibleTemplates.push(`archive-${node.name}`); + } + + possibleTemplates.push("archive"); + } + + // Archive Page + if (node.isTermNode) { + const { taxonomyName } = node; + + switch (taxonomyName) { + case "category": { + if (node.slug) { + possibleTemplates.push(`category-${node.slug}`); + } + + if (node.databaseId) { + possibleTemplates.push(`category-${node.databaseId}`); + } + + possibleTemplates.push(`category`); + + break; + } + case "post_tag": { + if (node.slug) { + possibleTemplates.push(`tag-${node.slug}`); + } + + if (node.databaseId) { + possibleTemplates.push(`tag-${node.databaseId}`); + } + + possibleTemplates.push(`tag`); + + break; + } + default: { + if (taxonomyName) { + if (node.slug) { + possibleTemplates.push(`taxonomy-${taxonomyName}-${node.slug}`); + } + + if (node.databaseId) { + possibleTemplates.push( + `taxonomy-${taxonomyName}-${node.databaseId}` + ); + } + + possibleTemplates.push(`taxonomy-${taxonomyName}`); + } + + possibleTemplates.push(`taxonomy`); + } + } + + possibleTemplates.push(`archive`); + } + + if (node.userId) { + if (node.name) { + possibleTemplates.push(`author-${node.name?.toLocaleLowerCase()}`); + } + + possibleTemplates.push(`author-${node.userId}`); + possibleTemplates.push(`author`); + possibleTemplates.push(`archive`); + } + + // Singular page + if (node.isContentNode) { + if ( + node?.contentType?.node?.name !== "page" && + node?.contentType?.node?.name !== "post" + ) { + if (node.contentType?.node?.name && node.slug) { + possibleTemplates.push( + `single-${node.contentType?.node?.name}-${node.slug}` + ); + } + + if (node.contentType?.node?.name) { + possibleTemplates.push(`single-${node.contentType?.node?.name}`); + } + } + + if (node?.contentType?.node?.name === "page") { + if (node.slug) { + possibleTemplates.push(`page-${node.slug}`); + } + + if (node.databaseId) { + possibleTemplates.push(`page-${node.databaseId}`); + } + + possibleTemplates.push(`page`); + } + + if (node?.contentType?.node?.name === "post") { + if (node.slug) { + possibleTemplates.push( + `single-${node.contentType.node.name}-${node.slug}` + ); + } + + possibleTemplates.push(`single-${node.contentType.node.name}`); + possibleTemplates.push(`single`); + } + + possibleTemplates.push(`singular`); + } + + possibleTemplates.push("index"); + + return possibleTemplates; +} + +export async function getAvailableTemplates() { + const files = await readdir(join("src", TEMPLATE_PATH)); + + const templates = []; + + for (const file of files) { + const slug = file.replace(".js", ""); + + templates.push({ + id: slug, + path: join("/", TEMPLATE_PATH, file), + }); + } + + return templates; +} + +export function getTemplate(availableTemplates, possibleTemplates = []) { + for (const possibleTemplate of possibleTemplates) { + const templateFromConfig = availableTemplates?.find( + (template) => template.id === possibleTemplate + ); + + if (!templateFromConfig) { + continue; + } + + return templateFromConfig; + } +} diff --git a/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js b/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js index aaa05bf8..a80b27fe 100644 --- a/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js +++ b/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js @@ -1,17 +1,33 @@ -export default function Page({ params }) { +import { uriToTemplate } from "@/lib/templateHierarchy"; +import { RouteDataContext } from "@/lib/context"; +import Layout from "@/components/Layout"; + +export default function Page({ params, uri, templateData }) { return ( -
-

Dynamic Route Example

-

URI: {"/" + params.uri.join("/") + "/"}

-
+ + +

+ You shouldn't see this page if the template hierarchy is working + correctly. +

+
+
); } -export async function getServerSideProps(context) { - const { params } = context; +export async function getServerSideProps({ params }) { + const uri = Array.isArray(params.uri) + ? "/" + params.uri?.join("/") + "/" + : "/"; + + const templateData = await uriToTemplate({ uri }); + return { props: { params, + uri, + // https://github.com/vercel/next.js/discussions/11209#discussioncomment-35915 + templateData: JSON.parse(JSON.stringify(templateData)), }, }; } diff --git a/examples/next/template-hierarchy/example-app/src/styles/Home.module.css b/examples/next/template-hierarchy/example-app/src/styles/Home.module.css deleted file mode 100644 index a11c8f31..00000000 --- a/examples/next/template-hierarchy/example-app/src/styles/Home.module.css +++ /dev/null @@ -1,168 +0,0 @@ -.page { - --gray-rgb: 0, 0, 0; - --gray-alpha-200: rgba(var(--gray-rgb), 0.08); - --gray-alpha-100: rgba(var(--gray-rgb), 0.05); - - --button-primary-hover: #383838; - --button-secondary-hover: #f2f2f2; - - display: grid; - grid-template-rows: 20px 1fr 20px; - align-items: center; - justify-items: center; - min-height: 100svh; - padding: 80px; - gap: 64px; - font-family: var(--font-geist-sans); -} - -@media (prefers-color-scheme: dark) { - .page { - --gray-rgb: 255, 255, 255; - --gray-alpha-200: rgba(var(--gray-rgb), 0.145); - --gray-alpha-100: rgba(var(--gray-rgb), 0.06); - - --button-primary-hover: #ccc; - --button-secondary-hover: #1a1a1a; - } -} - -.main { - display: flex; - flex-direction: column; - gap: 32px; - grid-row-start: 2; -} - -.main ol { - font-family: var(--font-geist-mono); - padding-left: 0; - margin: 0; - font-size: 14px; - line-height: 24px; - letter-spacing: -0.01em; - list-style-position: inside; -} - -.main li:not(:last-of-type) { - margin-bottom: 8px; -} - -.main code { - font-family: inherit; - background: var(--gray-alpha-100); - padding: 2px 4px; - border-radius: 4px; - font-weight: 600; -} - -.ctas { - display: flex; - gap: 16px; -} - -.ctas a { - appearance: none; - border-radius: 128px; - height: 48px; - padding: 0 20px; - border: none; - border: 1px solid transparent; - transition: - background 0.2s, - color 0.2s, - border-color 0.2s; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - font-size: 16px; - line-height: 20px; - font-weight: 500; -} - -a.primary { - background: var(--foreground); - color: var(--background); - gap: 8px; -} - -a.secondary { - border-color: var(--gray-alpha-200); - min-width: 158px; -} - -.footer { - grid-row-start: 3; - display: flex; - gap: 24px; -} - -.footer a { - display: flex; - align-items: center; - gap: 8px; -} - -.footer img { - flex-shrink: 0; -} - -/* Enable hover only on non-touch devices */ -@media (hover: hover) and (pointer: fine) { - a.primary:hover { - background: var(--button-primary-hover); - border-color: transparent; - } - - a.secondary:hover { - background: var(--button-secondary-hover); - border-color: transparent; - } - - .footer a:hover { - text-decoration: underline; - text-underline-offset: 4px; - } -} - -@media (max-width: 600px) { - .page { - padding: 32px; - padding-bottom: 80px; - } - - .main { - align-items: center; - } - - .main ol { - text-align: center; - } - - .ctas { - flex-direction: column; - } - - .ctas a { - font-size: 14px; - height: 40px; - padding: 0 16px; - } - - a.secondary { - min-width: auto; - } - - .footer { - flex-wrap: wrap; - align-items: center; - justify-content: center; - } -} - -@media (prefers-color-scheme: dark) { - .logo { - filter: invert(); - } -} diff --git a/examples/next/template-hierarchy/example-app/src/styles/globals.css b/examples/next/template-hierarchy/example-app/src/styles/globals.css index e3734be1..90c32577 100644 --- a/examples/next/template-hierarchy/example-app/src/styles/globals.css +++ b/examples/next/template-hierarchy/example-app/src/styles/globals.css @@ -1,42 +1,17 @@ -:root { - --background: #ffffff; - --foreground: #171717; -} - -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; - } -} - -html, -body { - max-width: 100vw; - overflow-x: hidden; -} +.template-hierarchy-info { + display: flex; + flex-direction: row; + flex-wrap: wrap; + background-color: #f2f483; + padding: 0.5em; + border-radius: 5px; -body { - color: var(--foreground); - background: var(--background); - font-family: Arial, Helvetica, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -* { - box-sizing: border-box; - padding: 0; - margin: 0; -} - -a { - color: inherit; - text-decoration: none; -} + & section { + padding: 0.5em; + border-right: 1px solid black; -@media (prefers-color-scheme: dark) { - html { - color-scheme: dark; + &:last-child { + border-right: none; + } } } diff --git a/examples/next/template-hierarchy/example-app/src/wp-templates/home.js b/examples/next/template-hierarchy/example-app/src/wp-templates/home.js new file mode 100644 index 00000000..e69de29b From d8c706d62b7290ce44a0d856938f951702f1a251 Mon Sep 17 00:00:00 2001 From: Alex Moon Date: Tue, 29 Jul 2025 11:01:15 -0700 Subject: [PATCH 04/10] feat: routing with dynamic imports for bundling --- .../example-app/package.json | 2 +- .../example-app/src/components/Layout.js | 13 ++++++++++ .../example-app/src/lib/templates.js | 6 ++++- .../example-app/src/pages/[[...uri]].js | 26 ++++++++++++------- .../example-app/src/wp-templates/default.js | 12 +++++++++ .../example-app/src/wp-templates/home.js | 10 +++++++ .../example-app/src/wp-templates/index.js | 15 +++++++++++ .../example-app/src/wp-templates/single.js | 10 +++++++ 8 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 examples/next/template-hierarchy/example-app/src/wp-templates/default.js create mode 100644 examples/next/template-hierarchy/example-app/src/wp-templates/index.js create mode 100644 examples/next/template-hierarchy/example-app/src/wp-templates/single.js diff --git a/examples/next/template-hierarchy/example-app/package.json b/examples/next/template-hierarchy/example-app/package.json index 40a482cd..e1eab953 100644 --- a/examples/next/template-hierarchy/example-app/package.json +++ b/examples/next/template-hierarchy/example-app/package.json @@ -9,7 +9,7 @@ "lint": "next lint" }, "dependencies": { - "next": "15.3.3", + "next": "^15.3.4", "react": "^19.0.0", "react-dom": "^19.0.0", "urql": "^4.2.2" diff --git a/examples/next/template-hierarchy/example-app/src/components/Layout.js b/examples/next/template-hierarchy/example-app/src/components/Layout.js index e6a05b7d..e0576d18 100644 --- a/examples/next/template-hierarchy/example-app/src/components/Layout.js +++ b/examples/next/template-hierarchy/example-app/src/components/Layout.js @@ -10,6 +10,19 @@ export default function Layout({ children }) {

Template Hierarchy Example

+
{children}
diff --git a/examples/next/template-hierarchy/example-app/src/lib/templates.js b/examples/next/template-hierarchy/example-app/src/lib/templates.js index a5418f34..fe9ea789 100644 --- a/examples/next/template-hierarchy/example-app/src/lib/templates.js +++ b/examples/next/template-hierarchy/example-app/src/lib/templates.js @@ -147,10 +147,14 @@ export async function getAvailableTemplates() { const templates = []; for (const file of files) { + if (file === "index.js") { + continue; // Skip the index file + } + const slug = file.replace(".js", ""); templates.push({ - id: slug, + id: slug === "default" ? "index" : slug, path: join("/", TEMPLATE_PATH, file), }); } diff --git a/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js b/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js index a80b27fe..b4dfc58b 100644 --- a/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js +++ b/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js @@ -1,16 +1,15 @@ import { uriToTemplate } from "@/lib/templateHierarchy"; import { RouteDataContext } from "@/lib/context"; -import Layout from "@/components/Layout"; +import availableTemplates from "@/wp-templates"; + +export default function Page(props) { + const { templateData } = props; + + const PageTemplate = availableTemplates[templateData.template?.id]; -export default function Page({ params, uri, templateData }) { return ( - - -

- You shouldn't see this page if the template hierarchy is working - correctly. -

-
+ + ); } @@ -22,6 +21,15 @@ export async function getServerSideProps({ params }) { const templateData = await uriToTemplate({ uri }); + if ( + !templateData?.template?.id || + templateData?.template?.id === "404 Not Found" + ) { + return { + notFound: true, + }; + } + return { props: { params, diff --git a/examples/next/template-hierarchy/example-app/src/wp-templates/default.js b/examples/next/template-hierarchy/example-app/src/wp-templates/default.js new file mode 100644 index 00000000..3f4b022b --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/wp-templates/default.js @@ -0,0 +1,12 @@ +import Layout from "@/components/Layout"; + +export default function DefaultTemplate() { + return ( + +

Default Template

+

+ This is the default template for the template hierarchy example app. +

+
+ ); +} diff --git a/examples/next/template-hierarchy/example-app/src/wp-templates/home.js b/examples/next/template-hierarchy/example-app/src/wp-templates/home.js index e69de29b..9db1c20a 100644 --- a/examples/next/template-hierarchy/example-app/src/wp-templates/home.js +++ b/examples/next/template-hierarchy/example-app/src/wp-templates/home.js @@ -0,0 +1,10 @@ +import Layout from "@/components/Layout"; + +export default function Home() { + return ( + +

Home Template

+

This is the home page of the template hierarchy example app.

+
+ ); +} diff --git a/examples/next/template-hierarchy/example-app/src/wp-templates/index.js b/examples/next/template-hierarchy/example-app/src/wp-templates/index.js new file mode 100644 index 00000000..f6f56ca6 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/wp-templates/index.js @@ -0,0 +1,15 @@ +import dynamic from "next/dynamic"; + +const home = dynamic(() => import("./home.js"), { + loading: () =>

Loading Home Template...

, +}); + +const index = dynamic(() => import("./default.js"), { + loading: () =>

Loading Index Template...

, +}); + +const single = dynamic(() => import("./single.js"), { + loading: () =>

Loading Single Template...

, +}); + +export default { home, index, single }; diff --git a/examples/next/template-hierarchy/example-app/src/wp-templates/single.js b/examples/next/template-hierarchy/example-app/src/wp-templates/single.js new file mode 100644 index 00000000..2d2c9713 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/wp-templates/single.js @@ -0,0 +1,10 @@ +import Layout from "@/components/Layout"; + +export default function SingleTemplate() { + return ( + +

Single Template

+

This is the single template for the template hierarchy example app.

+
+ ); +} From efb5289c87ed7520dedd8520f93ab4c1a6cd202d Mon Sep 17 00:00:00 2001 From: Alex Moon Date: Thu, 31 Jul 2025 15:01:18 -0700 Subject: [PATCH 05/10] refactor: custom hook for route data --- .../example-app/src/components/Layout.js | 5 ++--- .../example-app/src/lib/context.js | 19 ++++++++++++++++++- .../example-app/src/pages/[[...uri]].js | 6 +++--- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/examples/next/template-hierarchy/example-app/src/components/Layout.js b/examples/next/template-hierarchy/example-app/src/components/Layout.js index e0576d18..31a74f89 100644 --- a/examples/next/template-hierarchy/example-app/src/components/Layout.js +++ b/examples/next/template-hierarchy/example-app/src/components/Layout.js @@ -1,9 +1,8 @@ -import { useContext } from "react"; -import { RouteDataContext } from "@/lib/context"; +import { useRouteData } from "@/lib/context"; import TemplateHierarchyInfo from "@/components/TemplateHierarchyInfo"; export default function Layout({ children }) { - const { templateData, uri } = useContext(RouteDataContext); + const { templateData, uri } = useRouteData(); return (
diff --git a/examples/next/template-hierarchy/example-app/src/lib/context.js b/examples/next/template-hierarchy/example-app/src/lib/context.js index 71d0c45f..06a605be 100644 --- a/examples/next/template-hierarchy/example-app/src/lib/context.js +++ b/examples/next/template-hierarchy/example-app/src/lib/context.js @@ -1,3 +1,20 @@ import React from "react"; -export const RouteDataContext = React.createContext(); +const RouteDataContext = React.createContext(); + +export const useRouteData = () => { + const context = React.useContext(RouteDataContext); + if (!context) { + throw new Error( + "useRouteData must be used within a RouteDataContext.Provider" + ); + } + return context; +}; +export const RouteDataProvider = ({ children, value }) => { + return ( + + {children} + + ); +}; diff --git a/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js b/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js index b4dfc58b..ebdfee1d 100644 --- a/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js +++ b/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js @@ -1,5 +1,5 @@ import { uriToTemplate } from "@/lib/templateHierarchy"; -import { RouteDataContext } from "@/lib/context"; +import { RouteDataProvider } from "@/lib/context"; import availableTemplates from "@/wp-templates"; export default function Page(props) { @@ -8,9 +8,9 @@ export default function Page(props) { const PageTemplate = availableTemplates[templateData.template?.id]; return ( - + - + ); } From 1afc501bffc633f44683e743757a583d105e4f8e Mon Sep 17 00:00:00 2001 From: Alex Moon Date: Thu, 31 Jul 2025 15:02:32 -0700 Subject: [PATCH 06/10] feat: implement data fetching for templates --- .../example-app/src/lib/queryHandler.js | 47 +++++++++++++++++++ .../example-app/src/pages/[[...uri]].js | 19 +++++++- 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 examples/next/template-hierarchy/example-app/src/lib/queryHandler.js diff --git a/examples/next/template-hierarchy/example-app/src/lib/queryHandler.js b/examples/next/template-hierarchy/example-app/src/lib/queryHandler.js new file mode 100644 index 00000000..958c307e --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/lib/queryHandler.js @@ -0,0 +1,47 @@ +import { client, fetchAllPaginated } from "./client"; + +export async function fetchQueries({ queries, context, props }) { + if (!queries || queries.length === 0) { + console.error("No queries provided"); + return {}; + } + + let queryPromises = []; + + for (const query of queries) { + if (!query.query) { + console.error("Query is undefined"); + continue; + } + + const queryName = query.name || query.query.definitions[0].name?.value; + + if (!queryName) { + console.error("Query name is undefined, skipping query"); + continue; + } + + const queryVariables = query.variables + ? query.variables(context, props) + : {}; + + const queryResp = client.query(query.query, queryVariables); + + queryPromises.push( + queryResp.then((response) => ({ + name: queryName, + response, + })) + ); + } + + const allSettledQueries = await Promise.all(queryPromises); + + const allResponses = {}; + + for (const { name, response } of allSettledQueries) { + allResponses[name] = response; + } + + return allResponses; +} diff --git a/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js b/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js index ebdfee1d..8cfad0ce 100644 --- a/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js +++ b/examples/next/template-hierarchy/example-app/src/pages/[[...uri]].js @@ -1,6 +1,7 @@ import { uriToTemplate } from "@/lib/templateHierarchy"; import { RouteDataProvider } from "@/lib/context"; import availableTemplates from "@/wp-templates"; +import { fetchQueries } from "@/lib/queryHandler"; export default function Page(props) { const { templateData } = props; @@ -14,7 +15,8 @@ export default function Page(props) { ); } -export async function getServerSideProps({ params }) { +export async function getServerSideProps(context) { + const { params } = context; const uri = Array.isArray(params.uri) ? "/" + params.uri?.join("/") + "/" : "/"; @@ -30,12 +32,25 @@ export async function getServerSideProps({ params }) { }; } + const PageTemplate = availableTemplates[templateData.template?.id]; + + const component = await PageTemplate.render.preload(); + + const graphqlData = await fetchQueries({ + queries: component.default.queries, + context, + props: { + uri, + templateData, + }, + }); + return { props: { - params, uri, // https://github.com/vercel/next.js/discussions/11209#discussioncomment-35915 templateData: JSON.parse(JSON.stringify(templateData)), + graphqlData: JSON.parse(JSON.stringify(graphqlData)), }, }; } From 2c31dd3df8b164f0ea55c7318513fbf1cbea5e9f Mon Sep 17 00:00:00 2001 From: Alex Moon Date: Thu, 31 Jul 2025 15:49:11 -0700 Subject: [PATCH 07/10] feat: add data fetching to --- .../example-app/src/components/RecentPosts.js | 40 +++++++++++++++++++ .../example-app/src/wp-templates/home.js | 6 +++ .../example-app/src/wp-templates/single.js | 32 +++++++++++++-- 3 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 examples/next/template-hierarchy/example-app/src/components/RecentPosts.js diff --git a/examples/next/template-hierarchy/example-app/src/components/RecentPosts.js b/examples/next/template-hierarchy/example-app/src/components/RecentPosts.js new file mode 100644 index 00000000..492829a5 --- /dev/null +++ b/examples/next/template-hierarchy/example-app/src/components/RecentPosts.js @@ -0,0 +1,40 @@ +import { gql } from "urql"; +import { useRouteData } from "@/lib/context"; + +export default function RecentPosts() { + const { graphqlData } = useRouteData(); + + const posts = graphqlData?.RecentPosts?.data?.posts?.nodes || []; + + if (graphqlData?.RecentPosts?.error) { + console.error("Error fetching RecentPosts:", graphqlData.RecentPosts.error); + return
Error loading recent posts.
; + } + + return ( +
+

Recent Posts

+ +
+ ); +} + +RecentPosts.query = { + query: gql` + query RecentPosts { + posts(first: 5) { + nodes { + id + title + uri + } + } + } + `, +}; diff --git a/examples/next/template-hierarchy/example-app/src/wp-templates/home.js b/examples/next/template-hierarchy/example-app/src/wp-templates/home.js index 9db1c20a..056c205a 100644 --- a/examples/next/template-hierarchy/example-app/src/wp-templates/home.js +++ b/examples/next/template-hierarchy/example-app/src/wp-templates/home.js @@ -1,10 +1,16 @@ import Layout from "@/components/Layout"; +import RecentPosts from "@/components/RecentPosts"; export default function Home() { return (

Home Template

This is the home page of the template hierarchy example app.

+
); } + +Home.queries = [ + RecentPosts.query, // Ensure RecentPosts query is included +]; diff --git a/examples/next/template-hierarchy/example-app/src/wp-templates/single.js b/examples/next/template-hierarchy/example-app/src/wp-templates/single.js index 2d2c9713..f473c048 100644 --- a/examples/next/template-hierarchy/example-app/src/wp-templates/single.js +++ b/examples/next/template-hierarchy/example-app/src/wp-templates/single.js @@ -1,10 +1,36 @@ import Layout from "@/components/Layout"; -export default function SingleTemplate() { +export default function SingleTemplate({ graphqlData }) { + const { SinglePostQuery } = graphqlData; return ( -

Single Template

-

This is the single template for the template hierarchy example app.

+

{SinglePostQuery.response.data.post.title}

+
); } + +export const queries = "test"; + +SingleTemplate.queries = [ + { + name: "SinglePostQuery", + query: /* GraphQL */ ` + query SinglePostQuery($id: ID!) { + post(id: $id, idType: URI) { + id + title + content + date + } + } + `, + variables: (event, { uri }) => ({ + id: uri, + }), + }, +]; From f5dd509d042a536e4e3cfcb59a9445a8f135eec3 Mon Sep 17 00:00:00 2001 From: Alex Moon Date: Thu, 31 Jul 2025 15:50:46 -0700 Subject: [PATCH 08/10] update db --- .../template-hierarchy/wp-env/db/database.sql | 102 ++++++++++-------- 1 file changed, 57 insertions(+), 45 deletions(-) diff --git a/examples/next/template-hierarchy/wp-env/db/database.sql b/examples/next/template-hierarchy/wp-env/db/database.sql index 76893385..5a6ba86b 100644 --- a/examples/next/template-hierarchy/wp-env/db/database.sql +++ b/examples/next/template-hierarchy/wp-env/db/database.sql @@ -3,7 +3,7 @@ -- -- Host: mysql Database: wordpress -- ------------------------------------------------------ --- Server version 11.7.2-MariaDB-ubu2404 +-- Server version 11.8.2-MariaDB-ubu2404 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -137,7 +137,7 @@ CREATE TABLE `wp_options` ( PRIMARY KEY (`option_id`), UNIQUE KEY `option_name` (`option_name`), KEY `autoload` (`autoload`) -) ENGINE=InnoDB AUTO_INCREMENT=167 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +) ENGINE=InnoDB AUTO_INCREMENT=211 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -147,7 +147,7 @@ CREATE TABLE `wp_options` ( LOCK TABLES `wp_options` WRITE; /*!40000 ALTER TABLE `wp_options` DISABLE KEYS */; INSERT INTO `wp_options` VALUES -(1,'cron','a:12:{i:1744240394;a:2:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1744240416;a:3:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:21:\"wp_update_user_counts\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744240417;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1744240418;a:1:{s:29:\"wp-graphql_tracker_send_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"weekly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:604800;}}}i:1744240429;a:1:{s:30:\"wp_delete_temp_updater_backups\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"weekly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:604800;}}}i:1744240476;a:1:{s:28:\"wp_update_comment_type_batch\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1744243993;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744245793;a:1:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744247593;a:1:{s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744326794;a:1:{s:30:\"wp_site_health_scheduled_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"weekly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:604800;}}}i:1744326838;a:1:{s:26:\"importer_scheduled_cleanup\";a:1:{s:32:\"c9059feef497c200e69cb9956a81f005\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:1:{i:0;i:5;}}}}s:7:\"version\";i:2;}','on'), +(1,'cron','a:13:{i:1744240394;a:2:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1744240416;a:3:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:21:\"wp_update_user_counts\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744240417;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1744240418;a:1:{s:29:\"wp-graphql_tracker_send_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"weekly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:604800;}}}i:1744240429;a:1:{s:30:\"wp_delete_temp_updater_backups\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"weekly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:604800;}}}i:1744240476;a:1:{s:28:\"wp_update_comment_type_batch\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1744243993;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744245793;a:1:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744247593;a:1:{s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1744326794;a:1:{s:30:\"wp_site_health_scheduled_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"weekly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:604800;}}}i:1744326838;a:1:{s:26:\"importer_scheduled_cleanup\";a:1:{s:32:\"c9059feef497c200e69cb9956a81f005\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:1:{i:0;i:5;}}}}i:1753811980;a:1:{s:8:\"do_pings\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}s:7:\"version\";i:2;}','on'), (2,'siteurl','http://localhost:8888','on'), (3,'home','http://localhost:8888','on'), (4,'blogname','template-hierarchy-data-fetching-urql','on'), @@ -182,7 +182,7 @@ INSERT INTO `wp_options` VALUES (33,'moderation_keys','','off'), (34,'active_plugins','a:1:{i:1;s:25:\"wp-graphql/wp-graphql.php\";}','on'), (35,'category_base','','on'), -(36,'ping_sites','http://rpc.pingomatic.com/','on'), +(36,'ping_sites','https://rpc.pingomatic.com/','on'), (37,'comment_max_links','2','on'), (38,'gmt_offset','0','on'), (39,'default_email_category','1','on'), @@ -193,7 +193,7 @@ INSERT INTO `wp_options` VALUES (44,'html_type','text/html','on'), (45,'use_trackback','0','on'), (46,'default_role','subscriber','on'), -(47,'db_version','58975','on'), +(47,'db_version','60421','on'), (48,'uploads_use_yearmonth_folders','1','on'), (49,'upload_path','','on'), (50,'blog_public','1','on'), @@ -268,47 +268,48 @@ INSERT INTO `wp_options` VALUES (119,'widget_nav_menu','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), (120,'widget_custom_html','a:1:{s:12:\"_multiwidget\";i:1;}','auto'), (121,'_transient_wp_core_block_css_files','a:2:{s:7:\"version\";s:5:\"6.7.2\";s:5:\"files\";a:540:{i:0;s:23:\"archives/editor-rtl.css\";i:1;s:27:\"archives/editor-rtl.min.css\";i:2;s:19:\"archives/editor.css\";i:3;s:23:\"archives/editor.min.css\";i:4;s:22:\"archives/style-rtl.css\";i:5;s:26:\"archives/style-rtl.min.css\";i:6;s:18:\"archives/style.css\";i:7;s:22:\"archives/style.min.css\";i:8;s:20:\"audio/editor-rtl.css\";i:9;s:24:\"audio/editor-rtl.min.css\";i:10;s:16:\"audio/editor.css\";i:11;s:20:\"audio/editor.min.css\";i:12;s:19:\"audio/style-rtl.css\";i:13;s:23:\"audio/style-rtl.min.css\";i:14;s:15:\"audio/style.css\";i:15;s:19:\"audio/style.min.css\";i:16;s:19:\"audio/theme-rtl.css\";i:17;s:23:\"audio/theme-rtl.min.css\";i:18;s:15:\"audio/theme.css\";i:19;s:19:\"audio/theme.min.css\";i:20;s:21:\"avatar/editor-rtl.css\";i:21;s:25:\"avatar/editor-rtl.min.css\";i:22;s:17:\"avatar/editor.css\";i:23;s:21:\"avatar/editor.min.css\";i:24;s:20:\"avatar/style-rtl.css\";i:25;s:24:\"avatar/style-rtl.min.css\";i:26;s:16:\"avatar/style.css\";i:27;s:20:\"avatar/style.min.css\";i:28;s:21:\"button/editor-rtl.css\";i:29;s:25:\"button/editor-rtl.min.css\";i:30;s:17:\"button/editor.css\";i:31;s:21:\"button/editor.min.css\";i:32;s:20:\"button/style-rtl.css\";i:33;s:24:\"button/style-rtl.min.css\";i:34;s:16:\"button/style.css\";i:35;s:20:\"button/style.min.css\";i:36;s:22:\"buttons/editor-rtl.css\";i:37;s:26:\"buttons/editor-rtl.min.css\";i:38;s:18:\"buttons/editor.css\";i:39;s:22:\"buttons/editor.min.css\";i:40;s:21:\"buttons/style-rtl.css\";i:41;s:25:\"buttons/style-rtl.min.css\";i:42;s:17:\"buttons/style.css\";i:43;s:21:\"buttons/style.min.css\";i:44;s:22:\"calendar/style-rtl.css\";i:45;s:26:\"calendar/style-rtl.min.css\";i:46;s:18:\"calendar/style.css\";i:47;s:22:\"calendar/style.min.css\";i:48;s:25:\"categories/editor-rtl.css\";i:49;s:29:\"categories/editor-rtl.min.css\";i:50;s:21:\"categories/editor.css\";i:51;s:25:\"categories/editor.min.css\";i:52;s:24:\"categories/style-rtl.css\";i:53;s:28:\"categories/style-rtl.min.css\";i:54;s:20:\"categories/style.css\";i:55;s:24:\"categories/style.min.css\";i:56;s:19:\"code/editor-rtl.css\";i:57;s:23:\"code/editor-rtl.min.css\";i:58;s:15:\"code/editor.css\";i:59;s:19:\"code/editor.min.css\";i:60;s:18:\"code/style-rtl.css\";i:61;s:22:\"code/style-rtl.min.css\";i:62;s:14:\"code/style.css\";i:63;s:18:\"code/style.min.css\";i:64;s:18:\"code/theme-rtl.css\";i:65;s:22:\"code/theme-rtl.min.css\";i:66;s:14:\"code/theme.css\";i:67;s:18:\"code/theme.min.css\";i:68;s:22:\"columns/editor-rtl.css\";i:69;s:26:\"columns/editor-rtl.min.css\";i:70;s:18:\"columns/editor.css\";i:71;s:22:\"columns/editor.min.css\";i:72;s:21:\"columns/style-rtl.css\";i:73;s:25:\"columns/style-rtl.min.css\";i:74;s:17:\"columns/style.css\";i:75;s:21:\"columns/style.min.css\";i:76;s:33:\"comment-author-name/style-rtl.css\";i:77;s:37:\"comment-author-name/style-rtl.min.css\";i:78;s:29:\"comment-author-name/style.css\";i:79;s:33:\"comment-author-name/style.min.css\";i:80;s:29:\"comment-content/style-rtl.css\";i:81;s:33:\"comment-content/style-rtl.min.css\";i:82;s:25:\"comment-content/style.css\";i:83;s:29:\"comment-content/style.min.css\";i:84;s:26:\"comment-date/style-rtl.css\";i:85;s:30:\"comment-date/style-rtl.min.css\";i:86;s:22:\"comment-date/style.css\";i:87;s:26:\"comment-date/style.min.css\";i:88;s:31:\"comment-edit-link/style-rtl.css\";i:89;s:35:\"comment-edit-link/style-rtl.min.css\";i:90;s:27:\"comment-edit-link/style.css\";i:91;s:31:\"comment-edit-link/style.min.css\";i:92;s:32:\"comment-reply-link/style-rtl.css\";i:93;s:36:\"comment-reply-link/style-rtl.min.css\";i:94;s:28:\"comment-reply-link/style.css\";i:95;s:32:\"comment-reply-link/style.min.css\";i:96;s:30:\"comment-template/style-rtl.css\";i:97;s:34:\"comment-template/style-rtl.min.css\";i:98;s:26:\"comment-template/style.css\";i:99;s:30:\"comment-template/style.min.css\";i:100;s:42:\"comments-pagination-numbers/editor-rtl.css\";i:101;s:46:\"comments-pagination-numbers/editor-rtl.min.css\";i:102;s:38:\"comments-pagination-numbers/editor.css\";i:103;s:42:\"comments-pagination-numbers/editor.min.css\";i:104;s:34:\"comments-pagination/editor-rtl.css\";i:105;s:38:\"comments-pagination/editor-rtl.min.css\";i:106;s:30:\"comments-pagination/editor.css\";i:107;s:34:\"comments-pagination/editor.min.css\";i:108;s:33:\"comments-pagination/style-rtl.css\";i:109;s:37:\"comments-pagination/style-rtl.min.css\";i:110;s:29:\"comments-pagination/style.css\";i:111;s:33:\"comments-pagination/style.min.css\";i:112;s:29:\"comments-title/editor-rtl.css\";i:113;s:33:\"comments-title/editor-rtl.min.css\";i:114;s:25:\"comments-title/editor.css\";i:115;s:29:\"comments-title/editor.min.css\";i:116;s:23:\"comments/editor-rtl.css\";i:117;s:27:\"comments/editor-rtl.min.css\";i:118;s:19:\"comments/editor.css\";i:119;s:23:\"comments/editor.min.css\";i:120;s:22:\"comments/style-rtl.css\";i:121;s:26:\"comments/style-rtl.min.css\";i:122;s:18:\"comments/style.css\";i:123;s:22:\"comments/style.min.css\";i:124;s:20:\"cover/editor-rtl.css\";i:125;s:24:\"cover/editor-rtl.min.css\";i:126;s:16:\"cover/editor.css\";i:127;s:20:\"cover/editor.min.css\";i:128;s:19:\"cover/style-rtl.css\";i:129;s:23:\"cover/style-rtl.min.css\";i:130;s:15:\"cover/style.css\";i:131;s:19:\"cover/style.min.css\";i:132;s:22:\"details/editor-rtl.css\";i:133;s:26:\"details/editor-rtl.min.css\";i:134;s:18:\"details/editor.css\";i:135;s:22:\"details/editor.min.css\";i:136;s:21:\"details/style-rtl.css\";i:137;s:25:\"details/style-rtl.min.css\";i:138;s:17:\"details/style.css\";i:139;s:21:\"details/style.min.css\";i:140;s:20:\"embed/editor-rtl.css\";i:141;s:24:\"embed/editor-rtl.min.css\";i:142;s:16:\"embed/editor.css\";i:143;s:20:\"embed/editor.min.css\";i:144;s:19:\"embed/style-rtl.css\";i:145;s:23:\"embed/style-rtl.min.css\";i:146;s:15:\"embed/style.css\";i:147;s:19:\"embed/style.min.css\";i:148;s:19:\"embed/theme-rtl.css\";i:149;s:23:\"embed/theme-rtl.min.css\";i:150;s:15:\"embed/theme.css\";i:151;s:19:\"embed/theme.min.css\";i:152;s:19:\"file/editor-rtl.css\";i:153;s:23:\"file/editor-rtl.min.css\";i:154;s:15:\"file/editor.css\";i:155;s:19:\"file/editor.min.css\";i:156;s:18:\"file/style-rtl.css\";i:157;s:22:\"file/style-rtl.min.css\";i:158;s:14:\"file/style.css\";i:159;s:18:\"file/style.min.css\";i:160;s:23:\"footnotes/style-rtl.css\";i:161;s:27:\"footnotes/style-rtl.min.css\";i:162;s:19:\"footnotes/style.css\";i:163;s:23:\"footnotes/style.min.css\";i:164;s:23:\"freeform/editor-rtl.css\";i:165;s:27:\"freeform/editor-rtl.min.css\";i:166;s:19:\"freeform/editor.css\";i:167;s:23:\"freeform/editor.min.css\";i:168;s:22:\"gallery/editor-rtl.css\";i:169;s:26:\"gallery/editor-rtl.min.css\";i:170;s:18:\"gallery/editor.css\";i:171;s:22:\"gallery/editor.min.css\";i:172;s:21:\"gallery/style-rtl.css\";i:173;s:25:\"gallery/style-rtl.min.css\";i:174;s:17:\"gallery/style.css\";i:175;s:21:\"gallery/style.min.css\";i:176;s:21:\"gallery/theme-rtl.css\";i:177;s:25:\"gallery/theme-rtl.min.css\";i:178;s:17:\"gallery/theme.css\";i:179;s:21:\"gallery/theme.min.css\";i:180;s:20:\"group/editor-rtl.css\";i:181;s:24:\"group/editor-rtl.min.css\";i:182;s:16:\"group/editor.css\";i:183;s:20:\"group/editor.min.css\";i:184;s:19:\"group/style-rtl.css\";i:185;s:23:\"group/style-rtl.min.css\";i:186;s:15:\"group/style.css\";i:187;s:19:\"group/style.min.css\";i:188;s:19:\"group/theme-rtl.css\";i:189;s:23:\"group/theme-rtl.min.css\";i:190;s:15:\"group/theme.css\";i:191;s:19:\"group/theme.min.css\";i:192;s:21:\"heading/style-rtl.css\";i:193;s:25:\"heading/style-rtl.min.css\";i:194;s:17:\"heading/style.css\";i:195;s:21:\"heading/style.min.css\";i:196;s:19:\"html/editor-rtl.css\";i:197;s:23:\"html/editor-rtl.min.css\";i:198;s:15:\"html/editor.css\";i:199;s:19:\"html/editor.min.css\";i:200;s:20:\"image/editor-rtl.css\";i:201;s:24:\"image/editor-rtl.min.css\";i:202;s:16:\"image/editor.css\";i:203;s:20:\"image/editor.min.css\";i:204;s:19:\"image/style-rtl.css\";i:205;s:23:\"image/style-rtl.min.css\";i:206;s:15:\"image/style.css\";i:207;s:19:\"image/style.min.css\";i:208;s:19:\"image/theme-rtl.css\";i:209;s:23:\"image/theme-rtl.min.css\";i:210;s:15:\"image/theme.css\";i:211;s:19:\"image/theme.min.css\";i:212;s:29:\"latest-comments/style-rtl.css\";i:213;s:33:\"latest-comments/style-rtl.min.css\";i:214;s:25:\"latest-comments/style.css\";i:215;s:29:\"latest-comments/style.min.css\";i:216;s:27:\"latest-posts/editor-rtl.css\";i:217;s:31:\"latest-posts/editor-rtl.min.css\";i:218;s:23:\"latest-posts/editor.css\";i:219;s:27:\"latest-posts/editor.min.css\";i:220;s:26:\"latest-posts/style-rtl.css\";i:221;s:30:\"latest-posts/style-rtl.min.css\";i:222;s:22:\"latest-posts/style.css\";i:223;s:26:\"latest-posts/style.min.css\";i:224;s:18:\"list/style-rtl.css\";i:225;s:22:\"list/style-rtl.min.css\";i:226;s:14:\"list/style.css\";i:227;s:18:\"list/style.min.css\";i:228;s:22:\"loginout/style-rtl.css\";i:229;s:26:\"loginout/style-rtl.min.css\";i:230;s:18:\"loginout/style.css\";i:231;s:22:\"loginout/style.min.css\";i:232;s:25:\"media-text/editor-rtl.css\";i:233;s:29:\"media-text/editor-rtl.min.css\";i:234;s:21:\"media-text/editor.css\";i:235;s:25:\"media-text/editor.min.css\";i:236;s:24:\"media-text/style-rtl.css\";i:237;s:28:\"media-text/style-rtl.min.css\";i:238;s:20:\"media-text/style.css\";i:239;s:24:\"media-text/style.min.css\";i:240;s:19:\"more/editor-rtl.css\";i:241;s:23:\"more/editor-rtl.min.css\";i:242;s:15:\"more/editor.css\";i:243;s:19:\"more/editor.min.css\";i:244;s:30:\"navigation-link/editor-rtl.css\";i:245;s:34:\"navigation-link/editor-rtl.min.css\";i:246;s:26:\"navigation-link/editor.css\";i:247;s:30:\"navigation-link/editor.min.css\";i:248;s:29:\"navigation-link/style-rtl.css\";i:249;s:33:\"navigation-link/style-rtl.min.css\";i:250;s:25:\"navigation-link/style.css\";i:251;s:29:\"navigation-link/style.min.css\";i:252;s:33:\"navigation-submenu/editor-rtl.css\";i:253;s:37:\"navigation-submenu/editor-rtl.min.css\";i:254;s:29:\"navigation-submenu/editor.css\";i:255;s:33:\"navigation-submenu/editor.min.css\";i:256;s:25:\"navigation/editor-rtl.css\";i:257;s:29:\"navigation/editor-rtl.min.css\";i:258;s:21:\"navigation/editor.css\";i:259;s:25:\"navigation/editor.min.css\";i:260;s:24:\"navigation/style-rtl.css\";i:261;s:28:\"navigation/style-rtl.min.css\";i:262;s:20:\"navigation/style.css\";i:263;s:24:\"navigation/style.min.css\";i:264;s:23:\"nextpage/editor-rtl.css\";i:265;s:27:\"nextpage/editor-rtl.min.css\";i:266;s:19:\"nextpage/editor.css\";i:267;s:23:\"nextpage/editor.min.css\";i:268;s:24:\"page-list/editor-rtl.css\";i:269;s:28:\"page-list/editor-rtl.min.css\";i:270;s:20:\"page-list/editor.css\";i:271;s:24:\"page-list/editor.min.css\";i:272;s:23:\"page-list/style-rtl.css\";i:273;s:27:\"page-list/style-rtl.min.css\";i:274;s:19:\"page-list/style.css\";i:275;s:23:\"page-list/style.min.css\";i:276;s:24:\"paragraph/editor-rtl.css\";i:277;s:28:\"paragraph/editor-rtl.min.css\";i:278;s:20:\"paragraph/editor.css\";i:279;s:24:\"paragraph/editor.min.css\";i:280;s:23:\"paragraph/style-rtl.css\";i:281;s:27:\"paragraph/style-rtl.min.css\";i:282;s:19:\"paragraph/style.css\";i:283;s:23:\"paragraph/style.min.css\";i:284;s:35:\"post-author-biography/style-rtl.css\";i:285;s:39:\"post-author-biography/style-rtl.min.css\";i:286;s:31:\"post-author-biography/style.css\";i:287;s:35:\"post-author-biography/style.min.css\";i:288;s:30:\"post-author-name/style-rtl.css\";i:289;s:34:\"post-author-name/style-rtl.min.css\";i:290;s:26:\"post-author-name/style.css\";i:291;s:30:\"post-author-name/style.min.css\";i:292;s:26:\"post-author/editor-rtl.css\";i:293;s:30:\"post-author/editor-rtl.min.css\";i:294;s:22:\"post-author/editor.css\";i:295;s:26:\"post-author/editor.min.css\";i:296;s:25:\"post-author/style-rtl.css\";i:297;s:29:\"post-author/style-rtl.min.css\";i:298;s:21:\"post-author/style.css\";i:299;s:25:\"post-author/style.min.css\";i:300;s:33:\"post-comments-form/editor-rtl.css\";i:301;s:37:\"post-comments-form/editor-rtl.min.css\";i:302;s:29:\"post-comments-form/editor.css\";i:303;s:33:\"post-comments-form/editor.min.css\";i:304;s:32:\"post-comments-form/style-rtl.css\";i:305;s:36:\"post-comments-form/style-rtl.min.css\";i:306;s:28:\"post-comments-form/style.css\";i:307;s:32:\"post-comments-form/style.min.css\";i:308;s:27:\"post-content/editor-rtl.css\";i:309;s:31:\"post-content/editor-rtl.min.css\";i:310;s:23:\"post-content/editor.css\";i:311;s:27:\"post-content/editor.min.css\";i:312;s:26:\"post-content/style-rtl.css\";i:313;s:30:\"post-content/style-rtl.min.css\";i:314;s:22:\"post-content/style.css\";i:315;s:26:\"post-content/style.min.css\";i:316;s:23:\"post-date/style-rtl.css\";i:317;s:27:\"post-date/style-rtl.min.css\";i:318;s:19:\"post-date/style.css\";i:319;s:23:\"post-date/style.min.css\";i:320;s:27:\"post-excerpt/editor-rtl.css\";i:321;s:31:\"post-excerpt/editor-rtl.min.css\";i:322;s:23:\"post-excerpt/editor.css\";i:323;s:27:\"post-excerpt/editor.min.css\";i:324;s:26:\"post-excerpt/style-rtl.css\";i:325;s:30:\"post-excerpt/style-rtl.min.css\";i:326;s:22:\"post-excerpt/style.css\";i:327;s:26:\"post-excerpt/style.min.css\";i:328;s:34:\"post-featured-image/editor-rtl.css\";i:329;s:38:\"post-featured-image/editor-rtl.min.css\";i:330;s:30:\"post-featured-image/editor.css\";i:331;s:34:\"post-featured-image/editor.min.css\";i:332;s:33:\"post-featured-image/style-rtl.css\";i:333;s:37:\"post-featured-image/style-rtl.min.css\";i:334;s:29:\"post-featured-image/style.css\";i:335;s:33:\"post-featured-image/style.min.css\";i:336;s:34:\"post-navigation-link/style-rtl.css\";i:337;s:38:\"post-navigation-link/style-rtl.min.css\";i:338;s:30:\"post-navigation-link/style.css\";i:339;s:34:\"post-navigation-link/style.min.css\";i:340;s:28:\"post-template/editor-rtl.css\";i:341;s:32:\"post-template/editor-rtl.min.css\";i:342;s:24:\"post-template/editor.css\";i:343;s:28:\"post-template/editor.min.css\";i:344;s:27:\"post-template/style-rtl.css\";i:345;s:31:\"post-template/style-rtl.min.css\";i:346;s:23:\"post-template/style.css\";i:347;s:27:\"post-template/style.min.css\";i:348;s:24:\"post-terms/style-rtl.css\";i:349;s:28:\"post-terms/style-rtl.min.css\";i:350;s:20:\"post-terms/style.css\";i:351;s:24:\"post-terms/style.min.css\";i:352;s:24:\"post-title/style-rtl.css\";i:353;s:28:\"post-title/style-rtl.min.css\";i:354;s:20:\"post-title/style.css\";i:355;s:24:\"post-title/style.min.css\";i:356;s:26:\"preformatted/style-rtl.css\";i:357;s:30:\"preformatted/style-rtl.min.css\";i:358;s:22:\"preformatted/style.css\";i:359;s:26:\"preformatted/style.min.css\";i:360;s:24:\"pullquote/editor-rtl.css\";i:361;s:28:\"pullquote/editor-rtl.min.css\";i:362;s:20:\"pullquote/editor.css\";i:363;s:24:\"pullquote/editor.min.css\";i:364;s:23:\"pullquote/style-rtl.css\";i:365;s:27:\"pullquote/style-rtl.min.css\";i:366;s:19:\"pullquote/style.css\";i:367;s:23:\"pullquote/style.min.css\";i:368;s:23:\"pullquote/theme-rtl.css\";i:369;s:27:\"pullquote/theme-rtl.min.css\";i:370;s:19:\"pullquote/theme.css\";i:371;s:23:\"pullquote/theme.min.css\";i:372;s:39:\"query-pagination-numbers/editor-rtl.css\";i:373;s:43:\"query-pagination-numbers/editor-rtl.min.css\";i:374;s:35:\"query-pagination-numbers/editor.css\";i:375;s:39:\"query-pagination-numbers/editor.min.css\";i:376;s:31:\"query-pagination/editor-rtl.css\";i:377;s:35:\"query-pagination/editor-rtl.min.css\";i:378;s:27:\"query-pagination/editor.css\";i:379;s:31:\"query-pagination/editor.min.css\";i:380;s:30:\"query-pagination/style-rtl.css\";i:381;s:34:\"query-pagination/style-rtl.min.css\";i:382;s:26:\"query-pagination/style.css\";i:383;s:30:\"query-pagination/style.min.css\";i:384;s:25:\"query-title/style-rtl.css\";i:385;s:29:\"query-title/style-rtl.min.css\";i:386;s:21:\"query-title/style.css\";i:387;s:25:\"query-title/style.min.css\";i:388;s:20:\"query/editor-rtl.css\";i:389;s:24:\"query/editor-rtl.min.css\";i:390;s:16:\"query/editor.css\";i:391;s:20:\"query/editor.min.css\";i:392;s:19:\"quote/style-rtl.css\";i:393;s:23:\"quote/style-rtl.min.css\";i:394;s:15:\"quote/style.css\";i:395;s:19:\"quote/style.min.css\";i:396;s:19:\"quote/theme-rtl.css\";i:397;s:23:\"quote/theme-rtl.min.css\";i:398;s:15:\"quote/theme.css\";i:399;s:19:\"quote/theme.min.css\";i:400;s:23:\"read-more/style-rtl.css\";i:401;s:27:\"read-more/style-rtl.min.css\";i:402;s:19:\"read-more/style.css\";i:403;s:23:\"read-more/style.min.css\";i:404;s:18:\"rss/editor-rtl.css\";i:405;s:22:\"rss/editor-rtl.min.css\";i:406;s:14:\"rss/editor.css\";i:407;s:18:\"rss/editor.min.css\";i:408;s:17:\"rss/style-rtl.css\";i:409;s:21:\"rss/style-rtl.min.css\";i:410;s:13:\"rss/style.css\";i:411;s:17:\"rss/style.min.css\";i:412;s:21:\"search/editor-rtl.css\";i:413;s:25:\"search/editor-rtl.min.css\";i:414;s:17:\"search/editor.css\";i:415;s:21:\"search/editor.min.css\";i:416;s:20:\"search/style-rtl.css\";i:417;s:24:\"search/style-rtl.min.css\";i:418;s:16:\"search/style.css\";i:419;s:20:\"search/style.min.css\";i:420;s:20:\"search/theme-rtl.css\";i:421;s:24:\"search/theme-rtl.min.css\";i:422;s:16:\"search/theme.css\";i:423;s:20:\"search/theme.min.css\";i:424;s:24:\"separator/editor-rtl.css\";i:425;s:28:\"separator/editor-rtl.min.css\";i:426;s:20:\"separator/editor.css\";i:427;s:24:\"separator/editor.min.css\";i:428;s:23:\"separator/style-rtl.css\";i:429;s:27:\"separator/style-rtl.min.css\";i:430;s:19:\"separator/style.css\";i:431;s:23:\"separator/style.min.css\";i:432;s:23:\"separator/theme-rtl.css\";i:433;s:27:\"separator/theme-rtl.min.css\";i:434;s:19:\"separator/theme.css\";i:435;s:23:\"separator/theme.min.css\";i:436;s:24:\"shortcode/editor-rtl.css\";i:437;s:28:\"shortcode/editor-rtl.min.css\";i:438;s:20:\"shortcode/editor.css\";i:439;s:24:\"shortcode/editor.min.css\";i:440;s:24:\"site-logo/editor-rtl.css\";i:441;s:28:\"site-logo/editor-rtl.min.css\";i:442;s:20:\"site-logo/editor.css\";i:443;s:24:\"site-logo/editor.min.css\";i:444;s:23:\"site-logo/style-rtl.css\";i:445;s:27:\"site-logo/style-rtl.min.css\";i:446;s:19:\"site-logo/style.css\";i:447;s:23:\"site-logo/style.min.css\";i:448;s:27:\"site-tagline/editor-rtl.css\";i:449;s:31:\"site-tagline/editor-rtl.min.css\";i:450;s:23:\"site-tagline/editor.css\";i:451;s:27:\"site-tagline/editor.min.css\";i:452;s:26:\"site-tagline/style-rtl.css\";i:453;s:30:\"site-tagline/style-rtl.min.css\";i:454;s:22:\"site-tagline/style.css\";i:455;s:26:\"site-tagline/style.min.css\";i:456;s:25:\"site-title/editor-rtl.css\";i:457;s:29:\"site-title/editor-rtl.min.css\";i:458;s:21:\"site-title/editor.css\";i:459;s:25:\"site-title/editor.min.css\";i:460;s:24:\"site-title/style-rtl.css\";i:461;s:28:\"site-title/style-rtl.min.css\";i:462;s:20:\"site-title/style.css\";i:463;s:24:\"site-title/style.min.css\";i:464;s:26:\"social-link/editor-rtl.css\";i:465;s:30:\"social-link/editor-rtl.min.css\";i:466;s:22:\"social-link/editor.css\";i:467;s:26:\"social-link/editor.min.css\";i:468;s:27:\"social-links/editor-rtl.css\";i:469;s:31:\"social-links/editor-rtl.min.css\";i:470;s:23:\"social-links/editor.css\";i:471;s:27:\"social-links/editor.min.css\";i:472;s:26:\"social-links/style-rtl.css\";i:473;s:30:\"social-links/style-rtl.min.css\";i:474;s:22:\"social-links/style.css\";i:475;s:26:\"social-links/style.min.css\";i:476;s:21:\"spacer/editor-rtl.css\";i:477;s:25:\"spacer/editor-rtl.min.css\";i:478;s:17:\"spacer/editor.css\";i:479;s:21:\"spacer/editor.min.css\";i:480;s:20:\"spacer/style-rtl.css\";i:481;s:24:\"spacer/style-rtl.min.css\";i:482;s:16:\"spacer/style.css\";i:483;s:20:\"spacer/style.min.css\";i:484;s:20:\"table/editor-rtl.css\";i:485;s:24:\"table/editor-rtl.min.css\";i:486;s:16:\"table/editor.css\";i:487;s:20:\"table/editor.min.css\";i:488;s:19:\"table/style-rtl.css\";i:489;s:23:\"table/style-rtl.min.css\";i:490;s:15:\"table/style.css\";i:491;s:19:\"table/style.min.css\";i:492;s:19:\"table/theme-rtl.css\";i:493;s:23:\"table/theme-rtl.min.css\";i:494;s:15:\"table/theme.css\";i:495;s:19:\"table/theme.min.css\";i:496;s:24:\"tag-cloud/editor-rtl.css\";i:497;s:28:\"tag-cloud/editor-rtl.min.css\";i:498;s:20:\"tag-cloud/editor.css\";i:499;s:24:\"tag-cloud/editor.min.css\";i:500;s:23:\"tag-cloud/style-rtl.css\";i:501;s:27:\"tag-cloud/style-rtl.min.css\";i:502;s:19:\"tag-cloud/style.css\";i:503;s:23:\"tag-cloud/style.min.css\";i:504;s:28:\"template-part/editor-rtl.css\";i:505;s:32:\"template-part/editor-rtl.min.css\";i:506;s:24:\"template-part/editor.css\";i:507;s:28:\"template-part/editor.min.css\";i:508;s:27:\"template-part/theme-rtl.css\";i:509;s:31:\"template-part/theme-rtl.min.css\";i:510;s:23:\"template-part/theme.css\";i:511;s:27:\"template-part/theme.min.css\";i:512;s:30:\"term-description/style-rtl.css\";i:513;s:34:\"term-description/style-rtl.min.css\";i:514;s:26:\"term-description/style.css\";i:515;s:30:\"term-description/style.min.css\";i:516;s:27:\"text-columns/editor-rtl.css\";i:517;s:31:\"text-columns/editor-rtl.min.css\";i:518;s:23:\"text-columns/editor.css\";i:519;s:27:\"text-columns/editor.min.css\";i:520;s:26:\"text-columns/style-rtl.css\";i:521;s:30:\"text-columns/style-rtl.min.css\";i:522;s:22:\"text-columns/style.css\";i:523;s:26:\"text-columns/style.min.css\";i:524;s:19:\"verse/style-rtl.css\";i:525;s:23:\"verse/style-rtl.min.css\";i:526;s:15:\"verse/style.css\";i:527;s:19:\"verse/style.min.css\";i:528;s:20:\"video/editor-rtl.css\";i:529;s:24:\"video/editor-rtl.min.css\";i:530;s:16:\"video/editor.css\";i:531;s:20:\"video/editor.min.css\";i:532;s:19:\"video/style-rtl.css\";i:533;s:23:\"video/style-rtl.min.css\";i:534;s:15:\"video/style.css\";i:535;s:19:\"video/style.min.css\";i:536;s:19:\"video/theme-rtl.css\";i:537;s:23:\"video/theme-rtl.min.css\";i:538;s:15:\"video/theme.css\";i:539;s:19:\"video/theme.min.css\";}}','on'), -(124,'_transient_doing_cron','1744240463.4742639064788818359375','on'), -(125,'wp_graphql_version','2.1.1','auto'), -(126,'_site_transient_timeout_theme_roots','1744242216','off'), -(127,'_site_transient_theme_roots','a:1:{s:4:\"nude\";s:7:\"/themes\";}','off'), +(124,'_transient_doing_cron','1754001619.0535459518432617187500','on'), +(125,'wp_graphql_version','2.3.3','auto'), (128,'theme_mods_twentytwentyfive','a:1:{s:16:\"sidebars_widgets\";a:2:{s:4:\"time\";i:1744240396;s:4:\"data\";a:3:{s:19:\"wp_inactive_widgets\";a:0:{}s:9:\"sidebar-1\";a:3:{i:0;s:7:\"block-2\";i:1;s:7:\"block-3\";i:2;s:7:\"block-4\";}s:9:\"sidebar-2\";a:2:{i:0;s:7:\"block-5\";i:1;s:7:\"block-6\";}}}}','off'), (129,'current_theme','Nude','auto'), (130,'theme_switched','','auto'), -(131,'_site_transient_timeout_wp_theme_files_patterns-95e83268faf2ddbb8914f2103a03f857','1744242196','off'), -(132,'_site_transient_wp_theme_files_patterns-95e83268faf2ddbb8914f2103a03f857','a:2:{s:7:\"version\";s:3:\"1.2\";s:8:\"patterns\";a:0:{}}','off'), (133,'theme_mods_nude','a:2:{s:18:\"nav_menu_locations\";a:0:{}s:18:\"custom_css_post_id\";i:-1;}','auto'), (134,'_transient_wp_styles_for_blocks','a:2:{s:4:\"hash\";s:32:\"8c7d46a72d7d4591fc1dd9485bedb304\";s:6:\"blocks\";a:5:{s:11:\"core/button\";s:0:\"\";s:14:\"core/site-logo\";s:0:\"\";s:18:\"core/post-template\";s:120:\":where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}\";s:12:\"core/columns\";s:102:\":where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}\";s:14:\"core/pullquote\";s:69:\":root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}\";}}','on'), -(135,'_site_transient_update_core','O:8:\"stdClass\":4:{s:7:\"updates\";a:1:{i:0;O:8:\"stdClass\":10:{s:8:\"response\";s:6:\"latest\";s:8:\"download\";s:59:\"https://downloads.wordpress.org/release/wordpress-6.7.2.zip\";s:6:\"locale\";s:5:\"en_US\";s:8:\"packages\";O:8:\"stdClass\":5:{s:4:\"full\";s:59:\"https://downloads.wordpress.org/release/wordpress-6.7.2.zip\";s:10:\"no_content\";s:70:\"https://downloads.wordpress.org/release/wordpress-6.7.2-no-content.zip\";s:11:\"new_bundled\";s:71:\"https://downloads.wordpress.org/release/wordpress-6.7.2-new-bundled.zip\";s:7:\"partial\";s:0:\"\";s:8:\"rollback\";s:0:\"\";}s:7:\"current\";s:5:\"6.7.2\";s:7:\"version\";s:5:\"6.7.2\";s:11:\"php_version\";s:6:\"7.2.24\";s:13:\"mysql_version\";s:5:\"5.5.5\";s:11:\"new_bundled\";s:3:\"6.7\";s:15:\"partial_version\";s:0:\"\";}}s:12:\"last_checked\";i:1744240416;s:15:\"version_checked\";s:5:\"6.7.2\";s:12:\"translations\";a:0:{}}','off'), -(137,'_site_transient_update_themes','O:8:\"stdClass\":5:{s:12:\"last_checked\";i:1744240430;s:7:\"checked\";a:1:{s:4:\"nude\";s:3:\"1.2\";}s:8:\"response\";a:0:{}s:9:\"no_update\";a:1:{s:4:\"nude\";a:6:{s:5:\"theme\";s:4:\"nude\";s:11:\"new_version\";s:3:\"1.2\";s:3:\"url\";s:34:\"https://wordpress.org/themes/nude/\";s:7:\"package\";s:50:\"https://downloads.wordpress.org/theme/nude.1.2.zip\";s:8:\"requires\";s:3:\"4.1\";s:12:\"requires_php\";b:0;}}s:12:\"translations\";a:0:{}}','off'), +(135,'_site_transient_update_core','O:8:\"stdClass\":4:{s:7:\"updates\";a:1:{i:0;O:8:\"stdClass\":10:{s:8:\"response\";s:6:\"latest\";s:8:\"download\";s:59:\"https://downloads.wordpress.org/release/wordpress-6.8.2.zip\";s:6:\"locale\";s:5:\"en_US\";s:8:\"packages\";O:8:\"stdClass\":5:{s:4:\"full\";s:59:\"https://downloads.wordpress.org/release/wordpress-6.8.2.zip\";s:10:\"no_content\";s:70:\"https://downloads.wordpress.org/release/wordpress-6.8.2-no-content.zip\";s:11:\"new_bundled\";s:71:\"https://downloads.wordpress.org/release/wordpress-6.8.2-new-bundled.zip\";s:7:\"partial\";s:0:\"\";s:8:\"rollback\";s:0:\"\";}s:7:\"current\";s:5:\"6.8.2\";s:7:\"version\";s:5:\"6.8.2\";s:11:\"php_version\";s:6:\"7.2.24\";s:13:\"mysql_version\";s:5:\"5.5.5\";s:11:\"new_bundled\";s:3:\"6.7\";s:15:\"partial_version\";s:0:\"\";}}s:12:\"last_checked\";i:1753995795;s:15:\"version_checked\";s:5:\"6.8.2\";s:12:\"translations\";a:0:{}}','off'), +(137,'_site_transient_update_themes','O:8:\"stdClass\":5:{s:12:\"last_checked\";i:1753995796;s:7:\"checked\";a:1:{s:4:\"nude\";s:3:\"1.2\";}s:8:\"response\";a:0:{}s:9:\"no_update\";a:1:{s:4:\"nude\";a:6:{s:5:\"theme\";s:4:\"nude\";s:11:\"new_version\";s:3:\"1.2\";s:3:\"url\";s:34:\"https://wordpress.org/themes/nude/\";s:7:\"package\";s:50:\"https://downloads.wordpress.org/theme/nude.1.2.zip\";s:8:\"requires\";s:3:\"4.1\";s:12:\"requires_php\";b:0;}}s:12:\"translations\";a:0:{}}','off'), (138,'graphql_general_settings','','auto'), -(139,'_site_transient_timeout_browser_d6dcc0a6def5582f8d3a9f7f2addb88b','1744845217','off'), -(140,'_site_transient_browser_d6dcc0a6def5582f8d3a9f7f2addb88b','a:10:{s:4:\"name\";s:6:\"Chrome\";s:7:\"version\";s:9:\"135.0.0.0\";s:8:\"platform\";s:9:\"Macintosh\";s:10:\"update_url\";s:29:\"https://www.google.com/chrome\";s:7:\"img_src\";s:43:\"http://s.w.org/images/browsers/chrome.png?1\";s:11:\"img_src_ssl\";s:44:\"https://s.w.org/images/browsers/chrome.png?1\";s:15:\"current_version\";s:2:\"18\";s:7:\"upgrade\";b:0;s:8:\"insecure\";b:0;s:6:\"mobile\";b:0;}','off'), -(141,'_site_transient_timeout_php_check_a0b03c46dbe37253c3391e32a7bb296f','1744845217','off'), -(142,'_site_transient_php_check_a0b03c46dbe37253c3391e32a7bb296f','a:5:{s:19:\"recommended_version\";s:3:\"7.4\";s:15:\"minimum_version\";s:6:\"7.2.24\";s:12:\"is_supported\";b:1;s:9:\"is_secure\";b:1;s:13:\"is_acceptable\";b:1;}','off'), -(143,'can_compress_scripts','0','on'), -(144,'_site_transient_timeout_community-events-44485c287b35f6187af786644b0948c8','1744283617','off'), -(145,'_site_transient_community-events-44485c287b35f6187af786644b0948c8','a:4:{s:9:\"sandboxed\";b:0;s:5:\"error\";N;s:8:\"location\";a:1:{s:2:\"ip\";s:12:\"192.168.65.0\";}s:6:\"events\";a:2:{i:0;a:10:{s:4:\"type\";s:6:\"meetup\";s:5:\"title\";s:42:\"Vancouver WordPress - April Social Hangout\";s:3:\"url\";s:72:\"https://www.meetup.com/vancouver-wordpress-meetup-group/events/306795662\";s:6:\"meetup\";s:36:\"The Vancouver WordPress Meetup Group\";s:10:\"meetup_url\";s:56:\"https://www.meetup.com/vancouver-wordpress-meetup-group/\";s:4:\"date\";s:19:\"2025-04-09 18:00:00\";s:8:\"end_date\";s:19:\"2025-04-09 20:00:00\";s:20:\"start_unix_timestamp\";i:1744246800;s:18:\"end_unix_timestamp\";i:1744254000;s:8:\"location\";a:4:{s:8:\"location\";s:21:\"Vancouver, BC, Canada\";s:7:\"country\";s:2:\"ca\";s:8:\"latitude\";d:49.280117;s:9:\"longitude\";d:-123.114876;}}i:1;a:10:{s:4:\"type\";s:8:\"wordcamp\";s:5:\"title\";s:11:\"WordCamp US\";s:3:\"url\";s:29:\"https://us.wordcamp.org/2025/\";s:6:\"meetup\";N;s:10:\"meetup_url\";N;s:4:\"date\";s:19:\"2025-08-26 00:00:00\";s:8:\"end_date\";s:19:\"2025-08-29 00:00:00\";s:20:\"start_unix_timestamp\";i:1756191600;s:18:\"end_unix_timestamp\";i:1756450800;s:8:\"location\";a:4:{s:8:\"location\";s:21:\"Portland, Oregon, USA\";s:7:\"country\";s:2:\"US\";s:8:\"latitude\";d:45.5283308;s:9:\"longitude\";d:-122.6634712;}}}}','off'), -(146,'_transient_timeout_feed_9bbd59226dc36b9b26cd43f15694c5c3','1744283617','off'), -(147,'_transient_feed_9bbd59226dc36b9b26cd43f15694c5c3','a:6:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n\n\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:52:\"\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:8:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"WordPress News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"https://wordpress.org/news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"The latest news about WordPress and the WordPress community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:13:\"lastBuildDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2025 16:13:35 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"en-US\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:9:\"generator\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"https://wordpress.org/?v=6.8-alpha-59827\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"image\";a:1:{i:0;a:6:{s:4:\"data\";s:11:\"\n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:5:{s:3:\"url\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://s.w.org/favicon.ico?2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"WordPress News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"https://wordpress.org/news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"width\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"32\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:6:\"height\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"32\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}s:4:\"item\";a:10:{i:0;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress 6.8 Release Candidate 3\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/04/wordpress-6-8-release-candidate-3/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2025 15:54:49 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6-8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18673\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:260:\"WordPress 6.8 RC 3 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing over the next week is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:8785:\"\n

The third release candidate (“RC3”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development.  Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, it’s recommended that you evaluate RC3 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone.  While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC3 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC3 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-RC3
WordPress PlaygroundUse the 6.8 RC3 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025. Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts leading up to next week’s release for further details.

\n\n\n\n

What’s in WordPress 6.8 RC3?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement. For more technical information related to issues addressed since RC2, you can browse the following links:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community that collaborates and contributes to its development. The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable. It’s also a meaningful way for anyone to contribute. This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report. You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.  For more details on developer-related changes in 6.8, please review the WordPress 6.8 Field Guide.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases.  With RC3, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English?  ¿Español?  Français?  Русский?  日本? हिन्दी? मराठी? বাংলা?  You can help translate WordPress into more than 100 languages.

\n\n\n\n

An RC3 haiku

\n\n\n\n

The launch draws closer,
Six-eight sings through RC3,
Almost time to shine.

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @audrasjb, @mamaduka, @krupajnanda, @benjamin_zekavica, @narenin, @joedolson, @courane01, @joemcgill, @marybaum, @kmgalanakis, @umeshsinghin, @wildworks, @mkrndmane.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18673\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress 6.8 Release Candidate 2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/04/wordpress-6-8-release-candidate-2/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 01 Apr 2025 15:53:20 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18662\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:367:\"The second Release Candidate (“RC2”) for WordPress 6.8 is ready for download and testing! This version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it’s recommended that you evaluate RC2 on a test server and site. Reaching this phase […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Jonathan Desrosiers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:8739:\"\n

The second Release Candidate (“RC2”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it’s recommended that you evaluate RC2 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone. While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC2 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC2 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update –version=6.8-RC2
WordPress PlaygroundUse the 6.8 RC2 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025.  Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for further details.

\n\n\n\n

What’s in WordPress 6.8 RC2?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement. For more technical information related to issues addressed since RC1, you can browse the following links:

\n\n\n\n\n\n\n\n

Want to look deeper into the details and technical notes for this release? These recent posts cover some of the latest updates:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community of people collaborating on and contributing to its development. The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable.  It’s also a meaningful way for anyone to contribute.  This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report.  You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled. Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases. With RC2, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English? ¿Español? Français? Русский? 日本語? हिन्दी? বাংলা? मराठी? ಕನ್ನಡ?  You can help translate WordPress into more than 100 languages. This release milestone (RC2) also marks the hard string freeze point of the 6.8 release cycle.

\n\n\n\n

An RC2 haiku

\n\n\n\n

Testing, 1, 2, 3
It’s almost April fifteenth
Squashing all the bugs

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @michelleames, @tacoverdo, @jopdop30, @vgnavada, @jeffpaul.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18662\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"WordPress 6.8 Release Candidate 1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/03/wordpress-6-8-release-candidate-1/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Mar 2025 16:19:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18639\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:267:\"WordPress 6.8 RC 1 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing over the next three weeks is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:9280:\"\n

The first Release Candidate (“RC1”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development.  Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, it’s recommended that you evaluate RC1 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone.  While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC1 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC1 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-RC1
WordPress PlaygroundUse the 6.8 RC1 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025.  Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for further details.

\n\n\n\n

What’s in WordPress 6.8 RC1?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement.  For more technical information related to issues addressed since Beta 3, you can browse the following links:

\n\n\n\n\n\n\n\n

Want to look deeper into the details and technical notes for this release? These recent posts cover some of the latest updates:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community of people collaborating on and contributing to its development.  The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable.  It’s also a meaningful way for anyone to contribute.  This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report.  You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases.  With RC1, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English?  ¿Español?  Français?  Русский?  日本語? हिन्दी? বাংলা? मराठी?  You can help translate WordPress into more than 100 languages.  This release milestone (RC1) also marks the hard string freeze point of the 6.8 release cycle.

\n\n\n\n

An RC1 haiku

\n\n\n\n

March fades, nearly there,
Six-eight hums—a steady beat,
RC greets the world.

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @joemcgill @benjamin_zekavica @courane01 @mkrndmane @audrasjb @areziaal @ankit-k-gupta @krupajnanda @bph.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18639\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"WordPress 6.8 Beta 3\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://wordpress.org/news/2025/03/wordpress-6-8-beta-3/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 18 Mar 2025 15:35:14 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18634\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:289:\"WordPress 6.8 Beta 3 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing Beta and RC versions over the next four weeks is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:5627:\"\n

WordPress 6.8 Beta 3 is now ready for testing!

\n\n\n\n

This beta version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it is recommended you evaluate Beta 3 on a test server and site.

\n\n\n\n

You can test WordPress 6.8 Beta 3 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the Beta 3 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-beta3
WordPress PlaygroundUse the 6.8 Beta 3 WordPress Playground instance to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target date for the final release of WordPress 6.8 is April 15, 2025. Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for more information.

\n\n\n\n

Catch up on what’s new in WordPress 6.8: Read the Beta 1 and Beta 2 announcements for details and highlights.

\n\n\n\n

How to test this release

\n\n\n\n

Your help testing the WordPress 6.8 Beta 3 version is key to ensuring everything in the release is the best it can be. While testing the upgrade process is essential, trying out new features is equally important. This detailed guide will walk you through testing features in WordPress 6.8.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report. You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Vulnerability bounty doubles during Beta/RC

\n\n\n\n

Between Beta 1, released on March 4, 2025, and the final Release Candidate (RC) scheduled for April 8, 2025, the monetary reward for reporting new, unreleased security vulnerabilities is doubled. Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Beta 3 updates and highlights

\n\n\n\n

WordPress 6.8 Beta 3 contains more than 3 Editor updates and fixes since the Beta 2 release, including 16 tickets for WordPress core.

\n\n\n\n

Each beta cycle focuses on bug fixes; more are on the way with your help through testing. You can browse the technical details for all issues addressed since Beta 3 using these links:

\n\n\n\n\n\n\n\n

A Beta 3 haiku

\n\n\n\n

Beta three refines,
WordPress shapes with steady hands,
Code grows into form.

\n\n\n\n

Props to @benjamin_zekavica @krupajnanda @ankit-k-gupta @joemcgill for proofreading and review.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18634\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"WordPress 6.8 Beta 2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://wordpress.org/news/2025/03/wordpress-6-8-beta-2/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 11 Mar 2025 15:46:13 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18619\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:289:\"WordPress 6.8 Beta 2 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing Beta and RC versions over the next five weeks is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:5940:\"\n

WordPress 6.8 Beta 2 is now ready for testing!

\n\n\n\n

This beta version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, you should evaluate Beta 2 on a test server and site.

\n\n\n\n

You can test WordPress 6.8 Beta 2 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream.)
Direct DownloadDownload the Beta 2 version (zip) and install it on a WordPress website.
Command LineUse this WP-CLI command: wp core update --version=6.8-beta2
WordPress PlaygroundUse the 6.8 Beta 2 WordPress Playground instance to test the software directly in your browser.  No setup is required–just click and go! 
\n\n\n\n

The current target date for the final release of WordPress 6.8 is April 15, 2025. Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for more information.

\n\n\n\n

Catch up on what’s new in WordPress 6.8: Read the Beta 1 announcement for details and highlights.

\n\n\n\n

How to test this release

\n\n\n\n

Your help testing the WordPress 6.8 Beta 2 version is key to ensuring everything in the release is the best it can be. While testing the upgrade process is essential, trying out new features is equally important.  This detailed guide will walk you through testing features in WordPress 6.8.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report. You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general? Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Vulnerability bounty doubles during Beta/RC

\n\n\n\n

Between Beta 1, released on March 4, 2025, and the final Release Candidate (RC) scheduled for April 8, 2025, the monetary reward for reporting new, unreleased security vulnerabilities is doubled. Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Beta 2 updates and highlights

\n\n\n\n

WordPress 6.8 Beta 2 contains more than 14 Editor updates and fixes since the Beta 1 release, including 21 tickets for WordPress core.

\n\n\n\n

Each beta cycle focuses on bug fixes; more are on the way with your help through testing. You can browse the technical details for all issues addressed since Beta 1 using these links:

\n\n\n\n\n\n\n\n

A Beta 2 haiku

\n\n\n\n

Second wave refines,
Lines of code like rivers flow,
WordPress finds its form.

\n\n\n\n

Props to @ankitkumarshah @vgnavada @krupajnanda @michelleames @audrasjb @marybaum @ecgan for proofreading and review.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18619\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:69:\"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:20:\"WordPress 6.8 Beta 1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://wordpress.org/news/2025/03/wordpress-6-8-beta-1/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 04 Mar 2025 17:09:45 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:5:{i:0;a:5:{s:4:\"data\";s:11:\"Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:3:\"6.8\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:3;a:5:{s:4:\"data\";s:11:\"development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:4;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18582\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:288:\"WordPress 6.8 Beta 1 is ready for download and testing! The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing Beta and RC versions over the next six weeks is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:10596:\"\n

WordPress 6.8 Beta 1 is ready for download and testing!

\n\n\n\n

This beta version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, set up a test environment or a local site to explore the new features.

\n\n\n\n

How to Test WordPress 6.8 Beta 1

\n\n\n\n

You can test this beta release in any of the following ways: 

\n\n\n\n
WordPress Beta Tester PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install. Select the “Bleeding edge” channel and “Beta/RC Only” stream.
Direct DownloadDownload the Beta 1 version (zip) and install it on a WordPress website.
Command Line (WP-CLI)Use this WP-CLI command: wp core update --version=6.8-beta1
WordPress PlaygroundUse a 6.8 Beta 1 WordPress Playground instance to test the software directly in your browser. No setup required–-just click and go!
\n\n\n\n

The scheduled final release date for WordPress 6.8 is April 15, 2025. Your help testing Beta and RC versions over the next six weeks is vital to ensuring the final release is everything it should be: stable, powerful, and intuitive.

\n\n\n\n

How important is your testing?

\n\n\n\n

Testing for issues is a critical part of developing any software, and it’s a meaningful way for anyone to contribute—whether or not you have experience.  Details on what to test in WordPress 6.8 are here.

\n\n\n\n

If you encounter an issue, please share it in the Alpha/Beta area of the support forums. If you are comfortable submitting a reproducible bug report, you can do so via WordPress Trac. You can also check your issue against this list of known bugs.

\n\n\n\n

Curious about testing releases in general and how to get started? Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

WordPress 6.8 will include many new features that were previously only available in the Gutenberg plugin. Learn more about Gutenberg updates since WordPress 6.7 in the What’s New in Gutenberg posts for versions 19.4, 19.5, 19.6, 19.7, 19.8, 19.9, 20.0, 20.1, 20.2, 20.3, and 20.4.

\n\n\n\n

What’s New in WordPress 6.8 Beta 1

\n\n\n\n

This is a polish release, with user enhancements throughout incorporated into the latest Gutenberg updates. WordPress 6.8 brings a luster and gloss that only a polish release can.

\n\n\n\n

WordPress 6.8 Beta 1 contains over 370 enhancements and 520 bug fixes for the editor, including design improvements, polishing the query loop, and more than 230 tickets for WordPress 6.8 Core. Here’s a glimpse of what’s coming:

\n\n\n\n

Editor improvements

\n\n\n\n

Easier ways to see your options in Data Views, and you can opt to ignore sticky posts in the Query Loop. Plus you’ll find lots of little improvements in the editor!

\n\n\n\n

The Style Book comes to Classic themes

\n\n\n\n

The Style Book now features a structured layout so you can preview site colors, typography, and block styles more easily. You can use the Style Book in classic themes with editor-styles or a theme.json file and includes clearer labels, and you can find them under Appearance > Design.

\n\n\n\n

Support for Speculation browser API

\n\n\n\n

WordPress 6.8 introduces native support for speculative loading, leveraging the Speculation Rules API to improve site performance with near-instant page loads. This feature prefetches or prerenders URLs based on user interactions, such as hovering over links, reducing load times for subsequent pages.

\n\n\n\n

By default, WordPress 6.8 applies a conservative prefetching strategy, balancing performance gains with resource efficiency. Developers can customize speculative loading behavior using new filters, since the API does not include UI-based controls. The existing Speculative Loading feature plugin will adapt to the core implementation, allowing deeper customization.  Please test this feature in supported browsers (currently Chrome 108+ and Edge 108+, with more browsers evaluating) and provide feedback on #62503 to help refine its implementation.

\n\n\n\n

Major security boost

\n\n\n\n

WordPress 6.8 will use bcrypt for password hashing, which significantly hardens WordPress. Other hashing is getting hardened, too, throughout the security apparatus. You won’t have to change anything in your daily workflow.

\n\n\n\n

The features included in this first beta may change before the final release of WordPress 6.8, based on what testers like you find.

\n\n\n\n

Get an overview of the 6.8 release cycle and check the Make WordPress Core blog for 6.8-related posts in the next few weeks for further details.

\n\n\n\n

Caveat on testing 6.8 Beta 1 in versions older than 5.1

\n\n\n\n

Due to an update made to the upgrade routine during this release, (see r59803), any upgrade from versions older than 5.1 will fail. Folks are working to resolve this specific issue, so please hold off on reporting on this while testing the Beta 1 release.

\n\n\n\n

Vulnerability bounty doubles during Beta & Release Candidate

\n\n\n\n

The WordPress community sponsors a monetary reward for reporting new, unreleased security vulnerabilities. This reward doubles during the period between Beta 1 on March 4, 2025 and the final Release Candidate (RC) scheduled for April 15, 2025.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies. You can find those on the HackerOne page and in the security white paper.

\n\n\n\n

Just for you: a Beta 1 haiku

\n\n\n\n

March winds shift the tide.
Hands unite in open source;
WordPress moves ahead.

\n\n\n\n

Props to @audrasjb @marybaum @mamaduka @michelleames @bph @jorbin @joemcgill @krupajnanda @desrosj @benjamin_zekavica @lysyjan87 for reviewing and collaborating on this post!

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18582\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:60:\"\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"Shaping Tomorrow at WordCamp Asia 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"https://wordpress.org/news/2025/02/shaping-tomorrow-at-wordcamp-asia-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 22 Feb 2025 15:04:04 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:6:\"Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"WordCamp\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18515\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:394:\"Over 1,400 attendees from 71 countries gathered at the Philippine International Convention Center in Manila, and nearly 15,000 more joined online, for WordCamp Asia 2025. It’s the people. It’s the friendships and the stories. Matt Mullenweg, WordPress Cofounder The flagship WordPress event started with a dedicated Contributor Day, followed by two days of engaging talks, […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:17:\"Nicholas Garofalo\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:56717:\"\n
\"WordCamp
\n\n\n\n

Over 1,400 attendees from 71 countries gathered at the Philippine International Convention Center in Manila, and nearly 15,000 more joined online, for WordCamp Asia 2025.

\n\n\n\n
\n

It’s the people. It’s the friendships and the stories.

Matt Mullenweg, WordPress Cofounder
\n
\n\n\n\n

The flagship WordPress event started with a dedicated Contributor Day, followed by two days of engaging talks, panels, hands-on workshops, and networking. Notable guests included WordPress Cofounder Matt Mullenweg and Gutenberg Lead Architect Matías Ventura, who were joined by a diverse lineup of speakers and panelists.

\n\n\n\n

Throughout the event, the sponsor hall buzzed with activity as companies from across the WordPress ecosystem showcased their latest products, engaged with attendees, and offered live demos and giveaways. Each day, attendees refueled with diverse food offerings featuring Filipino favorites, turning meals into a prime networking opportunity where new connections were made and ideas were exchanged.

\n\n\n\n

New Ways to Engage

\n\n\n\n

This year’s event introduced several new programs to the schedule:

\n\n\n\n
    \n
  • Solutions Spotlight—a series of dynamic 10-minute lightning talks that gave an inside look at innovative products, cutting-edge strategies, and real-world solutions from top-tier sponsors, all designed to help attendees succeed in the WordPress ecosystem. These fast-paced sessions offered a unique opportunity to discover how leading brands are solving challenges, empowering users, and shaping the future of WordPress.
  • \n\n\n\n
  • YouthCamp, a dedicated event for kids and teens ages 8-17, offered a full day of free, hands-on sessions designed to spark creativity and introduce the world of WordPress and open source. Through interactive workshops covering web basics, design, and development, participants gained practical skills while exploring the power of building online. 
  • \n\n\n\n
  • The new Career and Social Corners enhanced networking, fostered meaningful connections, and created new opportunities for those within the WordPress community. Career Corner was the go-to space for attendees exploring career opportunities, connecting with sponsors, and discovering exciting new roles. Meanwhile, Social Corner offered a relaxed, lounge-style environment where attendees could engage in informal discussions over refreshments.
  • \n
\n\n\n\n

Contributor Day

\n\n\n\n

WordCamp Asia kicked off with an incredible Contributor Day, bringing together almost 800 contributors, many of them new, to collaborate, share knowledge, and give back to WordPress. With 37 dedicated table leads and 16 experts from the Human Library guiding the way, participants of all experience levels engaged in meaningful discussions, tackled important tasks, and made a lasting impact on the WordPress project.

\n\n\n\n\n\n\n\n

Key contributions included resolving a critical media bug, advancing vertical text editing in Gutenberg, and refining the editing experience with dozens of issue closures. Performance optimizations and accessibility improvements abounded, joined by seven fresh patterns, and over 44,000 newly translated strings.

\n\n\n\n

New tools and workflows were explored to enhance testing and development. The day also saw meaningful conversations between hosting providers and users, improvements to event organizing processes, and hands-on training.

\n\n\n\n

With innovative ideas, new faces, and significant progress across multiple areas, Contributor Day reinforced the spirit of open source collaboration that drives WordPress forward.

\n\n\n\n

The Future is WordPress

\n\n\n\n

On the first full conference day, attendees gathered to celebrate the power of open source collaboration and innovation. Opening remarks from global and local event leads reflected on the incredible journey of WordCamp Asia, tracing its roots back to the first Southeast Asian WordCamp in Manila in 2008. This full-circle moment underscored how the WordPress community has flourished over the years, driven by shared knowledge and a commitment to an open web. The excitement continued with a highly anticipated opening keynote from Matías Ventura, who shared insights into the future of Gutenberg and WordPress, inspiring attendees to embrace the next wave of innovation and creativity in content publishing.

\n\n\n\n
\n\n
\n\n\n\n

The day then began in earnest. Talks highlighted new ways to integrate WordPress with external applications, opening possibilities for more interactive and scalable digital experiences. Simultaneously, content strategists and marketers explored evolving best practices in SEO, learning how to optimize their sites for visibility, engagement, and long-term growth. These sessions emphasized the importance of adaptability in a constantly evolving digital landscape, ensuring that WordPress users stay ahead of industry trends.

\n\n\n\n

Workshops throughout the day provided hands-on learning experiences tailored to a wide range of skill levels. Developers refined their expertise, gaining practical knowledge they could apply to their own projects. Accessibility advocates led discussions on designing for inclusivity, showcasing strategies to make WordPress-powered websites more navigable and user-friendly for people of all abilities.

\n\n\n\n

As the conference continued into the afternoon, conversations expanded to performance optimization and emerging technologies shaping the future of WordPress. A dedicated session explored AI-driven workflows, demonstrating how artificial intelligence can enhance site performance, automate repetitive tasks, and create more personalized user experiences. These discussions showcased the evolving role of WordPress as a versatile platform that extends beyond traditional publishing.

\n\n\n\n

The first day culminated in a thought-provoking keynote panel, WordPress in 2030, where industry leaders explored the future of the platform. The discussion covered the expanding open source community, emerging technologies, and the role of education and mentorship. Panelists shared their perspectives on the opportunities and challenges ahead, encouraging attendees to actively shape the future of WordPress by contributing, innovating, and advocating for an open web.

\n\n\n\n
\"Panelists
\n\n\n\n

Returning for the final day of WordCamp Asia 2025, attendees explored a new set of sessions designed to push the boundaries of web development and strategy. Technical discussions on advanced Gutenberg block development highlighted innovative ways to build more dynamic and interactive content experiences, while another session examined performance optimization strategies to enhance site speed, accessibility, and overall user engagement. Content creators and marketers gained valuable insights into audience growth, effective storytelling, and data-driven content strategies to maximize impact.

\n\n\n\n

The final sessions of the conference reinforced WordPress’s adaptability and innovation, equipping attendees with new skills and strategies.

\n\n\n\n

Q&A

\n\n\n\n

As the final day drew to a close, Matt shared historic photos from WordCamp Davao 2008 in the Philippines, and then answered questions from the audience.

\n\n\n\n
\n\n
\n\n\n\n

Questions covered a variety of topics, incluiding: publishing on the open web, AI, headless WordPress, education, and Matt’s personal motivations. It was clear throughout the Q&A that the future of WordPress is as bright as the island-themed attire at the event’s after-party.

\n\n\n\n

Closing

\n\n\n\n

Thank you to all the hard-working organizers who made this event possible, the speakers who took the stage, the visitors who ventured to Manila, and everyone who tuned in from around the world. Our hope is that every WordCamp attendee leaves with new knowledge, new friends, and new inspiration to build a better web.

\n\n\n\n\n\n\n\n

Be sure to mark your calendars for other major WordPress events in 2025: WordCamp Europe (Basel, Switzerland) and WordCamp US (Portland, Oregon, USA). Then join us in Mumbai, India for WordCamp Asia 2026!

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18515\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:57:\"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:25:\"Report: WordPress in 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"https://wordpress.org/news/2025/02/wordpress-in-2025-report/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 15 Feb 2025 03:19:09 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:7:\"General\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18475\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:379:\"This year is set to be transformative for WordPress, yet many decision-makers risk overlooking the immense opportunities ahead. Our new “WordPress in 2025” report highlights why WordPress should be a cornerstone of your long-term strategy. Stay ahead of the curve—read the report now to see how WordPress can drive growth and innovation for your business in the […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"Noel Tock\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:3721:\"\n

This year is set to be transformative for WordPress, yet many decision-makers risk overlooking the immense opportunities ahead. Our new “WordPress in 2025” report highlights why WordPress should be a cornerstone of your long-term strategy. Stay ahead of the curve—read the report now to see how WordPress can drive growth and innovation for your business in the years to come.

\n\n\n\n
\"\"
\n\n\n\n

Some of the key points we explore: 

\n\n\n\n
    \n
  • As proprietary “next-gen” CMS hype fizzles out and enterprise budgets shift priorities, open-source CMSs like WordPress are primed to gain ground in the commoditized CMS space. WordPress’ maturity and extensibility provide a high starting point for innovation.
  • \n\n\n\n
  • WordPress’ Block Editor has seen tremendous investment, amassing over 34,000 commits – more than entire competing CMS projects. New capabilities like Full Site Editing (FSE) give enterprises unprecedented ability to enable no-code site building.
  • \n\n\n\n
  • Just as being the first user-friendly publishing tool propelled WordPress’ initial growth, AI presents a similar opportunity. WordPress’ contributor community can build not just AI features, but an exciting multi-agent, LLM-agnostic ecosystem representing an intelligent content operating system.
  • \n\n\n\n
  • Pure-play headless vendors are working backwards to add no-code editing, while WordPress has long supported robust headless capabilities alongside its mature editor. For complex sites, hybrid architectures leveraging both are the pragmatic path forward.
  • \n
\n\n\n\n

Download the full WordPress in 2025 (PDF) report directly to learn more.

\n\n\n\n

Don’t miss WP:25, the virtual event.

\n\n\n\n

Save your spot at our free event, WP:25, exploring the future of WordPress and featuring key people working with many of the ideas discussed in the report.

\n\n\n\n
\n\n\n\n

About the report’s author, Noel Tock — Having built his first website back in 1995, Noel has long been watching the evolution of the CMS space. As a co-owner at one of the leading enterprise WordPress agencies, Human Made, his belief in the power of open source is as great as ever. Human Made is a WordPress VIP Gold Partner specializing in DXP, headless, AI and more.

\n\n\n\n

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18475\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:60:\"\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"WordCamp Asia 2025: Manila Magic\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"https://wordpress.org/news/2025/02/wordcamp-asia-2025-manila-magic/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 14 Feb 2025 16:04:45 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:6:\"Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"WordCamp\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18482\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:409:\"The first major WordCamp of the year is here! WordCamp Asia 2025 lands in Manila, Philippines, from February 20-22, bringing together open source enthusiasts, developers, and WordPress professionals from across the region—and the world. With three packed days of learning, networking, and collaboration, this year’s event promises fresh insights, dynamic discussions, and plenty of opportunities […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Bernard Meyer\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:4844:\"\n
\"WordCamp
\n\n\n\n

The first major WordCamp of the year is here! WordCamp Asia 2025 lands in Manila, Philippines, from February 20-22, bringing together open source enthusiasts, developers, and WordPress professionals from across the region—and the world.

\n\n\n\n

With three packed days of learning, networking, and collaboration, this year’s event promises fresh insights, dynamic discussions, and plenty of opportunities to connect.

\n\n\n\n

Solutions spotlight

\n\n\n\n

Throughout the conference days, multiple presentations will focus on the solutions provided by our amazing sponsors. This is a great opportunity to learn more about their initiatives and solutions.

\n\n\n\n\n\n\n\n

Keynotes, panels, and deep dives

\n\n\n\n

The main conference, which will be held on February 21-22, will feature a lineup of notable keynote speakers, including digital innovation leaders and open-source advocates. Attendees can expect diverse sessions on business strategy, development of best practices, and technical advancements.

\n\n\n\n

For those looking to sharpen their skills, presentations will dive deep into topics like SEO for WordPress, performance optimization, and AI-powered content creation. Plus, don’t miss the electrifying WordPress Speed Build Battle, where developers race to create stunning sites in record time.

\n\n\n\n

YouthCamp

\n\n\n\n

On February 22, WordCamp Asia 2025 will host YouthCamp, a pre-registered event designed to introduce young minds to WordPress and its endless possibilities. This initiative aims to engage the next generation of WordPress users, developers, and contributors through hands-on activities and interactive sessions

\n\n\n\n

Closing Q&A with Matt Mullenweg

\n\n\n\n

WordPress Cofounder Matt Mullenweg will wrap up the event with a live Q&A session on February 22. Whether attending in person or tuning in online, you can catch his insights live on the WordPress YouTube channel at 4:00 p.m. Philippine Time (08:00 UTC).

\n\n\n\n

After party

\n\n\n\n

As the sun sets on WordCamp Asia 2025, the excitement continues with the After Party (theme: Island Vibe)! Get ready to experience the vibrant spirit of the Philippines with a lively gathering at The Forum at PICC. Expect a night filled with great conversations, music, and a celebration of the WordPress community.

\n\n\n\n

Get WordCamp-ready

\n\n\n\n\n\n\n\n

As always, be part of the conversation! Whether you’re attending in Manila or following along online, share your experiences using #WCAsia and #WordPress.

\n\n\n\n

Manila is calling—see you at WordCamp Asia 2025!

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18482\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:57:\"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"WordPress 6.7.2 Maintenance Release\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"https://wordpress.org/news/2025/02/wordpress-6-7-2-maintenance-release/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 11 Feb 2025 16:52:23 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18445\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:371:\"WordPress 6.7.2 is now available! This minor release includes 35 bug fixes, addressing issues affecting multiple components including the block editor, HTML API, and Customize. WordPress 6.7.2 is a short-cycle release. The next major release will be version 6.8 planned for April 15, 2025. If you have sites that support automatic background updates, the update […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Aaron Jorbin\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:8487:\"\n

WordPress 6.7.2 is now available!

\n\n\n\n

This minor release includes 35 bug fixes, addressing issues affecting multiple components including the block editor, HTML API, and Customize.

\n\n\n\n

WordPress 6.7.2 is a short-cycle release. The next major release will be version 6.8 planned for April 15, 2025.

\n\n\n\n

If you have sites that support automatic background updates, the update process will begin automatically.

\n\n\n\n

You can download WordPress 6.7.2 from WordPress.org, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. For more information on this release, please visit the HelpHub site.

\n\n\n\n

Thank you to these WordPress contributors

\n\n\n\n

This release was led by Aaron Jorbin.

\n\n\n\n

WordPress 6.7.2 would not have been possible without the contributions of the following people. Their asynchronous coordination to deliver maintenance fixes into a stable release is a testament to the power and capability of the WordPress community.

\n\n\n\n

Aaron Jorbin, Alex Lende, Alexandre Buffet, Andreas Pedersen, Andrew Ozz, Ankit Kumar Shah, apermo, Benedikt Ledl, bernhard-reiter, Brian Alexander, Carlos Bravo, Carolina Nymark, Cyrille, Daniel Post, darerodz, David Calhoun, David Smith, Dennis Snell, dhewercorus, Dion Hulse, Doug Wollison, Ella, Eshaan Dabasiya, Fabian Kägy, Fabian Todt, Felix Arntz, Felix Renicks, Francis Cabusas, Frank B., George Mamadashvili, ghinamt, Glynn Quelch, Greg Ziółkowski, James Koster, Jarda Snajdr, Jb Audras, jdnd, jeryj, Joe Dolson, Joe McGill, Jon Surrell, Jonathan Desrosiers, juanwp22, Juliette Reinders Folmer, Karthick, Kazuto Takeshita, Kelly Choyce-Dwan, Ketan Niruke, Lena Morita, levskipg, Maciej Ma?kowiak, Mario Santos, Matthew Boynes, Mayank Tripathi, Michal Czaplinski, Miguel Fonseca, Mitchell Austin, mreishus, Mukesh Panchal, Nadir Seghir a11n, Narendra Sishodiya, Naresh Bheda, neotrope, Nick Diego, Olga Gleckler, Parth vataliya, Pascal Birchler, paullb, Peter Wilson, Pitam Dey, redkite, Rishav Dutta, robertstaddon, rvoigt, Sagar Tamang, Sainath Poojary, seanlanglands, Sergey Biryukov, Scott Reilly, Shyam Kariya, smerriman, Stephen Bernhardt, Sukhendu Sekhar Guria, TobiasBg, Tonya Mork, Vishy Moghan, Weston Ruter, wongjn, Yogesh Bhutkar, zaoyao

\n\n\n\n

How to contribute

\n\n\n\n

To get involved in WordPress core development, head over to Trac, pick a ticket, and join the conversation in the #core and #6-8-release-leads channels. Need help? Check out the Core Contributor Handbook.

\n\n\n\n

Props to @joedolson, @joemcgill and @audrasjb for proofreading.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18445\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}s:27:\"http://www.w3.org/2005/Atom\";a:1:{s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:4:\"href\";s:32:\"https://wordpress.org/news/feed/\";s:3:\"rel\";s:4:\"self\";s:4:\"type\";s:19:\"application/rss+xml\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:44:\"http://purl.org/rss/1.0/modules/syndication/\";a:2:{s:12:\"updatePeriod\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"\n hourly \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:15:\"updateFrequency\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"\n 1 \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:4:\"site\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"14607090\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";O:48:\"WpOrg\\Requests\\Utility\\CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:12:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Wed, 09 Apr 2025 23:13:37 GMT\";s:12:\"content-type\";s:34:\"application/rss+xml; charset=UTF-8\";s:4:\"vary\";s:37:\"Accept-Encoding, accept, content-type\";s:25:\"strict-transport-security\";s:12:\"max-age=3600\";s:6:\"x-olaf\";s:3:\"⛄\";s:13:\"last-modified\";s:29:\"Tue, 08 Apr 2025 16:13:35 GMT\";s:4:\"link\";s:63:\"; rel=\"https://api.w.org/\"\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:16:\"content-encoding\";s:2:\"br\";s:7:\"alt-svc\";s:19:\"h3=\":443\"; ma=86400\";s:4:\"x-nc\";s:9:\"HIT ord 1\";}}s:5:\"build\";i:1744240221;s:21:\"cache_expiration_time\";i:1744283617;s:23:\"__cache_expiration_time\";i:1744283617;}','off'), -(148,'_transient_timeout_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1744283617','off'), -(149,'_transient_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1744240417','off'), -(150,'_transient_timeout_feed_d117b5738fbd35bd8c0391cda1f2b5d9','1744283618','off'), -(151,'_transient_feed_d117b5738fbd35bd8c0391cda1f2b5d9','a:6:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n\n\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:61:\"\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"WordPress Planet\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://planet.wordpress.org/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"en\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"WordPress Planet - http://planet.wordpress.org/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"item\";a:50:{i:0;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"Gravatar: New ‘Tools’ For Your Digital Identity\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3137\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"https://blog.gravatar.com/2025/04/09/new-tools-for-your-digital-identity/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:3424:\"

Your Gravatar profile just got smarter with a handful of updates that make sharing your digital identity even easier.

\n\n\n\n

You will find them all under a new Tools menu in your profile editor, packed with features to help you connect and share across the web.

\n\n\n\n

Here’s what’s new:

\n\n\n\n

Card Customization

\n\n\n\n\"\"\n\n\n\n

Those little Gravatar cards that appear when you comment on WordPress sites and around the web? You’re now in control of how they look! Choose to include your header image, add a contact button, or enable the “send money” feature.

\n\n\n\n

It is the new digital business card. With one click, you can copy the HTML code for your card to display on any website.

\n\n\n\n

Find and edit your card under the new Tools > Card menu item.

\n\n\n\n

Email Signature Generator

\n\n\n\n\"\"\n\n\n\n

Make every email count with your personalized Gravatar signature. It’s like your card, but perfectly formatted for email. Copy the code once, paste it into Gmail, Outlook, or your preferred email tool, and you’re set.

\n\n\n\n

The email signature now has a new easier to find home under Tools > Email signature.

\n\n\n\n

Smart Redirects Get A Home

\n\n\n\n\"\"\n\n\n\n

For custom domain users, we’ve made it even easier to copy and share your smart redirects. These are the magic links Gravatar automatically creates for you – like your-name.link/linkedin or your-name.link/calendar.

\n\n\n\n

See the full list in one new place under Tools > Smart redirects.

\n\n\n\n

Private Messages, Simplified

\n\n\n\n\"\"\n\n\n\n

We’ve clarified how our simple contact form works with a dedicated Private messages menu. When enabled, anyone can send you a short message, but with important safeguards:

\n\n\n\n
    \n
  • They can only contact you once
  • \n\n\n\n
  • You see their complete Gravatar profile
  • \n\n\n\n
  • Your email and private contact info stays hidden
  • \n
\n\n\n\n

Enable the contact form on your profile under the new Tools > Private messages menu.

\n\n\n\n

These small improvements add up to a more connected, streamlined experience for your online identity. And as always, we’re working on more fun features and tools, so stay tuned!

\n\n\n\n

To check these out, edit your profile and look for the Tools option in the sidebar.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 17:23:50 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:21:\"Matt: AI Site Builder\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"https://ma.tt/?p=141197\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"https://ma.tt/2025/04/ai-site-builder/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:563:\"

The long-anticipated “Big Sky” AI site builder on WordPress.com went live today. It combines several models and can create logos, site designs, typography, color schemes, and content. It’s an entirely new way to interact with and edit a brand-new or existing WordPress site. This AI agent will make WordPress accessible to an entirely new generation and class of customers, and it will be a power tool for professionals to do things in minutes that used to take them hours.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 17:14:06 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Matt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:89:\"Do The Woo Community: Navigating the Accessibility Landscape: Real Stories with Bud Kraus\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=94129\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:87:\"https://dothewoo.io/navigating-the-accessibility-landscape-real-stories-with-bud-kraus/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:215:\"In this podcast episode, hosts Anne Bovelett and BobWP, along with guest Bud Kraus, explore ecommerce accessibility, discussing user experiences, challenges, and the importance of inclusive web design for all users.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 15:13:19 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:113:\"HeroPress: How WordPress Changed My Life — Gratitude – Como o WordPress Mudou a Minha Realidade – Gratidão\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://heropress.com/?post_type=heropress-essays&p=7856\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:152:\"https://heropress.com/essays/how-wordpress-changed-my-life-gratitude/#utm_source=rss&utm_medium=rss&utm_campaign=how-wordpress-changed-my-life-gratitude\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:22331:\"\"Pull\nHere is Caio reading his own story aloud.\n\n\n\n\n\n

O texto também está disponível em português do Brasil.

\n\n\n\n

My name is Caio Ferreira and I’ve been using WordPress since 2020. In this article I’ll tell you a little about my history with this platform and how it changed everything – from experimental business ideas – to a real professional experience.

\n\n\n\n

My childhood

\n\n\n\n

I’ve always been passionate about technology, even as a kid. When we got our first computer at home — one of those classic white models my father bought in many installments — it became the main attraction in the house. And rightfully so: it sat in the living room, where everyone could see it.

\n\n\n\n

Back then, I was already browsing the internet, exploring system settings, customizing Windows XP, and maybe (just maybe) installing a few viruses or unwanted installers here and there.

\n\n\n\n

Despite the limitations, I had a lot of fun creating blogs, managing Facebook communities, and trying out platforms like Blogger, Wix, Squarespace — basically anything free that allowed me to publish something online. I didn’t have much technical knowledge, and even less money to invest. But I already had this strong desire to share my ideas with the world.

\n\n\n\n

Discovering WordPress

\n\n\n\n

Besides the blogs, I loved creating websites for imaginary businesses that never really existed — and honestly wouldn’t work in any real-world scenario. But the excitement was real. Every time a new idea came up, I would recruit some friends to “invest” in it and try to convince them it was just a matter of time before we made a lot of money — like the success stories we saw on TV.

\n\n\n\n

In one of these pitches, I showed a site I had built on Wix to a more experienced friend, and he asked me:

\n\n\n\n
\n

“Why are you using Wix? Have you ever tried WordPress?”

\n
\n\n\n\n

That sparked something in me. I had heard of WordPress before but thought it was too complex. Plus, I was always stopped by the need for paid hosting.

\n\n\n\n

Still, my curiosity got the best of me. I started researching more seriously and quickly realized WordPress was far more powerful than any tool I had used before. But the cost barrier remained. So I put the idea on hold, waiting for the right time to dive in.

\n\n\n\n

High school: searching for direction

\n\n\n\n

High school felt like a marathon. I didn’t really know where I was going, but I knew I had to keep moving. I didn’t have any career role models, nor pressure to follow a specific path. The only reference points were what I saw on TV or heard from distant relatives — law, engineering… the so-called “safe” careers parents often dream of.

\n\n\n\n

Even without a clear direction, I was always committed. I learned English on my own playing RPGs online and created a Duolingo account back in 2014. I used to take part in school competitions — even math ones — not because I was the best, but because I saw them as a chance to stand out.

\n\n\n\n
\n

If I didn’t have obvious advantages, I’d create my own.

\n
\n\n\n\n

That mindset led me to participate in the Junior Achievement “Junior Company” program. Our school was selected to form a student-run fictional business, funded by the local government. That experience was life-changing.

\n\n\n\n

My junior company, volunteering, and a visit to a startup

\n\n\n\n

Even though I was just in my first year of high school — and technically under the age requirement — I asked to join the program and, more boldly, applied to be the company’s president. I put on a dress shirt, prepared a speech, and was elected.

\n\n\n\n

Despite having no real experience, we ended up doing well. Our project turned a small profit (a few reais per “shareholder,” but still, profit!). That success motivated me to stay involved with Junior Achievement. I started volunteering and joined more programs.

\n\n\n\n

One of those opportunities allowed me to spend a day inside a startup in Belo Horizonte. I had never even set foot in a corporate office before — let alone a startup with a playful office, relaxed people, and even a ball pit!

\n\n\n\n

I brought a notebook and wrote down everything I could. The whole experience left me stunned. Up until then, I thought work environments were dull and gray, with strict rules and judgment over things like shoes and dress codes.

\n\n\n\n

My first job — in that same company?

\n\n\n\n

A few days after the visit, encouraged by the staff, I created a LinkedIn profile and started sharing every experience I had, no matter how small. Around that time, they gave me access to a free WordPress course. I loved it. I wasn’t just taking the course — I was exploring on my own and learning as much as I could.

\n\n\n\n

I kept in touch with the people I had met, interacted with their posts, and shared my progress. Then, one day, I received a message that changed everything.

\n\n\n\n

One of the employees who hosted us at the office reached out: the company was looking for someone like me to join the team.

\n\n\n\n
\n

I had recorded a few videos after the visit expressing how much the experience meant to me — and somehow, that had reached them.

\n
\n\n\n\n

I was still finishing high school at the time, just 17 years old, when I got the offer. The following year, I started working there as an assistant and began my Computer Science degree on a scholarship.

\n\n\n\n

Promotion to developer

\n\n\n\n

In my first two years, I worked mostly with SEO and content distribution, handling a variety of CMS platforms. But WordPress had my heart from day one. Its flexibility, the power to customize everything, and the massive community — it was everything I loved.

\n\n\n\n

Eventually, an opportunity opened for an internal role as a web developer — and I jumped at it. I went through the selection process and got the position.

\n\n\n\n

Our team was partly based in Brazil, led by our manager Manny, who was in Canada. It was the perfect challenge: a chance to leave my comfort zone and practice English daily. Manny even learned a few Portuguese words with us.

\n\n\n\n
\n

As a developer, I dove deep into WordPress.

\n
\n\n\n\n

Each project pushed my limits and made me grow. It was around this time that I also got involved with the WordPress community in my city.

\n\n\n\n

How WordPress changed my reality

\n\n\n\n

WordPress turned out to be so much more than just a tool — it changed my life.

\n\n\n\n

With the income I earned through projects using the platform, I was able to make a down payment on my first apartment.

\n\n\n\n
\n

That same kid who couldn’t afford hosting fees was now buying property.

\n
\n\n\n\n

And it didn’t stop there. In 2022, I received a job offer from a company in the United States — something I would’ve never dreamed of just a few years earlier.

\n\n\n\n

That same year, I attended my first WordPress meetup (still during the pandemic), and later, my first WordCamp as a participant — held remotely in São Paulo. It felt like everything was starting to connect.

\n\n\n\n

And as if all that wasn’t enough, I married the love of my life. It was a simple ceremony, but one we had always dreamed of — made possible, in large part, thanks to the income I earned working with WordPress.

\n\n\n\n

Returning to the Community

\n\n\n\n

In 2025, we resumed in-person WordPress community meetups after the pandemic. I was nervous — what if no one showed up?

\n\n\n\n

But they did. We had 25 people, all engaged and eager to contribute, learn, and share. That meetup was a turning point for me.

\n\n\n\n
\n

I realized I could lead, organize, and give back.

\n
\n\n\n\n

Today, I’m actively involved in the community — helping plan events, staying connected with members, and always looking for new ways to contribute. WordPress didn’t just help me build a career — it helped shape who I am.

\n\n\n\n

The Importance of English

\n\n\n\n

Like Rafael shared in another HeroPress story, English remains a big challenge for many of us in Brazil — but also a powerful key.

\n\n\n\n

I’m far from fluent, but I keep learning. Each Duolingo lesson, each YouTube tutorial, each Slack conversation with my international team is a step forward.

\n\n\n\n
\n

What matters is not giving up.

\n
\n\n\n\n

Because if there’s one thing I’ve learned from this entire journey, it’s that everything can change. Sometimes, all we need is a small opportunity, a bit of encouragement — or simply, a platform like WordPress.

\n\n\n
\n\n
\n

Caio’s Work Environment

\n\n\n\n

We asked Caio for a view into his development life and this is what he sent!

\n\n\n
\n \"Caio\'s\n
\n\n\n\n\n

HeroPress would like to thank Draw Attention for their donation of the plugin to make this interactive image!

\n
\n\n
\n\n\n\n\n
\n\n\n\n

Como o WordPress Mudou a Minha Realidade – Gratidão

\n\n\n\nAqui está o Caio lendo sua própria história em voz alta.\n\n\n\n\n\n

Oi! Eu me chamo Caio Ferreira e venho utilizando o WordPress desde 2020. Hoje quero compartilhar um pouco da minha trajetória com essa plataforma e como ela transformou tudo na minha vida – desde ideias de negócios experimentais até uma carreira profissional de verdade.

\n\n\n\n

Na minha infância

\n\n\n\n

Sempre gostei muito de tecnologia desde pequeno. Ainda novo, quando recebemos o nosso primeiro computador em casa, tudo ainda era muito novo. Era um daqueles modelos brancos, que meu pai comprou dividido em muitas vezes, e que virou a atração da casa — também não era pra menos: ele ficava na sala de estar, onde todo mundo via.

\n\n\n\n

Naquele tempo, eu já navegava na internet, procurava formas de fuçar o sistema, personalizava o Windows XP do jeito que podia, e talvez (só talvez mesmo) tenha instalado alguns vírus ou instaladores indesejados algumas vezes.

\n\n\n\n

Apesar das limitações, eu me divertia criando blogs, gerenciando comunidades no Facebook e testando plataformas como Blogger, Wix, Squarespace, ou qualquer outra gratuita que me deixasse publicar algo online. Eu não tinha muito conhecimento técnico, e menos ainda dinheiro para investir. Mas já naquela época eu tinha essa vontade de compartilhar ideias com o mundo.

\n\n\n\n

Conhecendo o WordPress

\n\n\n\n

Além dos blogs, eu também gostava de criar sites para negócios fictícios, que nunca saíam do papel — e que, honestamente, provavelmente não dariam certo de qualquer jeito. Mas a empolgação era grande. Sempre que surgia uma ideia, eu chamava amigos para “investir” comigo, e tentava convencê-los de que era só uma questão de tempo até aquilo dar certo. Era como víamos nas reportagens de sucesso na televisão.

\n\n\n\n
\n

Em uma dessas aventuras, mostrei o site para um amigo mais experiente, que me perguntou por que eu estava usando o Wix. Ele comentou que existiam outras opções com mais possibilidades, como o WordPress.

\n
\n\n\n\n

Eu já tinha ouvido falar do WordPress, mas achava complexo demais — e, além disso, sempre esbarrava na questão da hospedagem paga.

\n\n\n\n

Mesmo assim, aquilo me deixou curioso. Comecei a pesquisar mais a fundo, entendi que o WordPress era muito mais robusto do que qualquer ferramenta que eu tinha usado até então, mas acabei deixando de lado naquele momento. Afinal, eu não tinha como pagar uma hospedagem. Guardei a ideia comigo, esperando por um momento em que ela fizesse mais sentido.

\n\n\n\n

Meu ensino médio

\n\n\n\n

O ensino médio foi uma maratona. Eu não sabia ao certo onde queria chegar, mas tinha pressa em encontrar esse “algum lugar”. Não tive exemplos próximos de carreira, nem cobrança direta para seguir determinada profissão. As referências eram as mesmas de muita gente: Direito? Engenharia? Os “cursos de sucesso” que a TV e alguns parentes diziam valer a pena.

\n\n\n\n

Mesmo sem um caminho definido, sempre fui esforçado. Aprendi inglês sozinho jogando RPG online e criei minha conta no Duolingo ainda em 2014. Me destacava em atividades que a maioria evitava — como concursos de matemática — mesmo sem ser o melhor.

\n\n\n\n
\n

A ideia era simples: se eu não tinha vantagens competitivas óbvias, eu criaria as minhas.

\n
\n\n\n\n

Me envolver nessas atividades era a forma que eu via para construir algo diferente, já que o mercado de trabalho viria logo.

\n\n\n\n

Foi com esse espírito que participei do programa Miniempresa da ONG Junior Achievement, onde minha escola foi selecionada para criar uma empresa estudantil fictícia, com tudo financiado pelo governo. Aquilo mudou tudo.

\n\n\n\n

Minha miniempresa, voluntariado e a primeira visita a uma startup

\n\n\n\n

Mesmo sendo do primeiro ano, pedi para participar do programa — mesmo sem ter a idade sugerida — e mais: me candidatei para presidente. Usei uma camisa social e um discurso bem montado, e fui escolhido para liderar a miniempresa.

\n\n\n\n

Apesar da falta de experiência, conseguimos um resultado positivo. A empresa gerou lucro (poucos reais para cada “acionista”, mas ainda assim, lucro). O programa me deixou animado, e comecei a me envolver em outras atividades da Junior Achievement, atuando como voluntário em eventos e ajudando em novos programas.

\n\n\n\n

Foi em uma dessas iniciativas que surgiu a oportunidade de visitar, por um dia, uma startup em Belo Horizonte. Eu nunca tinha imaginado sequer entrar na sede de uma empresa, quem dirá de uma startup com escritório descolado, pessoas à vontade, piscina de bolinha e um clima completamente diferente do que eu imaginava ser “trabalhar”.

\n\n\n\n

Levei um caderninho e anotei tudo o que pude. Saí de lá em estado de choque, pensando: “é possível trabalhar num lugar assim?”. Até então, tudo que eu imaginava era o oposto: ambientes cinzentos, baías sem graça e muita formalidade.

\n\n\n\n

Meu primeiro trabalho — e na mesma empresa?

\n\n\n\n

Poucos dias depois, incentivado pela visita, criei meu LinkedIn (com ajuda de quem nos recebeu na empresa) e comecei a registrar todas as experiências que já tinha vivido. Também recebi acesso a um curso de WordPress oferecido por eles. Gostei tanto da ferramenta que, além do curso, comecei a explorar muito por conta própria.

\n\n\n\n

Me mantive em contato com o pessoal da empresa, interagia nas redes, compartilhava o que estava aprendendo — até que uma mensagem mudou tudo.

\n\n\n\n

Uma das pessoas que nos recebeu durante a visita me chamou no privado: a empresa estava procurando alguém com o meu perfil para integrar o time.

\n\n\n\n
\n

Eu tinha gravado vídeos contando o quanto aquela experiência tinha me impactado, e isso, de alguma forma, chegou até eles.

\n
\n\n\n\n

Eu ainda estava finalizando o ensino médio, com 17 anos, quando recebi a proposta. No ano seguinte, comecei a trabalhar na empresa como assistente e iniciei minha graduação em Ciência da Computação, com uma bolsa de estudos.

\n\n\n\n

Minha promoção a desenvolvedor

\n\n\n\n

Durante os dois primeiros anos, trabalhei com SEO e distribuição de conteúdo, lidando com diversos CMSs. Mas foi o WordPress que capturou minha atenção desde o começo. A versatilidade, a comunidade, a possibilidade de personalização — tudo me encantava.

\n\n\n\n

Quando surgiu uma vaga internacional dentro da própria empresa para atuar como desenvolvedor web, me inscrevi sem pensar duas vezes. Passei por um processo interno, fui aprovado e comecei a atuar em projetos mais técnicos.

\n\n\n\n

Nosso time era parcialmente brasileiro e liderado pelo Manny, nosso gerente no Canadá. Foi um baita desafio — e uma excelente oportunidade para praticar inglês no dia a dia. Ele, inclusive, chegou a aprender algumas palavras em português com a gente.

\n\n\n\n
\n

No novo cargo, mergulhei ainda mais fundo no desenvolvimento com WordPress.

\n
\n\n\n\n

Era ali que eu percebia: cada novo desafio me tirava da zona de conforto, mas me deixava mais preparado.

\n\n\n\n

Como o WordPress transformou minha realidade

\n\n\n\n

O WordPress foi muito mais do que uma ferramenta de trabalho. Ele transformou minha realidade.

\n\n\n\n

Com o que ganhei trabalhando com a plataforma, consegui dar entrada no meu apartamento.

\n\n\n\n
\n

Isso mesmo — aquele mesmo garoto que não podia pagar uma hospedagem agora realizava um sonho pessoal.

\n
\n\n\n\n

E não parou por aí. Em 2022, recebi uma proposta de trabalho de uma empresa dos Estados Unidos. Algo que, anos antes, eu não ousava nem imaginar.

\n\n\n\n

Naquele mesmo ano, participei do meu primeiro meetup (ainda durante a pandemia), e também do meu primeiro WordCamp como participante — que aconteceu remotamente, em São Paulo. A sensação era de que tudo estava se encaixando.

\n\n\n\n

E como se não bastasse, me casei com o amor da minha vida. Foi uma cerimônia simples, mas do jeito que sempre sonhamos — e que só foi possível, em grande parte, graças à renda que conquistei trabalhando com WordPress.

\n\n\n\n

Retorno à comunidade

\n\n\n\n

Em 2025, com o fim do período pandêmico, retomamos os encontros presenciais da comunidade WordPress da minha cidade. A ansiedade era inevitável: e se ninguém aparecesse?

\n\n\n\n

Mas apareceram. Foram 25 pessoas — todas engajadas, com vontade de aprender, ensinar, trocar experiências. Aquilo foi um divisor de águas pra mim.

\n\n\n\n
\n

Eu entendi que podia liderar, contribuir, devolver um pouco do que recebi.

\n
\n\n\n\n

Hoje, mantenho contato constante com membros da comunidade, ajudo na organização de encontros e eventos, e continuo buscando espaços e oportunidades para fortalecer esse ecossistema. O WordPress não só me ajudou a construir uma carreira — ele ajudou a moldar quem eu sou.

\n\n\n\n

A importância do inglês

\n\n\n\n

Assim como o Rafael contou em outro texto aqui no HeroPress, o inglês ainda é uma barreira para muitos brasileiros. Mas também é uma chave. Uma chave que, quando girada, abre portas para oportunidades inimagináveis.

\n\n\n\n

Eu não sou fluente. Mas sigo aprendendo. Cada lição no Duolingo, cada vídeo no YouTube, cada conversa improvisada no Slack internacional da empresa é uma forma de evoluir.

\n\n\n\n
\n

O importante é seguir — mesmo aos poucos, com tropeços.

\n
\n\n\n\n

Porque se tem uma coisa que aprendi nessa jornada toda, é que tudo pode mudar. Às vezes, tudo o que a gente precisa é de um empurrãozinho, uma oportunidade, ou simplesmente… uma plataforma como o WordPress.

\n

The post How WordPress Changed My Life — Gratitude – Como o WordPress Mudou a Minha Realidade – Gratidão appeared first on HeroPress.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 14:54:01 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:13:\"Caio Ferreira\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:93:\"WPTavern: 164 – Milana Cap on the Interactivity and HTML APIs, and Their Enormous Potential\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=194643\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:107:\"https://wptavern.com/podcast/164-milana-cap-on-the-interactivity-and-html-apis-and-their-enormous-potential\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:44216:\"Transcript
\n

[00:00:00] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress, the people, the events, the plugins, the blocks, the themes, and in this case, how the Interactivity and HTML APIs are transforming the way developers work with WordPress.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox and use the form there.

\n\n\n\n

So on the podcast today, we have Milana Cap. Milana is a seasoned WordPress engineer from Serbia working with XWP, and freelancing through Toptal. She’s not just a developer, she’s also active in WordPress community roles such as a co-rep for the documentation team, organizer at multiple WordCamps, and a member of the plugin review team.

\n\n\n\n

We discussed some groundbreaking WordPress features that developers should be aware of, specifically focusing on her presentation at WordCamp Asia in Manila, titled, WordPress gems for developers: Fresh new features you’ll actually want to use.

\n\n\n\n

We start the discussion with the Interactivity API. Milana explains how this feature allows blocks within WordPress to communicate seamlessly with one another. Until now, most blocks were just silos of information, they could not communicate with one another. This API enables developers to manage interactivity across multiple blocks without resorting to custom solutions.

\n\n\n\n

Milana also gets into the HTML API, which underpins the Interactivity API. This empowers developers to manipulate HTML attributes using PHP, thereby reducing the reliance on JavaScript. This not only enhances page load speeds, but also simplifies the code management process. It’s not something that I’d heard of, but Milana explains how important it can be in rewriting the DOM for whatever goals you have in mind.

\n\n\n\n

Throughout the episode, Milana shares examples of these APIs in action, demonstrating how they can simplify and optimize WordPress development projects, particularly at an enterprise level.

\n\n\n\n

If you’re a developer looking to leverage these new WordPress features, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

\n\n\n\n

And so, without further delay, I bring you Milana Cap.

\n\n\n\n

I am joined on the podcast by Milana Cap.

\n\n\n\n

[00:03:32] Milana Cap: Yes. Thank you.

\n\n\n\n

[00:03:33] Nathan Wrigley: Thank you. I’ve had to practice that name several times. It’s lovely to have you on the podcast today. I’ve never spoken to Milana before, although I’ve seen her from afar many times.

\n\n\n\n

And we’re facing each other because we’re in the Philippines. We’re in Manila. It’s WordCamp Asia, and Milana is doing a presentation at the event. It is called WordPress gems for developers: fresh new features you’ll actually want to use.

\n\n\n\n

Before we get into that conversation Milana, will you just spend a moment introducing yourself. Tell us who you are, where you’re from, what you do with WordPress, that kind of thing.

\n\n\n\n

[00:04:07] Milana Cap: I’m Milana Cap from Serbia, and we have the best community in the world. I am currently WordPress Engineer at XWP and also freelancing through Toptal. I am one of the co reps for the documentation team, one of plugin review team members. I’m also a classical musician and just, you know, being loud all around. I like traveling and speaking at conferences, and that’s basically it.

\n\n\n\n

[00:04:38] Nathan Wrigley: Can you just tell us a little bit about the bits and pieces going on in Serbia there? You sound quite proud of it. You said it the best or something like that. You’ve got a vibrant, healthy growing Serbian community.

\n\n\n\n

[00:04:49] Milana Cap: Well, it’s not really growing, and it’s not that vibrant as it was. But the core of community that started getting together in 2016, or even before that, we still stayed, and we are still active and they’re like my brothers. We travel, we plan together. We visit each other in Serbia as friends, and we plan for barbecues and all the other stuff, besides, you know, organising events.

\n\n\n\n

[00:05:22] Nathan Wrigley: So it really is an actual community.

\n\n\n\n

[00:05:24] Milana Cap: Yeah it is.

\n\n\n\n

[00:05:25] Nathan Wrigley: You spend social time together. Oh, that’s lovely. Yeah, and you mentioned you work with, for, XWP. This is a name that I hear a lot, but I don’t really know much about the company. Just tell us a little bit about what you do for them, and with them.

\n\n\n\n

[00:05:39] Milana Cap: First of all, they are sponsoring my time at wordpress.org. It’s an agency that works mainly with enterprise clients. So we do all of it, like building you a new website, or maintaining the existing one, or fixing problems. And it’s usually, mostly, just enterprise clients.

\n\n\n\n

[00:05:59] Nathan Wrigley: Is that an Australian based company?

\n\n\n\n

[00:06:02] Milana Cap: It’s kind of, yeah, based. It’s created there but we are completely remote.

\n\n\n\n

[00:06:07] Nathan Wrigley: Everything distributed, like a global team. Oh, that’s nice.

\n\n\n\n

Okay, so let’s just move on into the topic today. The presentation that you were giving, I’ll just repeat the title, WordPress gems for developers, fresh new features you’ll actually want to use. And then I’ll read the blurb as well because it’ll give the listeners some context. We’ll take a closer look at the innovative HTML and Interactivity APIs as the most significant game changers in today’s WordPress development, with a splash of WP-CLI magic for fast and more fun development. And there might be a surprise or two.

\n\n\n\n

Well, obviously on the audio podcast, we’re not going to be able to breakout WPCLI, but nevertheless, we’re going to talk about those things. We’re going to concentrate primarily on the Interactivity API. Obviously this is something that you’d need to get your hands on, you’d need to be opening a laptop. But we can’t do that. It’s an audio podcast. So first of all, let’s just break into the topic by asking the question, what is the Interactivity API? And let’s do that from a total novice perspective.

\n\n\n\n

[00:07:07] Milana Cap: Okay, yeah. Well, Interactivity API allows you to get back to the whole page. At least I see it that way. Because before Gutenberg, we were using only PHP, and PHP page is aware of all of its parts. So in header, you know what’s happening in footer and vice versa.

\n\n\n\n

But then we got Gutenberg and these blocks didn’t know about their surroundings. They were just like, oh, I’m a block here, and I do what I do and I don’t care about others.

\n\n\n\n

And it was difficult to get that in your head, like this is a completely separate entity that, once it’s in a page, you can work with that, but there is no way to connect to it to the rest of the page. And today you have a lot of requests for having interactive page. You know, not just showing the text and people come and read, you need to have something that’s happening on that page.

\n\n\n\n

And it was very difficult to, for example, make one block do something and then you use that data in another block, that was insane. And people were trying to do those things in so many different ways. It was a mess. Like, I have a slide with dolls that have misplaced eyes and all of that. That’s how it looks like.

\n\n\n\n

So now with Interactivity API we finally get that connection, but it’s not like hacky thing, it’s in Core. So every block can be aware of the other block, and you can send the data from one block to all other blocks. And that’s really what was missing for a long time. And not just in WordPress, we have the same things happening before WordPress, in Symphony, in Laravel. So now we have that too.

\n\n\n\n

[00:09:04] Nathan Wrigley: So let me just try and sum up what you’ve just said, and see if I’ve parsed it correctly and understood it. So prior to Gutenberg, given the PHP nature of WordPress, the bits and pieces that were displaying on the page, so header, footer content and what have you, they had some recognition within PHP of what one was doing and what the other was doing.

\n\n\n\n

And then along comes Gutenberg and we shatter the experience on the page into a variety of different blocks. There’s an image here, and a paragraph here, and some more text over here, and a heading and what have you. And each of those little blocks is a silo. It lives by itself, for itself, it’s erected walls around itself so that it can’t be communicated.

\n\n\n\n

[00:09:41] Milana Cap: It’s a diva.

\n\n\n\n

[00:09:41] Nathan Wrigley: It can’t talk out and it can’t hear things in. And that’s a problem. I mean, it’s a brilliant solution if you want to move content around, but If you want one thing to shout to another thing and say, look, I just got clicked, go and update yourself. Add one to yourself, or whatever it may be. So that possibility evaporated.

\n\n\n\n

But now with the Interactivity API, we’ve come up with a Core solution. So it ships with WordPress, everybody has it. And suddenly we’re able to say, okay, I’m a block, I’m a button, and when I get clicked, I want you to add one to the cart. And the shopping cart number can increment by one and what have you. So suddenly everything can communicate with everything else. Have I got that about right?

\n\n\n\n

[00:10:23] Milana Cap: Yes.

\n\n\n\n

[00:10:24] Nathan Wrigley: Oh, perfect. Okay. And so I’ve seen examples of Interactivity over many years since Gutenberg came around, and I’m imagining that each developer, therefore has had to create their own way of doing it. And presumably that works for them, but it doesn’t work for the project as a whole.

\n\n\n\n

[00:10:44] Milana Cap: Not just that. It might work for them but, let’s say you have a plugin and your plugin is doing that interactive thing with your own blocks. But me as another developer, I want maybe to enhance your blocks, but I don’t have access to whatever is happening in your blocks. So whatever you are doing, like counting stuff and changing something, I don’t have that info. So I have to do, again, hacky thing.

\n\n\n\n

But with Interactivity API, I have a standardised access to that. So I can, you know, set my blocks to support Interactivity API. And I can get, with just one function, I can get all the data from your blocks and work with them, and it’s completely in Core. It’s standardised. And anybody can take my data and, you know, this data and do whatever they want with that. And it’s not just that it’s easy to get that data, but we all do it the same way. So when I open your block, I know exactly what I will find there. I know exactly how to get that data, and how to provide to others.

\n\n\n\n

[00:11:58] Nathan Wrigley: So the benefit is basically that it’s a standard mechanism. Everybody knows what the rules of the game are. So in the past, the experiences that I’ve seen online where plugin A has been able to clearly demonstrate this interactivity, a different developer coming to that would have to learn how plugin A does it, and then if they go and try and do the same thing for a different plugin from a rival, for example, they would have to learn that one.

\n\n\n\n

And every time you wanted to do it, you’d have to learn how that system does it. So there’s no interoperability. It’s just little silos of interactivity. They worked, but they were a sort of stepping stone to what we’ve got now.

\n\n\n\n

Okay, I think I understand that. That’s great. Hopefully the audience has got that as well. That should be good. Can you give us some nice examples that you’ve seen where the Interactivity API, you describe it, the audience can hear it and readily understand, okay, that’s something that it can handle.

\n\n\n\n

[00:12:49] Milana Cap: Well, there is a beautiful demo that is used for demonstrating the Interactivity API by people who created Interactivity API. It’s a movie demo, and you can find it if you go for introductory post of Interactivity API at Core blog, you will find it. So it’s a simplified Netflix made with WordPress. So you get simple things like there is a favorites. So you can heart a movie, and it’ll show the number, how many favorites you have. But when you dig deeper, you can open one movie and play the trailer, and it’ll have a minimised video on the bottom. And you can, you know, browse the website and switch pages, and the video is still playing in the corner and it doesn’t even hiccup.

\n\n\n\n

The thing that is happening there is you think you are reloading pages. You think you are going to different pages, but it’s really the same page and it’s just being reloaded in what you need to reload. So it’s the hardest thing for developer to do, to switch page, but doesn’t really reload the page. And if you take a look, if you try that demo and you take a look, you will see that URL changes, everything changes, but you really didn’t move from the first page.

\n\n\n\n

[00:14:18] Nathan Wrigley: Okay, so what you’ve just described then, you’ve got a, like a tiled selection of videos, and underneath it is like a little heart icon. So it’s just a demonstration that if you click the heart icon, it says, I like this one. And then it keeps a record of that somewhere else. Like, how many of you hearted over here? Or, click this heart icon and it’ll take you to the ones that you favorited. That kind of thing. But also it gives the impression that you’re reloading pages, but really it’s all just happening within that one page session.

\n\n\n\n

[00:14:46] Milana Cap: Yes.

\n\n\n\n

[00:14:47] Nathan Wrigley: Okay. So that’s a really easy to understand version of it. And I would imagine something like, let’s say a shopping cart, I think I mentioned that earlier, where you, I don’t know, you click that you want to add something to the cart, sort of similar process. It’s a bit like hearting, isn’t it? You add something to the cart and you get that interactive cart icon in the top right of the screen if you’re on a desktop. And it says you’ve got three items in there, and you click it and you’ve got four items in there, and so on. Those kind of things. So again, it’s one part of the website, one block if you like, updating another thing. Are there any other examples that you think are quite useful?

\n\n\n\n

[00:15:21] Milana Cap: Well, I saw like countdown. So if you want your website to show the countdown until launching something. There’s also we have already two examples in Core working. So you have a query block, and you can select to have it paginated, without pagination. That’s Interactivity API.

\n\n\n\n

So anywhere you would use Ajax before, you can use Interactivity API. It’ll give you that feeling of nothing has been reloaded, so it’s just loading in that place. You don’t use Ajax, you just use Interactivity API.

\n\n\n\n

[00:16:05] Nathan Wrigley: So this would be, I don’t know, a list of posts or something like that. And at the bottom of the screen, we’ve seen the first 12, 12 more, you would typically click two or the right arrow or something, and that would do some sort of Ajaxy request. But in this case, that’s now been removed and we’re using the Interactivity API, and it will give you the next 12, and the next 12, and so on. Yeah, that’s a really great example.

\n\n\n\n

So presumably, if this is moving into WordPress Core, does that mean that a lot of the Core features that, like for example, pagination, has that now moved over in WordPress Core to using the Interactivity API?

\n\n\n\n

[00:16:37] Milana Cap: Well, I know that that specific feature has moved to Interactivity API, and also the image block has the option for lightbox. That’s also Interactivity API. That’s currently in Core. And I imagine a lot of other things can be moved. But also it doesn’t have to. The only thing that it needs is a good documentation, and option that you can use it so you can do with it whatever you want.

\n\n\n\n

[00:17:07] Nathan Wrigley: What is the documentation like? You know, if I was a developer and I wanted to begin using this because, sounds good, I’d rather not maintain my own bucket load of code for my interactivity in my plugin, for example. Let’s just throw all that out and go with what WordPress has. Is there a ton of documentation to get developers started?

\n\n\n\n

[00:17:25] Milana Cap: There is. They are not making the same mistake we had with Gutenberg. I think for Interactivity API, the most difficult thing is to actually understand it. Because we had, I had, as PHP developer primarily, I had a problem to understand Gutenberg and to understand how React works, and why React doesn’t understand how I think, you know? And I was always over-engineering it because I was covering all the cases.

\n\n\n\n

But React doesn’t care about all the cases. It was very difficult for me to understand how that works on components based, and these components don’t care about anything else but themselves.

\n\n\n\n

So Interactivity API now connects all of this. And we are coming back to the system that is aware of all its parts. But not just that, in Interactivity API you have the option to write the code where it makes the most sense.

\n\n\n\n

When I was playing with it, I had two blocks that were supposed to talk to each other, and I realised that something that was one block doing, it made the most sense to write the code for it in another block’s VueJS. So I was using the, there is the template that you can use for Interactivity API, and it’ll run the Create Block Script, but just use the Interactivity API template. And then you get the block that has switch from light to dark theme.

\n\n\n\n

There is a toggle. The first was, it was only the toggle, and I was very disappointed. Like, the toggle shouldn’t use any JavaScript at all. But it was a good example for what Interactivity API can do. And now with the theme switching, it’s kind of complete. You understand all the things that Interactivity API is.

\n\n\n\n

So this toggle was another button, and you click on it, and it shows the paragraph. And then you click on it again and it closes the paragraph. And then I used another block, and I wanted that other block to count how many times I opened and closed this toggle. It was mind blowing that that code for counting how many times I open and close it, I will show the data in this other block.

\n\n\n\n

But it made much more sense to write the code for it in this first block, because I already have there code that is aware that this is open and closed. So I could just, you know, add one line of the code, and update the number there in another block. So that’s kind of the most difficult thing with Interactivity API, to understand how that functions, and that you can really achieve a lot with one piece of code, one line of code, but put it in a right place. And it can be in different places. So that’s something, you know, for you as a developer to document where I wrote things.

\n\n\n\n

So with the Interactivity API, the most important thing is to actually understand how that works. There is very good documentation there for the basic stuff, definitions and all of it. And also, examples. But really, it’s not just copy, pasting from example, it’s playing with it and understanding how it is connected.

\n\n\n\n

And once it’s clicked in your mind, it’s mind blowing. It’s like a game. Well, the coding for me is like a game. That’s why I started coding. But it is very interesting that you can, you know, play with it, you can break it, you can find different ways. And I was playing with putting the same code in different places to see if it will work, it will.

\n\n\n\n

So there is a new skill that we will see with Interactivity API, like the most beautiful code and the most beautiful place where you put that code. And I think it’s very much open for optimising code. And you’ll see there the level of expertise of developer for how much they understand the optimisation of JavaScript code.

\n\n\n\n

[00:21:45] Nathan Wrigley: Is the Interactivity API, how to describe it, is it finished?

\n\n\n\n

[00:21:49] Milana Cap: No.

\n\n\n\n

[00:21:50] Nathan Wrigley: Yeah. I mean, basically nothing in WordPress really is ever quite finished, is it?

\n\n\n\n

[00:21:54] Milana Cap: If you software, then it’s never finished.

\n\n\n\n

[00:21:56] Nathan Wrigley: No. But would you say it already has pretty much everything that you require it to have? Or can you imagine scenarios where it would be really nice to have this feature or this feature? What I’m trying to get to is, is it still under active development? Can people listening to this podcast who think that that would be an interesting use of their time to help contribute to that, is there still work to be done? And where would we go to get involved in that?

\n\n\n\n

[00:22:21] Milana Cap: You can go to, there is a GitHub issue that is called Interactivity API showcase. It’s in Gutenberg repository. And you’ll see a lot of different ideas, how people want to use Interactivity API. And you will, when you start looking at those examples, you start to get ideas, what you could use it for. And you get to remember all the projects you had that you could really use Interactivity API there.

\n\n\n\n

I don’t think it’s done. I don’t think it’ll ever be done because, you know, clients get very creative with things they want. And I think we can’t even imagine what we would want until we get to the request to do it for a project. So there’s a lot of things to do, as in feature terms, but there’s always, you know, fixing code, optimising here and there and cleaning things up. And then there’s an update from library that it depends on, and then you have to, you know, do that. So there’s always maintenance if you use software. It’s never done.

\n\n\n\n

[00:23:31] Nathan Wrigley: I feel like if you are, let’s say 18 years old, you’ve been brought up in an era where you’ve had a phone in your hand and the apps on the phone are kind of what you’ve grown up with expecting from things online. And everything over on the phone is interactive. There’s just this expectation that you can click a button and it will do some desired action over there.

\n\n\n\n

And it feels like a website that doesn’t have interactivity is almost, well, I mean, I know you can have brochure websites and things like that where it’s just static content. It feels like that’s the expectation and it’s more and more going to be the expectation. So if a project like this hadn’t come along, WordPress websites would’ve felt really strange. You know, stuck in the past in a way, because of that lack of interactivity.

\n\n\n\n

And now hopefully developers who haven’t got the time, the budget or the experience to do this on their own, hopefully they can start offering solutions by just reading the documentation and not having to dig into the weeds of absolutely everything, just implement what’s been written for you, and hopefully that’ll bring WordPress more into the year 2025.

\n\n\n\n

[00:24:36] Milana Cap: Well, I think that if you take from that perspective, like you are 18 years old and have everything, all the apps you want in your phone, I think that WordPress is already weird to them. They are not using CMS, it’s too much effort for the things they can do with another app in their phone.

\n\n\n\n

But I don’t think that WordPress is for them. I mean, WordPress is CMS. So it’s meant to be used with purpose while kids today still look for, you know, quick content that they can, my daughter is 21 years old and she sends me, you know, memes and videos all the time. Most often than not, yeah, I tell her I don’t understand this. And she says, well, it’s funny because it’s stupid. I say, I still don’t understand this.

\n\n\n\n

I mean, she understands the life cycle of something that is meaningful, something that is important. And that is something that we would use WordPress for. But their concentration and focus span is just, give me this stupid video, that’s funny because it’s stupid, and I’ll move on. So I don’t think we should even try to put WordPress there and try to satisfy that request. But still there are requests that Interactivity API does satisfy. And that was needed to be added to WordPress.

\n\n\n\n

[00:26:07] Nathan Wrigley: Yeah, it’s certainly nice for developers not to have to, well just basically roll their own solution and waste tons of time doing something 1,000 times, literally 1,000, maybe 10,000 times done differently. Whereas now everybody can just lean into this one implementation, and it’s baked into Core. And then everybody can inject things into, on top of your code, and you can look at other people’s code and extend it in that way. So hopefully that will mean that, you know, the project as a whole can move forward.

\n\n\n\n

Let’s move on to something that I literally know nothing about, HTML API. You’re going to have to go from the very most basic description and I will try to keep up.

\n\n\n\n

[00:26:46] Milana Cap: Well, HTML API is actually what powers Interactivity API. So we wouldn’t have Interactivity API as it is right now, if we didn’t have HTML API. For now we have two classes that we can use, HTML tag processor. Which is idea to use PHP to modify attributes in Gutenberg blocks, in their markup. Because it was so difficult to approach the block to get to that code and modify anything once it’s on the page.

\n\n\n\n

So the HTML tag processor is just working with the attributes in markup. But it was meant to be used for Gutenberg blocks, but it really doesn’t matter what you use, it’ll process any HTML if it finds it. And it’s very useful for many things that we would use jQuery for before, and we would load the whole JavaScript file. You can add, remove, classes. You can set the aspect ratio for iframe. You can set image size attributes. You can add accessibility attributes where you need them.

\n\n\n\n

And it’s all happening in PHP, you know, on the page load. It’s very fast. It’s amazing. And that’s what is powering those HTML directives that we have in Interactivity API. So in markup you will find data WP and then the rest of directive. And those directives are connecting the server side and the client side in JavaScript for Interactivity API. I think it’s called WP Directive Manager, the class that is really internal class, and it’s just being used by Interactivity API.

\n\n\n\n

But then there’s a class that’s called HTML processor. And this one is doing more things than tag processor. This one knows about the closing tag, and this one will support inserting and removing nodes from the page, or wrapping and unwrapping tags on the page, then reading and modifying inner content. So everything that you were loading JavaScript for, you know, all the makeup stuff, and if something is clicked then, you know, wrap me this paragraph in this div, and then we will change the class or whatever.

\n\n\n\n

You can do that with PHP now, and it feels so much less hacky. You have it. I had actually example for removing the no-follow attribute for internal links. So searching for internal links, before HTML tag processor, you would have to use regex, and regex is invented by extraterrestrials to make fun of humans.

\n\n\n\n

So it’s also, you cannot cover all the cases with regex. There are always surprises. There is always some edge case you didn’t think of and cover. And when you look at that code, even five minutes later, you don’t understand anything. It’s something that you Google, and you trust the code that you found on Google.

\n\n\n\n

But this one, when you used a tag processor, you actually understand everything. And it covers all edge cases. There are no surprises because it’s been built with HTML standards. So it supports every type of HTML that we will probably never see in our lives. You know, all the broken stuff and all of it, it supports it. And it’s been built by Dennis Snell. That is something unlike Interactivity API.

\n\n\n\n

So we saw that Laravel has it, and Symphony has it, and Phoenix first did it. But this is something that nobody has. This is our own. And Dennis now built it from zero, completely custom. And he’s now working in putting it into PHP. So it’ll be available, yeah, to everyone. That’s a really big thing.

\n\n\n\n

I gave this talk in September at PHP Serbia and people were sitting, you know, PHP developers who are working with Symphony and Laravel and doing custom PHP, and they were like, oh my God. And I was like, yeah, WordPress has something you don’t have. That was really nice feeling. Yeah, I like that Dennis is actually putting that into PHP.

\n\n\n\n

[00:31:30] Nathan Wrigley: So again, like I did with the Interactivity API, I’m going to do the same here. Let me just see if I’ve understood what it is. So the idea really, if you want to interact with the DOM, right now, the typical way of doing that is with some JavaScript or other. So let’s say for example, I don’t know, you want to do the third child of a div, and you want to put a border around that.

\n\n\n\n

With JavaScript, you’re going to find that third div, and then you’re going to insert some class, which will then get modified by the CSS to add a border and a border radius, and what have you. So that’s all done on the client side. Page loads, JavaScript loads, and then the DOM gets rewritten by the JavaScript.

\n\n\n\n

But in this scenario, it’s going server side. It is PHP. So it’s really much more readable and maintainable, and it all just lives in this one spot with all the other PHP. And then you would write something, basically the same thing, but in PHP, to do the same job. And then WordPress, so there’s no rewriting of the DOM. WordPress writes the DOM with that in mind. So the output HTML already has that in it. You’re not using JavaScript to rewrite what’s already been written, so it speeds things up as well.

\n\n\n\n

[00:32:39] Milana Cap: Yes, yes. You have less requests because there’s no file that you are requesting. There’s no waiting on, you know, everything to load. And to rewrite it, it’s just going right there.

\n\n\n\n

[00:32:51] Nathan Wrigley: So it’s the same process though. The way that you would do it in JavaScript, you’re now just transferring that into PHP, but the method that you’re using to do it would be the same, you know, search for the third child of this parent div, and then give it an extra class and that’s what happens.

\n\n\n\n

[00:33:04] Milana Cap: Yes.

\n\n\n\n

[00:33:05] Nathan Wrigley: Okay. Yeah, that’s really straightforward. And really, really, really powerful.

\n\n\n\n

[00:33:09] Milana Cap: It is.

\n\n\n\n

[00:33:10] Nathan Wrigley: Because not only can you write your own thing in that way, but if you want to upend what’s already been written by, I don’t know, let’s say there’s something strange in a plugin that you’ve downloaded. Would this be able to rewrite the things that the plugin is injecting?

\n\n\n\n

[00:33:23] Milana Cap: Yes.

\n\n\n\n

[00:33:23] Nathan Wrigley: Okay, so you can, I don’t know, let’s say there’s a plugin which does something quirky in the HTML, you don’t like it, you want to strip something out or add something in. It sits between where the plugin injects its code and where the end user receives the HTML.

\n\n\n\n

[00:33:35] Milana Cap: Yeah.

\n\n\n\n

[00:33:35] Nathan Wrigley: That is interesting. So it’s a total rewrite of the HTML.

\n\n\n\n

[00:33:38] Milana Cap: Mm-hmm.

\n\n\n\n

[00:33:39] Nathan Wrigley: That is fascinating.

\n\n\n\n

[00:33:41] Milana Cap: Yeah, and it’s fast. It’s actually working faster than when you would load JavaScript for that.

\n\n\n\n

[00:33:48] Nathan Wrigley: So in many cases it renders much of the JavaScript, the JavaScript that’s being used to modify the DOM. It completely negates the need for that?

\n\n\n\n

[00:33:59] Milana Cap: Yes.

\n\n\n\n

[00:33:59] Nathan Wrigley: Have you found it easy to learn this?

\n\n\n\n

[00:34:01] Milana Cap: Yeah, yeah. It’s very easy. It’s even easier than Interactivity API. It’s just, you know, you instantiate the class, pass the string to it that you want to, you know, search for tags, and then you have methods. You call the method and loop through the things, or you don’t have to loop, depending what you are looking for. And there is a method, remove attribute, add attribute, remove class. You know, it’s that easy.

\n\n\n\n

[00:34:28] Nathan Wrigley: And, like everything in WordPress, you said earlier, it’s never finished. There’ll always be work done on it. But as of now, we’re recording this late February, 2025, is it pretty complete for all the things that you’ve wished to do? Does it have an answer for that, or is there still work to be done?

\n\n\n\n

[00:34:42] Milana Cap: The HTML processor needs to be optimised, so it’s not completely production ready yet. Tag processor is optimised and ready to use, and we actually used it in 2023. We waited for new release when it was coming into Core. We waited for two weeks and delayed the deployment to get it in to actually, because that example that I used for removing no-follow attribute from internal links, that’s the real world example that we had. And it was really annoying problem that was so easily fixed with five lines of code, once the HTML API got into Core.

\n\n\n\n

[00:35:25] Nathan Wrigley: I obsess about WordPress, like that’s all I think about most days basically, and yet this is somehow completely passed me by. The Interactivity API, somehow that captured my attention. There must have been some press release, or something to explain that this is happening. But the HTML API completely passed me by. I wonder if that’s just my lack of trying hard enough.

\n\n\n\n

[00:35:46] Milana Cap: No, that was actually the case for many people. So for that WordPress release, I was leading the documentation focus. So I know, I wrote the field guide, and I knew that was there. But many people didn’t know.

\n\n\n\n

And that idea behind this new series of talks that I do. So to find these, it’s very good that these things come into Core slowly, like piece by piece. What is ready? What is optimised? But because they are small, people don’t hear about them, because we don’t advertise that. And Interactivity API is, it gets the same treatment as any other Gutenberg feature. Like, oh, it’s flashy, it’s new, come see this.

\n\n\n\n

But HTML API is completely PHP. It actually powers Interactivity API, but nobody knows that. And those were like small pieces getting in, because its purpose was to serve Gutenberg. So it wasn’t really advertised as something you can use for other things. But you know developers, they find ways to use something for different things.

\n\n\n\n

And that’s why I wanted to create these talks to actually show people there are so many things you can do with WordPress now that are new. And you can use them today, and tomorrow they will be even better.

\n\n\n\n

[00:37:14] Nathan Wrigley: I guess with the Interactivity API you are solving a really hard problem. So to be able to modify one part of the page, it’s content and it’s a separate block, that’s a difficult thing to overcome. So there’s a lot of work to get over that. But if you just want to add a border to the third child of a div, everybody’s using the same JavaScript technique to do it. So there’s a well understood way of doing it.

\n\n\n\n

And so that, I suppose, leads to the question, what is the benefit over just using JavaScript? Why would we want to use the HTML API instead of just the familiar thing, which probably everybody’s doing, you know, just rewrite things with JavaScript. Is it basically coming down to ease of readability for everybody, and speed?

\n\n\n\n

[00:37:57] Milana Cap: Yeah. I think if you take a look at, for example, enterprise projects. The way developers optimise the code, it’s like every piece of millisecond counts because these projects are huge, and they have a lot of visits. So if you can remove all the JavaScript, I mean, that’s huge. That is making such impact, and it brings you like 10 places before your competition. Doing just that is enough to use this over JavaScript.

\n\n\n\n

But also, it replaces not just need for JavaScript, but need for regex as well. And again, in enterprise projects, when you have huge databases running regex and having potential to not work everywhere where it’s supposed to work, as opposed to this, that is very straightforward. Not too many lines of code, and it’s actually faster. You would take that chance.

\n\n\n\n

[00:39:03] Nathan Wrigley: Yeah, I guess if you’ve just got like a five page brochure website, that’s for a mom and pop store, you’re probably not going to be worrying too much. But if you’ve got an enterprise page, you know, an enterprise level website which is maybe getting, I don’t know, 50,000 hits every hour or something like that. Shaving 10 milliseconds out, multiply that by 50,000, I mean, not only is it quicker, so Google likes it, but also the cost of everything goes down. You know, there’s less bits flying across the internet. It’s all been optimised. And I guess at the enterprise level, all of those things matter.

\n\n\n\n

[00:39:36] Milana Cap: Yeah, everything matters.

\n\n\n\n

[00:39:37] Nathan Wrigley: Yeah, that’s fascinating, genuinely fascinating, and something that I’d never heard of. So I will go and, when I’ve edited this podcast, I’ll go and preach the gospel of the HTML and Interactivity APIs. That’s everything I wanted to ask. Milana, is there anything that you wanted to get across that I didn’t ask?

\n\n\n\n

[00:39:53] Milana Cap: No.

\n\n\n\n

[00:39:54] Nathan Wrigley: No. In that case, Milana Cap, thank you very much for chatting to me today. Really appreciate it. I hope you enjoy the rest of your time in Manila.

\n\n\n\n

[00:40:01] Milana Cap: Yeah, thank you for having me.

\n\n\n\n

[00:40:03] Nathan Wrigley: You’re very welcome.

\n
\n\n\n\n

On the podcast today we have Milana Cap.

\n\n\n\n

Milana is a seasoned WordPress Engineer from Serbia, working with XWP and freelancing through Toptal. She’s not just a developer; she’s also active in WordPress community roles such as a co-rep for the documentation team, organiser at multiple WordCamps, and a member of the plugin review team.

\n\n\n\n

We discuss some groundbreaking WordPress features that developers should be aware of, specifically focusing on her presentation at WordCamp Asia in Manila titled “WordPress gems for developers: fresh new features you’ll actually want to use.”

\n\n\n\n

We start the discussion with the Interactivity API. Milana explains how this feature allows blocks within WordPress to communicate seamlessly with one another. Until now, most blocks were just silos of information, they could not communicate with one another. This API enables developers to manage interactivity across multiple blocks without resorting to custom solutions. We talk about some possible use cases.

\n\n\n\n

Milana also gets into the HTML API, which underpins the Interactivity API. This empowers developers to manipulate HTML attributes using PHP, thereby reducing the reliance on JavaScript. This not only enhances page load speeds but also simplifies the code management process. It’s not something that I’d heard of, but Milana explains how important it can be in rewriting the DOM for whatever goals you have in mind.

\n\n\n\n

Throughout the episode, Milana shares examples of these APIs in action, demonstrating how they can simplify and optimise WordPress development projects, particularly at an enterprise level.

\n\n\n\n

If you’re a developer looking to leverage these new WordPress features, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

Milana’s presentation at WordCamp Asia 2025: WordPress gems for devs: fresh new features you’ll actually want to use

\n\n\n\n

XWP

\n\n\n\n

Toptal

\n\n\n\n

Interactivity API preview

\n\n\n\n

Interactivity API showcase #55642

\n\n\n\n

The HTML API: process your tags, not your pain

\n\n\n\n

PHP Serbia 2024

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"Do The Woo Community: The Do the Woo Release Notes Newsletter on LinkedIn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=94001\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:77:\"https://dothewoo.io/blog/the-do-the-woo-release-notes-newsletter-on-linkedin/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:128:\"If you are on LinkedIn and looking for a deeper look into our episodes as they are released, we have a newsletter there for you.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Apr 2025 10:39:06 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"WordPress.org blog: WordPress 6.8 Release Candidate 3\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18673\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/04/wordpress-6-8-release-candidate-3/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:8482:\"

The third release candidate (“RC3”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development.  Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, it’s recommended that you evaluate RC3 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone.  While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC3 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC3 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-RC3
WordPress PlaygroundUse the 6.8 RC3 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025. Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts leading up to next week’s release for further details.

\n\n\n\n

What’s in WordPress 6.8 RC3?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement. For more technical information related to issues addressed since RC2, you can browse the following links:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community that collaborates and contributes to its development. The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable. It’s also a meaningful way for anyone to contribute. This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report. You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.  For more details on developer-related changes in 6.8, please review the WordPress 6.8 Field Guide.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases.  With RC3, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English?  ¿Español?  Français?  Русский?  日本? हिन्दी? मराठी? বাংলা?  You can help translate WordPress into more than 100 languages.

\n\n\n\n

An RC3 haiku

\n\n\n\n

The launch draws closer,
Six-eight sings through RC3,
Almost time to shine.

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @audrasjb, @mamaduka, @krupajnanda, @benjamin_zekavica, @narenin, @joedolson, @courane01, @joemcgill, @marybaum, @kmgalanakis, @umeshsinghin, @wildworks, @mkrndmane.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2025 15:54:49 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:81:\"Do The Woo Community: Our Final Wrap of CloudFest 2025 with Robert, Zach and Carl\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=94070\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:79:\"https://dothewoo.io/our-final-wrap-of-cloudfest-2025-with-robert-zach-and-carl/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:205:\"In this episode of Dev Pulse, hosts discuss CloudFest 2025, highlighting unique event experiences, innovative hackathon projects, networking opportunities, and a preview of upcoming CloudFest USA in Miami.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2025 12:32:39 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:96:\"Do The Woo Community: Four Practical Steps Towards Inclusion for Content Creators and Developers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=85966\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:100:\"https://dothewoo.io/blog/four-practical-steps-towards-inclusion-for-content-creators-and-developers/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:305:\"In a past podcast our host Anne provided practical advice for content creators and developers to foster an inclusive environment. They are simple and to the point. Key suggestions included: You can hear the full episode here Exploring Accessibility and Neurodiversity in WordPress with Anne Mieke Bovelett\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Apr 2025 09:55:22 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"Do The Woo Community: Do the Woo v5.1 Changelog\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93974\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"https://dothewoo.io/blog/do-the-woo-v5-1-changelog/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:27:\"Four new co-hosts and more.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 07 Apr 2025 13:07:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:10;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:99:\"Do The Woo Community: Michelle Frechette Joins the Do the Woo Hosting Team for WordPress Event Talk\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93984\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:98:\"https://dothewoo.io/michelle-frechette-joins-the-do-the-woo-hosting-team-for-wordpress-event-talk/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:76:\"BobWP announces Michelle Frechette as the new host for WordPress Event Talk.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 07 Apr 2025 09:42:17 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:11;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"Gravatar: What is Gravatar? Basics for WordPress and Beyond\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3019\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:54:\"https://blog.gravatar.com/2025/04/06/what-is-gravatar/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:17132:\"

Have you ever noticed how your profile picture magically appears on some blogs, forums, or websites without needing to upload it each time? That’s the power of Gravatar. Since 2004, we have been quietly revolutionizing online identity, offering a consistent way to represent yourself across the open web.

\n\n\n\n

Gravatar stands for Globally Recognized Avatar. It’s a free profile for the web that uses your email address as its core identification system. This clever approach lets you maintain a single avatar and profile that follows you across major platforms like WordPress, Slack, and GitHub.

\n\n\n\n

The concept is simple but powerful. Instead of creating separate profiles on dozens of websites, Gravatar centralizes your online identity. With over 8.6 billion avatar requests served daily, it’s become an essential part of the online experience for millions of users.

\n\n\n\n

In recent years, Gravatar has expanded beyond just avatars Now, integrated websites can pull complete profile information from your Gravatar account. This improves the profile creation and onboarding processes, saving time and reducing friction when joining new platforms.

\n\n\n\n\"\"\n\n\n\n

From scattered profiles to unified presence: How Gravatar works

\n\n\n\n

At its core, Gravatar uses your email address as a unique identifier. When you comment on a blog or join a platform that supports Gravatar, the system looks up your email to find your profile information.

\n\n\n\n

Don’t worry about privacy concerns. Gravatar doesn’t simply expose your email address to every website. Instead, it converts your email into a secure hash – essentially a one-way code that protects your actual address while still creating a consistent identifier. This technical conversion ensures your email stays private while allowing the system to recognize you across different sites.

\n\n\n\n

Another one of Gravatar’s most powerful features is its synchronization capability. Update your profile once, and the change instantly reflects across millions of integrated websites through the Gravatar API. This eliminates the hassle of updating dozens of separate profiles when you change your photo or information.

\n\n\n\n\"Gravatar\n\n\n\n

For professionals, this creates an efficient way to build and maintain a consistent online persona. Want separate identities for work and personal activities? Simply create different Gravatars using different email addresses. This separation gives you complete control over how you present yourself in various contexts.

\n\n\n\n

Imagine never having to repeatedly upload profile pictures or maintain consistent information across multiple platforms. That’s the advantage Gravatar provides – centralized profile management that simplifies your online presence while maintaining your privacy.

\n\n\n\n

Each time you visit a new website that supports Gravatar, your profile information automatically appears – no duplicate accounts, no forgotten passwords, and no inconsistent branding. Your carefully crafted online identity follows you seamlessly across the web.

\n\n\n\n

And the best part? Claiming your Gravatar is completely free. Let’s walk through how to set one up.

\n\n\n\n

Setting up your Gravatar account: A step-by-step guide

\n\n\n\n
    \n
  1. Visit the Gravatar website and click “Get Started Now.
  2. \n
\n\n\n\n\"Gravatar\n\n\n\n
    \n
  1. Enter your email address.
  2. \n
\n\n\n\n\"Gravatar:\n\n\n\n
    \n
  1. Check your inbox for a verification code, and enter it on the page. 
  2. \n
\n\n\n\n\"Gravatar\n\n\n\n
    \n
  1. If you already have a WordPress.com account, Gravatar will ask, “Would you like to log in to Gravatar using your WordPress.com account?” Saying yes speeds up the process by using your existing information. If you don’t have a WordPress.com account, you can create one through Gravatar.
  2. \n
\n\n\n\n\"WordPress.com\n\n\n\n
    \n
  1. Next, upload a profile photo. The maximum image size is 2048px, and the image will display as a square. Gravatar provides a cropping tool to help you position your photo for the best presentation.
  2. \n
\n\n\n\n\"Gravatar:\n\n\n\n
    \n
  1. Complete your basic profile information, including your display name and bio.
  2. \n
\n\n\n\n\"Gravatar\n\n\n\n
    \n
  1. To manage different identities, simply create a new Gravatar with a different email address. This allows you to maintain separate profiles for professional and personal use.
  2. \n\n\n\n
  3. Get your unique Gravatar URL and begin sharing it on your social media bio links or email signatures. You can also use it to log in and manage your profiles on supported platforms like Figma or OpenAI.
  4. \n
\n\n\n\n

The process takes just a few minutes, but the benefits last for years. Once configured, your Gravatar becomes your digital passport, making it faster to join new communities and ensuring consistent recognition across the web.

\n\n\n\n

Remember that your profile is publicly visible by default, so only include information you’re comfortable sharing. 

\n\n\n\n

Optimizing your Gravatar profile for maximum impact

\n\n\n\n

Now that you’ve set up your basic Gravatar account, let’s look at ways to enhance its effectiveness. 

\n\n\n\n
    \n
  • Profile photo: Choose a high-quality, professional image that represents you appropriately. For business purposes, a clear headshot with good lighting and a neutral background works best. If you prefer not to use your photo, a recognizable brand logo is a good alternative. Just ensure the image is clear and easily identifiable, even at smaller sizes, as a lot of people browse from their mobile.
  • \n\n\n\n
  • Bio and details: Craft a concise, compelling bio that highlights your expertise, experience, and unique value. Focus on what makes you stand out and what your audience would find most relevant. Keep it brief but impactful – think of it as your elevator pitch in written form.
  • \n\n\n\n
  • Social media and links: Add your verified social media accounts and links to your website or portfolio. This turns your Gravatar into a customizable digital business card. You can also take advantage of the integration between Bluesky and Gravatar, which allows you to use your Gravatar domain as your Bluesky handle for a consistent online identity.
  • \n
\n\n\n\n\"Bluesky\n\n\n\n
    \n
  • Privacy settings: Control what information is visible by accessing your Account Privacy Settings or the individual sections. 
  • \n
\n\n\n\n\"Gravatar\n\n\n\n

In the general settings, you can choose to hide your public avatar, make your profile private, or discourage search engines from indexing your profile. This flexibility lets you balance visibility with privacy.

\n\n\n\n\"Gravatar\n\n\n\n

As you can see, you only need a little bit of effort, and you can end up with a well-optimized Gravatar profile that helps you:

\n\n\n\n
    \n
  • Build professional credibility across multiple platforms.
  • \n\n\n\n
  • Establish a higher degree of online trust with your audience.
  • \n\n\n\n
  • Create networking opportunities whenever you interact online (and offline too!)
  • \n
\n\n\n\n

Using Gravatar with WordPress and beyond

\n\n\n\n

Gravatar has been deeply integrated with WordPress since 2007, when it was acquired by Automattic (WordPress.com’s parent company). This acquisition created a strong connection between these platforms that continues to benefit users today.

\n\n\n\n

When someone with a Gravatar profile comments or posts on a WordPress site, the system automatically pulls their Gravatar profile to display as the author. 

\n\n\n\n\"Example\n\n\n\n

This creates a consistent visual identity across WordPress blogs without requiring users to set up separate profiles on each site they visit. Your professional image follows you throughout the WordPress ecosystem, helping readers recognize you across different blogs and publications.

\n\n\n\n

Site owners can easily customize how avatars appear on their WordPress sites through the dashboard under Settings > Discussion. This section allows administrators to enable or disable avatars, select maximum ratings (G, PG, R, X), and choose default avatars for users without Gravatars. Options range from generic silhouettes to generated patterns based on email addresses.

\n\n\n\n\"Default\n\n\n\n

But Gravatar extends well beyond WordPress. Major platforms like GitHub, Slack, and OpenAI also use Gravatar to provide consistent user images across their services. This widespread adoption means your professional identity remains cohesive across much of the web.

\n\n\n\n

The greatest benefit comes from Gravatar’s central management approach: Update your profile once, and those changes sync across all connected platforms. Whether you’ve changed jobs, updated your headshot, or refined your bio, you only need to make these changes in one place. This saves valuable time and ensures your brand presentation remains consistent no matter where your online activities take you.

\n\n\n\n

Privacy and security: Managing your digital identity

\n\n\n\n

Gravatar gives you strong privacy controls to manage your digital identity. You can choose exactly which profile details to share publicly and which to keep private, so you always know who can see your data. Besides the settings you can adjust for yourself, Gravatar uses industry-standard measures like HTTPS to keep your data safe as it travels across the web.

\n\n\n\n

However, even with these protections, it’s still a good idea to maintain separate profiles for work and your personal life. Using different email addresses for your work and personal Gravatars creates a helpful separation that prevents people from connecting different parts of your life. This approach also lets you customize privacy settings for each email address – keeping your professional presence polished while maintaining personal privacy.

\n\n\n\n

One of Gravatar’s key benefits is that it helps minimize your overall digital footprint. Instead of creating and managing accounts across dozens of websites and platforms (each with potential security vulnerabilities), you only need to update your personal information in one central location. This reduces your exposure to data breaches while ensuring your public-facing information remains accurate and up-to-date across the web.

\n\n\n\n

Create your free Gravatar profile in minutes

\n\n\n\n

Ready to claim your digital identity? Getting started with Gravatar takes just a few minutes but establishes your online presence across thousands of websites instantly.

\n\n\n\n

Here’s how to get your Gravatar profile up and running:

\n\n\n\n
    \n
  1. Visit Gravatar.com and click “Get Started Now.”
  2. \n\n\n\n
  3. Create a new account or sign in with your existing WordPress.com credentials.
  4. \n\n\n\n
  5. Upload your chosen profile image – select something professional that represents you well.
  6. \n\n\n\n
  7. Complete your profile by adding a compelling bio.
  8. \n\n\n\n
  9. Connect your social media accounts and verify important links or services.
  10. \n
\n\n\n\n

With this single action, you’ll join millions of users on WordPress.com, GitHub, Slack, and other major platforms with your new globally recognized avatar. Your professional image will automatically appear whenever you comment, contribute, or interact across the web.

\n\n\n\n

No more maintaining separate profiles on dozens of websites. With Gravatar, you create one central identity that follows you across the internet, saving time while ensuring a consistent, professional presence everywhere you go.

\n\n\n\n

Create your free Gravatar profile today!

\n\n\n\n\"\"\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 06 Apr 2025 21:39:16 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:12;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:113:\"Gutenberg Times: Gutenberg Changelog 116 – WordPress 6.8, Source of Truth, Field Guide, Gutenberg 20.5 and 20.6\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"https://gutenbergtimes.com/?post_type=podcast&p=39909\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"https://gutenbergtimes.com/podcast/gutenberg-changelog-116-wordpress-6-8-field-guide/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:70135:\"

Birgit Pauli-Haack and JC Palmes talked about WordPress 6.8, Source of Truth, Field Guide, Gutenberg 20.5 and 20.6.

\n\n\n\n

Add a summary/excerpt here

\n\n\n\n

Show Notes / Transcript

\n\n\n\n\n\n\n\n

Show Notes

\n\n\n\n

JC Palmes

\n\n\n\n\n\n\n\n\n\n\n\n

Community Contributions

\n\n\n\n\n\n\n\n

WordPress 6.8

\n\n\n\n\n\n\n\n

Zoom Out: Disabled when show template disabled #69777

\n\n\n\n

\n\n\n\n

Gutenberg plugin releases

\n\n\n\n\n\n\n\n

Stay in Touch

\n\n\n\n
\n\n
\n\n\n\n

Transcript

\n\n\n\n

Birgit Pauli-Haack: Welcome to our 116th episode of the Gutenberg Changelog Podcast. In today’s episode we will talk about WordPress 6.8, The Source of Truth, the Field Guide, Gutenberg 20.5 and Gutenberg 20.6, and a few other things, little things in between.

\n\n\n\n

I’m your host, Birgit Pauli-Haack, curator at the Gutenberg Times, and a developer advocate working for Automattic. And it’s a great privilege for me to have with me, JC Palmes, who is the engineering manager at Web Dev Studios, again on the show. JC was also the local co-lead of this year’s WordCamp Asia in the Philippines, and it was a great WordCamp. So, congratulations. So glad you made it today, JC, how are you?

\n\n\n\n

JC Palmes: I’m doing great. And, actually, my role changed since we’ve last had this. Yeah, so I’m now the principal technical manager at Web Dev Studios.

\n\n\n\n

Birgit Pauli-Haack: Congratulations.

\n\n\n\n

JC Palmes: Thank you. But yeah, I’m happy to be back. And things have been good, very busy, but the good kind. I’ve been deep in block themes again, so I’m excited about this episode. So, I’ve seen there’s a lot of cool stuff in 6.8 in the recent Gutenberg release I think developers like me will appreciate, especially those who are building for clients and working with starter themes.

\n\n\n\n

Birgit Pauli-Haack: Yeah, absolutely. So, the first time you were on the show was last September in Episode 108, and you had just released the first version of the WSD, W-

\n\n\n\n

JC Palmes: WDS-BT.

\n\n\n\n

Birgit Pauli-Haack: … WDS-BT, yes, I’ll get it right, block starter theme, and we discussed it on the show. And after using it for half a year now, how are you doing with it, and what have you learned?

\n\n\n\n

JC Palmes: Yeah, so it’s been a great journey since then. After six months, was it really just six months, of using and refining WDS-BT in real client projects, I’ve learned a lot about what engineers need from a starter theme, especially when working with the site editor.

\n\n\n\n

And we’ve recently released Version 1.1, and most of the updates were based on feedback from our team, lessons from actual use in client sites, and one of the biggest things we focused on was making it easier to generate blocks and patterns consistently using our internal script, which is now part of BT as well.

\n\n\n\n

So, it’s all documented in the README if any developers out there want to try it out. So, this really helps streamline development for everyone. And we also have a demo site so that clients and internal teams and Sales can preview how the theme behaves out of the block. It’s been really helpful for onboarding and for setting clear expectations early on.

\n\n\n\n

Birgit Pauli-Haack: Yeah, I can imagine that, yes, and with the scripts now. So, you just said you had two scripts. One is to create custom blocks, and the other one to patterns. That’s the first time that I’ve heard about it. 

\n\n\n\n

JC Palmes: Oh, sorry. Well, not… So, we have an internal script. So, BT is part of our other repo that helps us create a client site from scratch. And what that does is, there’s a script that I’ve added in where we can create a theme based on WDS-BT in five minutes, and it goes through all the process in the terminal, and then, after that, you have a full website theme working, a block theme working as is.

\n\n\n\n

And the other one, which is part of BT, is in creating scaffolding blocks. So, BT comes with a block theme template that is baked into our custom webpack config. That webpack config is defaulting on WordPress config still, but we did add in a bit more flavor to it based on our use case.

\n\n\n\n

Birgit Pauli-Haack: Oh, of course, yeah, that’s what it’s for, yeah, to adopt it, yeah. So, wonderful. So, dear listeners, we will share the links, one is to the theme, and also, to the demo site, in the show notes so you can test it out and see if it could also be your starter theme for your clients, and at least gives you…

\n\n\n\n

JC Palmes: Yeah, that would be awesome.

\n\n\n\n

Birgit Pauli-Haack: … and gives you some inspiration for that. And I’m always looking for inspiration about how people approach a topic, so I’m glad that you and your company share so much online and build it in public, and also, shared quite a few blog posts about it, not only about your theme, but also your approach on getting clients work from a classic theme, and then, gradually go block-based.

\n\n\n\n

And I just listened to Brad Williams on the Press blog with Steve Birch. He interviewed him. So, I share that video as well in the show notes, and it starts out with what the approach is or how they approach it in terms of guiding clients through a block-based journey there when they were so happy with the other thing, yeah. And it starts at 20 minutes to get really into that. So, that was a really good conversation as well, with Steve Birch.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Community Contributions

\n\n\n\n

Birgit Pauli-Haack: So, we don’t have any announcement or listener questions today, but we have a few things that are community contributions or that I’ve selected, and one is pretty much the same topic. Kevin Devon and Mark Wilkinson from Highrise Digital, an agency in UK, shared their theme-building strategy for a school project at the London WordPress meetup.

\n\n\n\n

And it was really insightful to see how these experienced theme creators use the site editor to build a theme, and then, let the client fully customize, also, their sites. They actually go pretty deep and show what block that they hide from the school, what block variations on the embeds that they hide, and how to do that. They even shared some code.

\n\n\n\n

So, it was quite fast-paced, but video, you can just stop it and listen to it again, and all that. Yeah, so it’s called Building a Block-based WordPress Site with FSE. Yeah, they also went pretty detailed in what kind of custom blocks they did.

\n\n\n\n

And they actually didn’t program them themselves, they used ACF because of the data entry screens as well. So, they only did two. The rest was all core stuff, yeah. So, it’s really cool to see how that works out.

\n\n\n\n

JC Palmes: I’ll have to check it out.

\n\n\n\n

Birgit Pauli-Haack: Yeah, they do some great work at Highrise Digital as well. And I have three more videos, so to speak, or tasks for you, dear listeners. So, three well-known developers in the community continue with their live streams. They started either this year or long before, but Jonathan Bossenger, many know from the developer courses at Learn WordPress, has been learning working with AI, and he shares it, be it wins or losses, on the live stream.

\n\n\n\n

And this week he tried to find out, can AI fix my Plugin Check issues? So, Plugin Check is a plugin that you install on your site when you develop a plugin, and then run through all the checks that the plugin review team has built so you are ahead of the curve when you submit it to the WordPress repository.

\n\n\n\n

But it’s not only good for when you submit it to the repository, it definitely helps you, also, with your own, even if you just give it to your clients also to beef up, check out some of the issues that are always problems.

\n\n\n\n

Yeah, so I cannot say because that’s a secret. No, you need to check it out themselves, how good he was, how good it worked for him. And the second one is JuanMa Garrido, he is from Spain, and is also a developer advocate at Automattic, and he shared live stream sessions in Spanish and English, not at the same time, of course. 

\n\n\n\n

JC Palmes: Okay.

\n\n\n\n

Birgit Pauli-Haack: … me speaking Spanish, but no, he has one week he does this in Spanish, and the next week he does something else in English. So, that’s quite a good thing for the Spanish community as well.

\n\n\n\n

And he recently livestreamed going through the Data Layers Course on Learn.WordPress and built the app in public, and goes through, not all lines of code, but he explains the concepts behind that, even…

\n\n\n\n

Well, sometimes you need somebody to walk you through things so it actually clicks in your mind a bit, and that’s what JuanMa Garrido did. And then, Ryan Welcher is the pioneer of livestreaming…

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: … in WordPress, and he’s done it for, I think, almost three years, if not longer. And he livestreams every Thursday at 2:30 PM, UTC, on Thursdays, unless he’s on a meetup or at a WordCamp or on holiday. And he has been, recently, working on adding user profiles and user interactions to his Block Developer Cookbook, which is the base of all his workshops where he has a few recipes that he walks through.

\n\n\n\n

In live events or in-person events like WordCamps, people can vote on which recipe should be talked about. And so, it was quite interesting to see at the workshop at WordCamp Asia last year and this year, because every event is different, yeah.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: So…

\n\n\n\n

JC Palmes: I missed that one. I wanted to be there, but with being a local lead organizer for WordCamp Asia, you can’t really be on the sessions that you want to be just because there’s a lot going on on the, you know?

\n\n\n\n

Birgit Pauli-Haack: Yeah. And unfortunately, workshops are not recorded, as far as I can tell.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: … because they’re also too long, yeah, and they are not a… So, a talk, when it’s recorded, it’s, most of the time, fast-moving because you only have 30 minutes or something like that, but when you have a workshop that is 75 minutes, it is a lot of downtime in the end. It’s moving at a glacial pace when you sit at home at YouTube. So, I totally get it.

\n\n\n\n

But you can check it out. We’ll share the Block Developer Cookbook repo in the site, in the show notes. So, you can definitely check it out. And maybe you want to get on the live stream with Ryan or JuanMa or Jonathan.

\n\n\n\n

JC Palmes: Yeah, we’ll see what we can do about that.

\n\n\n\n

Birgit Pauli-Haack: So, JC, what are the places that you watch for learning new stuff?

\n\n\n\n

JC Palmes: Yeah, so I usually keep an eye on a few key places. The Make WordPress Core blog is, of course, a go-to because it’s where most of the important updates and demos get posted first, officially.

\n\n\n\n

And I also follow what’s happening on the Gutenberg and WordPress GitHub repos, because the discussions there give a good sense of what’s being built and why certain decisions are made. There’s a lot there.

\n\n\n\n

And of course, I check Learn WordPress pretty regularly, too, especially the developer workshops. I also stay actively lurking in Slack, mostly in Core Editor and Design. I try to catch Ryan’s live stream, always, when I have time, when I can, but I usually end up just going through the recorded ones on YouTube.

\n\n\n\n

Birgit Pauli-Haack: Yeah?

\n\n\n\n

JC Palmes: But yeah, they’re really great for seeing how things work in practice. And I read a lot of blogs, too. I can’t give you the list of the blogs that I read just because I don’t have a particular list. I just try to search for something that’s interesting based on the conversations in GitHub, and then, read through all the things.

\n\n\n\n

Birgit Pauli-Haack: Yeah, excellent. Well, thank you so much for walking us through that. Yeah, I found the good with Gutenberg GitHub repo, really, there is so much there that it’s really hard to zone in on or zero in on the things that you, right now, need or wanted to explore.

\n\n\n\n

So, tracking issues are really good, and there is now a label that says Tracking Issues so you can see the history of a feature, how it worked out, or what’s in the pipeline. Of course, with the contributions being reduced, it’s going to be a little shorter…

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: … or less features coming in, but sometimes it’s a good thing that there is a slower pace so everybody can catch up where they are. And I feel the same, yeah. I get the opportunity to dive a little deeper in all the things, although I was already, I have been quite deep into it, yeah. But if you don’t practice the skills to… it’s just superficial, yeah.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

What’s Released – WordPress 6.8 RC 2

\n\n\n\n

Birgit Pauli-Haack: But talking about the Make Core blog, WordPress 6.8 is in Release Candidate 2, and it’s only about 11 days away from final release. So, if you haven’t tested 6.8, now it’s really time, and you need to carve out a few hours to make sure that your themes and plugins actually work at the sites, work with it.

\n\n\n\n

And that, of course, helps when you have a standardized system so you only have to check, mostly, one site, and then, some exceptions. But yeah, go and test it a bit. The Field Guide has the whole list of it, but it’s also a little bit overwhelming.

\n\n\n\n

But we can go through some of the dev notes that are in there, and we also have a link to The Source of Truth for the details on the block editor. So, the list of dev notes, I only had three or four stars in there. Now, you have all the stars in there. That’s cool.

\n\n\n\n

So, to explain that to our listeners, I had the list of dev notes, and I put an emoji star to it and said, “Okay, JC, let me know which one you want to talk about, and then we’ll kind of have…” And she checked all of them. It’s really cool.

\n\n\n\n

JC Palmes: I did add in the smiley face to the ones that I think are really nice.

\n\n\n\n

Birgit Pauli-Haack: Yeah. So, I think that one of the major features coming on 6.8, I don’t know you how you feel about it, but for me it’s the speculative loading in 6.8, and it has such a great history because it comes out of a feature plugin that already had 50,000 installs in the last couple of years. So, what is it?

\n\n\n\n

So, speculative loading leads to near-instant page load times by loading the URLs that users might navigate to them already in the background. And the feature relies on an API that is now supported by many browsers.

\n\n\n\n

It’s called the Speculation Rules API, and it’s a platform feature so you can define the rules for which kinds of URL to pre-fetch or pre-render, and how early such speculative loading should occur. So, that’s in a nutshell, and has a lot of technical implications.

\n\n\n\n

JC Palmes: I’m looking forward to this. This is one of the features that I really like, because I’ve been testing. So, for those who are using block themes, if you’re not, you should, speculative loading is already, it’s helping your site feel faster. You don’t have to enable anything, it’s just built in.

\n\n\n\n

So, just to add into what you mentioned about speculative loading, what it does is preload pages users are likely to visit next based on how they interact with the site. So, when they actually click the page, the next page is ready and it loads almost instantly. 

\n\n\n\n

Birgit Pauli-Haack: Yeah, it speeds up, yeah.

\n\n\n\n

JC Palmes: Yeah. What I really like about it is that it improves performance without adding too much complexity. There’s no JavaScript to manage, no extra setup. It just quietly does its job in the background. And it’s one of those features that makes the experience better for users while keeping it very simple for developers, which I really like. Always a win in my book.

\n\n\n\n

Birgit Pauli-Haack: Yes, yes, absolutely.

\n\n\n\n

JC Palmes: Make it easy for me, yes, please.

\n\n\n\n

Birgit Pauli-Haack: Yeah, yeah, it’s a win for you, but it’s also a win for the clients because their visitors are benefiting from that without any additional investment.

\n\n\n\n

JC Palmes: Exactly.

\n\n\n\n

Birgit Pauli-Haack: So, that’s the beauty of a WordPress open source system, that a lot of people work on it, and a few things just come with an update without costing a whole lot of money.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: But let’s go a little bit back to the block editor. The first thing is that the global styles are now actually available from the left side of the screen, yeah. So, you have everything that you need reachable from the black navigation bar, and you don’t have to switch from one side to the next. Yeah, you can all do it in there, which is really cool.

\n\n\n\n

JC Palmes: That always trips me up. Having to go from left to right when having it on one side just makes total sense.

\n\n\n\n

Birgit Pauli-Haack: Yes. Yeah. And what also started to, from in there, is that you can now also get the style book from there. And it’s a little bit more intuitive because when you click on the typography, you see, in the style book, all the blocks that have text in them.

\n\n\n\n

And if you go to images or, what is it, no, color, then you know all the blocks that have color settings in them, which are quite a few now, but it’s easier to zero down on a problem or on a concern, kind of, “Let’s look at our images,” or, “Let’s look at our paragraphs,” or, “What are the styles for it,” and all that. So, it’s all there.

\n\n\n\n

And the user can actually change some of the global styles to switch out for their sites. If they don’t like the green of the button, they can make it darker or make it blue or make it pink, and make it for the whole site. So, it’s an instant replacement there. So, I really like the global styles to be a little bit more accessible for my brain. Speaking of a style book, it’s now also available for classic themes…

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: … which was a long time coming, or when the style book came to block themes, it was an early request from theme developers to get it also for the classic theme, and that finally comes with WordPress 6.8.

\n\n\n\n

JC Palmes: Yeah, that’s one of the features that I added a smiley on, because that’s big. So, having classic themes or hybrid themes able to access the style book is going to help a lot for those who are still on the fence about going full block, although they should, but it gives them that experience.

\n\n\n\n

Birgit Pauli-Haack: Right, yeah. And also, the controls, yeah.

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: So, it’s an easing into the modern WordPress world, although there’s nothing wrong with staying on classic themes, but it’s so much nicer to work with a block editor, yeah. So, one of the confusions that has surfaced with the block theme is the confusion that, am I editing, now, a template, or am I adding a content page or grading a content page?

\n\n\n\n

And it took about, I think, a couple of years to figure out, and I am not there yet, we are not there yet, but to make that easier too, because the whole concept of templates was something that WordPress users, before, had no touch points. It was all in code and it was all for the developer.

\n\n\n\n

And unless the theme developer had a customizer, there was no need to think about templates, all that. But now, that concept has arrived at the user, and to get this right in the brain, it’s sometimes really hard. And now, they have added a switch to show the template in the editor or not.

\n\n\n\n

So, what that gives you is, when you grade a post and you click on the Show Template, you see where the featured image is and all the post content areas, and know, okay, when you click on the preview, it will show you, also, the whole page. Not only when you go to preview, but already in the editor, you see the whole page with header and footer and featured image and all that shows up. It takes the surprise out of it.

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: And the same with pages.

\n\n\n\n

JC Palmes: If you say there’s a switch that just gets toggled on when you see everything outlined for you, because that just makes things less confusing. So, this is a good move.

\n\n\n\n

Birgit Pauli-Haack: Yeah. And the switch is in the preview tab, in the top toolbar, when you click on the preview, then you see that tab has changed, it has additional features now. So, plugin developers, your email newsletter person plugin can see the email from your post if you needed to, and there is also the show template off and on. It’s just a check mark. And it’s really nice, yeah. And it goes together with a Zoom Out view. The Zoom Out view is nothing new with 6.8.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: It has been introduced to WordPress through 6.7, very rudimentary, but when you add a pattern to your page, it goes automatically to Zoom Out. So, you see more of it and you see the whole composition of it. Now, in the toolbar of that particular section or pattern that you just added, you can change the styles, if there are any, from the theme, and you can change the design.

\n\n\n\n

So, if you have a call-to-action pattern, clicking on Change Design gives you the other patterns that are call-to-actions, or in the same category, and if you click that little drop that’s in the toolbar…

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: … yeah, you can browse through the styles for that particular call-to-action. And then, the Twenty-Twenty-Five theme, that’s actually quite nicely done. So, the developers of Twenty-Twenty-Five made a real good design system so you can just go through the color patterns for a particular section. It’s really nice.

\n\n\n\n

And the option gives you only a few block options. So, in the tool block toolbar you see those two features, and in the dropdown of the three dots, you only get four options, that’s copy, cut, duplicate, and delete. There’s nothing else to do there.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah. I found, yeah, it’s still a discussion if it’s a bug or not. For me, it’s a bug, but other people find it, well, maybe it should be like that is, when you switch off the show template-

\n\n\n\n

JC Palmes: Mm-hmm?

\n\n\n\n

Birgit Pauli-Haack: … it also switches off the possibility of zoom view, because the zoom view is on a certain element in the template, the main element, and if that’s not there, the zoom view does not show. So, if you are waiting for the zo…m view to come in because you added a pattern, you need to just check Show Template…

\n\n\n\n

JC Palmes: Check Show Template.

\n\n\n\n

Birgit Pauli-Haack: … yeah, switch on Show Template, and then you get it back. Or you could use… Oh no, that’s the wrong one. I thought that was a shortcut, but the shortcut is not for the template, it’s for the Zoom Out view, and it’s shift + control + 0 to get the Zoom Out view, but only when Show Template is checked.

\n\n\n\n

JC Palmes: Yes. That sounds like a bug.

\n\n\n\n

Birgit Pauli-Haack: Yes. And I’m sharing that bug with you all so you can chime in. It’s an interesting discussion. Because it’s two different things. In my brain it’s two different things, and they shouldn’t be covered.

\n\n\n\n

JC Palmes: Yeah, completely two different things.

\n\n\n\n

Birgit Pauli-Haack: Yes.

\n\n\n\n

JC Palmes: They’re not the same.

\n\n\n\n

Birgit Pauli-Haack: Thank you. Well, the design tools, well, then 6.6 they started, and then, 6.7, they continued with it, and 6.8, I think, is pretty far that every block has all the design tools it needs. So, color options, border options, dimensions are now available for almost every block.

\n\n\n\n

And there’s a dev note called the Roster of Design Tools per block, and you get a table with all the blocks in the list and which kind of feature they have and not have so you can…

\n\n\n\n

JC Palmes: Oh, that’s nice.

\n\n\n\n

Birgit Pauli-Haack: … a fast check, yeah. But it could use a few more features, like, the header comes down, but with the theme right now, it’s not possible.

\n\n\n\n

JC Palmes: We have a pretty sweet table style in DEL, BT.

\n\n\n\n

Birgit Pauli-Haack: Oh, okay. Well, I’ll see if I can replicate the full table and put it somewhere where I have access to plugins, because on the Make blog, yeah, there’s not a whole lot of…

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: … the plugins all need to be tested and approved, and all that. So, did you get a chance to look at the Details block, changes there? Detail blocks was introduced, I think, in 6.7, I think, yeah.

\n\n\n\n

JC Palmes: Yeah, I’ve been using the Details block mostly as an accordion FAQs…

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: … but this time around, I have not played around with the Details block when I was testing in 6.8.

\n\n\n\n

Birgit Pauli-Haack: So, there are three different features that… So, one is that, if you have a list of the same things that you want to be controlled together, then you can give each one of the items, each Details block, so you have a set of three Details blocks and they’re all FAQs, for instance, so you can give them, in the the Advanced section, there is a Name Attributes field, and if you give them the name attribute, each one of them the same, then via CSS, you can control those at the same time.

\n\n\n\n

And what also happens is that, when one opens, the other one closes, and vice versa. So, it feels more like a unit for that. And you see it that the FAQ thing, oh, I used FAQ here in the example, in the Source of Truth, and you see that it’s then attached in the CSS in the name field. So, they’re identically named, and then they’ve…

\n\n\n\n

JC Palmes: That is a good one. So, we’ve usually added in a script to handle opening and closing the Details block as an accordion. So, having this baked in is big.

\n\n\n\n

Birgit Pauli-Haack: Yes. And you can actually do it with a… a content creator can do this. So, the same developer can… yeah. So, this is really nice. 

\n\n\n\n

JC Palmes: This is nice.

\n\n\n\n

Birgit Pauli-Haack: Yeah. Then, what’s also nice is that the summary content, like the question for an FAQ, for instance, is then also shown in the list view of the block editor so you can identify which one you’re working with. That’s so nice because that helps quite a bit.

\n\n\n\n

JC Palmes: Yep.

\n\n\n\n

Birgit Pauli-Haack: And then, you can also create anchor links for each block so you can separately link to them from other places, and developers have a chance to modify the Allow blocks attribute to make sure that only the right blocks are used in a Details block.

\n\n\n\n

So, there are quite a few things in there that makes it… I think that’s one of the biggest changes for WordCamp 6.8. When I was testing, I said, “Oh, this is neat. Oh, this is neat,” kind of thing.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: So, I like that, yeah.

\n\n\n\n

JC Palmes: I like that one.

\n\n\n\n

Birgit Pauli-Haack: And then, the other things, some of the changes on the blocks are minimal, but still, quality of life changes. So, the Gallery block now has one link, or one way to put the link to open bigger…

\n\n\n\n

JC Palmes: Yes, because having to…

\n\n\n\n

Birgit Pauli-Haack: … and not for every…

\n\n\n\n

JC Palmes: … do it on every single image when you’ve had more than 10 images there is not nice.

\n\n\n\n

Birgit Pauli-Haack: I would have said two, I would have said two images. If you have more than two, you don’t want to do this for every image, but yeah.

\n\n\n\n

JC Palmes: I’m a bit patient with galleries just because, but know 10 is my max, so…

\n\n\n\n

Birgit Pauli-Haack: Yeah. No, but that is really good that you, just going through the tool while make sure they have the gallery parent, select it, go in the toolbar, and then you can select the Enable click to expand. The image block now has a feature, has a way from the blocks settings that you can, when you load it into your post, that you can say, “Okay, make this image my featured image,” and you don’t have to delete it and then load it again.

\n\n\n\n

You still need to delete it if you don’t want it doubling up on your post. When you display featured images with a single post template, then you have that image in twice. But yeah, kicking out or deleting a block is easy.

\n\n\n\n

JC Palmes: Yeah. But that update is a subtle but powerful workflow update because there’s no need to switch context, just to set a featured image. That saves time if you have to do it more than twice.

\n\n\n\n

Birgit Pauli-Haack: Yeah. If you do two posts a day for every day, you’re really happy about that type of saver, yeah. And you don’t have to think for it so much, yeah. Because a lot of people have a website that does really nice things with featured image, but it falls down when they forget the featured image there.

\n\n\n\n

That is something that they might… It prevents that people post something without the featured image. And then, the image block also has some handling. You can crop things and you can, well, mostly crop, or what else can you do with an image block, I forgot.

\n\n\n\n

JC Palmes: Mostly crop.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: Resize.

\n\n\n\n

Birgit Pauli-Haack: And now, you actually know that things happen because there are little notifications on the bottom of the screen that, “Oh, yes, we had to crop this,” yeah.

\n\n\n\n

JC Palmes: Yes. That always trips me up because when you crop an image, I always have to double-check, “Was it really cropped?”

\n\n\n\n

Birgit Pauli-Haack: “Did it work,” yeah. And I hate that question, “Did this work,” or, “What happened,” yeah.

\n\n\n\n

JC Palmes: Yeah. You just know it works when you look at the URL.

\n\n\n\n

Birgit Pauli-Haack: Yeah. 

\n\n\n\n

JC Palmes: It actually looks different.

\n\n\n\n

Birgit Pauli-Haack: Yeah, it does, yeah. So, the Query Loop block, have you seen what’s coming in with that?

\n\n\n\n

JC Palmes: So, this Query Loop block change is actually something that we, I guess, this is something that we wanted to fix way back. So, that is, that hasn’t been part of WDS-BT. It’s fixing WDS-BT, but with 6.8 having the same fix, I will have to remove that fix so that we’ll have the default one.

\n\n\n\n

Birgit Pauli-Haack: Yeah. Which feature are you…

\n\n\n\n

JC Palmes: It’s a long time coming. The sticky post for a Query Loop block where it’s adding in not being counted when you set a…

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah, there are two things. One was already in there. It excludes the sticky posts. But now, there’s a new…

\n\n\n\n

JC Palmes: They ignore one.

\n\n\n\n

Birgit Pauli-Haack: They ignore one, yeah, where you can… And that means that the sticky part of that post is ignored, and it will behave like the other filters.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Like, if you do it by date or you do it by category or by tag, or something like that, it’s not sticking up on top on any of those sites. So, it’s a little hard. So, “excluding” means, none of the sticky posts are showing, and “ignore the sticky post” doesn’t mean ignore the sticky post, it ignores the sticky part.

\n\n\n\n

JC Palmes: It’s having them go back to just a usual post not being counted as sticky, because sticky is sticky, it sticks to the front.

\n\n\n\n

Birgit Pauli-Haack: Yeah, or the top, or whatever.

\n\n\n\n

JC Palmes: Yeah, at the top.

\n\n\n\n

Birgit Pauli-Haack: Yeah. So, there’s also a sorting option by page. So, for pages, you now can order by page order, in ascending order or in descending order. So, if you have pages and have parents, and then you have that, or have it in a certain order, the Query Loop can be sorted by that.

\n\n\n\n

So, when you want to show them in a… Why would you do that? Oh, if you’re in navigation, or something like that, or it’s some pages and you want it all in the same, in a real good order there. So, that’s certainly something that’s new.

\n\n\n\n

JC Palmes: Yeah, that is new. Usually, when we need to do that same order by, we usually do it custom just so we’re able to do it that way. So, this is huge.

\n\n\n\n

Birgit Pauli-Haack: Yeah. I really like it because I had, often, use cases where they had a parent page about a certain topic, and then, sub-pages that go deeper into it, and they all needed to be on one page, and had featured images so you can really do nice grids, but if they’re in a different order, it… So, you really want them in the right order.

\n\n\n\n

Yeah, get everybody confused. And then, there is another feature in there that comes out of the Zoom Out view, but it’s the button in the toolbar for the Query Loop, for the group block that holds everything together so you can change the design.

\n\n\n\n

So, if you grab a pattern for the Query Loop, and after thinking about it for two minutes you don’t like it, you don’t have to throw it out again. You just click on Change Design, and then, you get a another list of the other possibilities how you can put it together.

\n\n\n\n

JC Palmes: Yeah, I like the Change Design link.

\n\n\n\n

Birgit Pauli-Haack: Yeah, very cool.

\n\n\n\n

JC Palmes: It’s a game changer. You don’t have to… Again, it’s a quality of life…

\n\n\n\n

Birgit Pauli-Haack: Absolutely, yeah. And you can now get the Query Loop for pages for all levels. Yeah, so you can say, “Okay, on the main page, I only want the sub-pages to show, but not the main page,” kind of thing. Yeah. And so, it’s really interesting.

\n\n\n\n

And The Source of Truth as well as the PR, they had an example query, so you can test it out, a pattern there. So, you can go through that. Yeah, that was the Query block, right? So, next thing is the new block, the Query Total block.

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: And it just shows the number of posts or pages in that particular query, and you can also add it to the pagination, or something like that, 10 of 12 kinds of things you get there as well. And it’s quite nice.

\n\n\n\n

JC Palmes: One functionality that I need to recheck to see how that…

\n\n\n\n

Birgit Pauli-Haack: Recheck on your theme, yes.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah, I can imagine, yeah.

\n\n\n\n

JC Palmes: That is built in as well. There’s a lot of updates in 6.8 that we fixed in BT that we have now to retest…

\n\n\n\n

Birgit Pauli-Haack: Remove.

\n\n\n\n

JC Palmes: … and remove as needed, which is quite nice, because it’s all going to be default functionality now. You don’t have to fight against the system.

\n\n\n\n

Birgit Pauli-Haack: Yeah. And you have somebody else maintaining that part of the code?

\n\n\n\n

JC Palmes: Right now it’s me and whoever is available at the moment.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

But it’s the whole set of contributors that-

\n\n\n\n

JC Palmes: Oh, yeah, of course.

\n\n\n\n

Birgit Pauli-Haack: … maintain that.

\n\n\n\n

JC Palmes: Exactly.

\n\n\n\n

Birgit Pauli-Haack: Yeah. And you don’t have to think about, “Oh, we had a customization there, so let’s figure that out.”

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: Okay.

\n\n\n\n

Birgit Pauli-Haack: So, while that was all going on in the release cycle and I was talking about things, I got a question that people who had a hard time finding or making sure that the Query Total block shows up, they couldn’t find it, it only shows up when you’re inside the Query Loop. It’s similar to the pagination. So, if you’re outside the Query Loop in your canvas, it doesn’t show up in the inserter because it has nowhere to go.

\n\n\n\n

JC Palmes: Yeah, it has nowhere to connect to.

\n\n\n\n

Birgit Pauli-Haack: Right, yeah. Well, you and I know that, but it’s not an easy concept for people.

\n\n\n\n

JC Palmes: Oh, yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: I have to always think about that because…

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: … sometimes I just think in the developer mindset. So, it’s a switch.

\n\n\n\n

Birgit Pauli-Haack: Yeah. Yeah, and sometimes it’s just surprising what is clear to me or others in the field. A new user or another content creator says, “How does that go? How does that work? I can’t find it.”

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah. So, the Social icon has minimal changes, but one is that it now also has the Discord icon. So, if you want to link to your Discord profile or Discord server, you can do this in the Social icons block, and it now also has, you can use the arrow keys to navigate to the link. You don’t have to go twice on adding the URL to whatever new Social icon you added.

\n\n\n\n

JC Palmes: Yes.

\n\n\n\n

Birgit Pauli-Haack: So, it’s really streamlining the process. Oh, I’ve just skipped over it. The Separator block can be, now, really expanded because you can add a different tag for it. The Separator block has only an HR tag until now…

\n\n\n\n

JC Palmes: The HR, yeah.

\n\n\n\n

Birgit Pauli-Haack: … the horizontal line. And now, you can actually replace it in the advanced HTML element section of the block and make it a diff. So, then, all the CSS that you can do with any other diff, you can now apply to the Separator block, and makes it a nice, it can be a nice decorative tool for your theme and for your site.

\n\n\n\n

So, I think that transformation really helps with all that setting. Additional setting helps, really, with styling, adding more styling possibilities. I was just saying transformation…

\n\n\n\n

JC Palmes: I guess we’ll be using the Separator block more?

\n\n\n\n

Birgit Pauli-Haack: Yeah, it can be interesting breaking up the wall of text when you have some decorative stuff there. I can see that, for instance, the little pattern things that you had in WordPress Asia website, that they could be a little bit more [inaudible 00:41:53] instead of just an image, or something like that, yeah.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: I was talking about transformation there, but I was just reading Transformation. What you now can also do is transform a Separator block into a Spacer block. So, yeah, there’s also one of the workflow improvements that come with 6.8. I don’t know if we have to go through the editor changes, all of them?

\n\n\n\n

I think there are two new commands. One is, Add a New Page, and the other one is, I totally forgot. My God. Open the Site Editor. When you are somewhere in pages or something like that and you want to just go back, you don’t have to click 15 times to get back to the design tools.

\n\n\n\n

No, you just do Open Site Editor, CTRL + K, and then, start with Site Editor, and it gives you the option already in the command palette that flows on top of your screen.

\n\n\n\n

JC Palmes: Oh, keyboard shortcuts too.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: There are two new ones, right?

\n\n\n\n

Birgit Pauli-Haack: Yeah, it’s the…

\n\n\n\n

JC Palmes: Pace, block styles with Command Control, and option…

\n\n\n\n

Birgit Pauli-Haack: Oh, good.

\n\n\n\n

JC Palmes: We didn’t… Yeah, that one. That set’s going to get heavy use.

\n\n\n\n

Birgit Pauli-Haack: Yes.

\n\n\n\n

JC Palmes: From me at least.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: And then, that shortcut, you can now paste block styles.

\n\n\n\n

Birgit Pauli-Haack: Right, yes.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: You can copy-paste block styles over. That’s fast. You can really do that. So, the next thing, what I really like is, the Starter Content is now available for… You can switch that off. That’s the first thing. So, if you add a new page, it automatically comes with Starter Content, if the theme provides them, in a modal.

\n\n\n\n

That gets in the way to get started with what you want to do. Some people like it and some people don’t like it. It’s the 50-50 thing. But some people… So, you can switch it off. So, you can toggle that Show Starter Content Patterns off, and you can also change it in the Preferences.

\n\n\n\n

But you can also find them in the categories of your patterns. It says Starter Content. So, if you do want to see them, you can just go there and get a list of the starter content for that particular post type. 

\n\n\n\n

JC Palmes: Yeah, that one I have not tested yet, but that will be useful for clients who have very particular styles for a custom post type. With the toggling on and off of that feature, is that available per custom post type or is that a global setting?

\n\n\n\n

Birgit Pauli-Haack: It’s a global setting. Show Starter Content Patterns, that’s a global setting, but Starter Content, until 6.8, wasn’t available for other custom post types.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Yeah, but now it is. So, you can, if you’re just in the header of the pattern, you say that’s also for your custom post types, when you do add new custom post type, it also shows the starter content, which wasn’t available before.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: So, that’s really cool.

\n\n\n\n

JC Palmes: Yeah, that’s cool.

\n\n\n\n

Birgit Pauli-Haack: Yeah, that’s definitely a good feature request for an enhancement to at least provide a filter for theme developers to switch it off for certain post types, and on for other posts. And speaking of theme developers, now you could have your patterns in different folders so it’s not all in the patterns folder, like, Twenty-Twenty-Five has, I don’t know, 80 patterns in one folder?

\n\n\n\n

JC Palmes: A lot.

\n\n\n\n

Birgit Pauli-Haack: Now, you can… And I had to do, with the name of the file, I had to sort it, like, H or CTA, dot, dot, dot. Now, you can have folders like Patterns, CTAs, and I’ll put them all in there, or Patterns and Testimonials, or something like that, yeah.

\n\n\n\n

So, it’s a little bit more organized in your theme folder, and I really like that, yeah, because I’m also a fan to having separate style folders. So, I have styles for blocks and a style for other things.

\n\n\n\n

JC Palmes: Yeah, that’s what we do with BT as well. So, styles are there included in folders if it’s words. I forgot what I was going to say. Yeah, just making sure that you have styles in the block folder.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: And being able to do that for patterns is…

\n\n\n\n

Birgit Pauli-Haack: Pretty organized, yeah.

\n\n\n\n

JC Palmes: … yeah, that’s going to make things a lot more organized, because we don’t need more than 80 patterns in one single folder.

\n\n\n\n

Birgit Pauli-Haack: Yeah. Maybe you don’t need any patterns, period, but some people actually, then, need them for a larger site…

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: … and then, you can sort it out through the folders, yeah. Because you have the categories, and if you make the categories also be your folders…

\n\n\n\n

JC Palmes: Your folders.

\n\n\n\n

Birgit Pauli-Haack: … yeah, it helps. So, that was what I wanted to… Well, we talked a lot about the block editor kind of thing, but I really like that because it’s such a neat tool, and we need to dive in, sometimes, really deeper into the features.

\n\n\n\n

Now, for the developers, the Field Guide is out, and I definitely urge you to look at that and skim it at least for things that are interesting to you. There have been a ton of accessibility improvements, and Joe Dawson, the team rep of the Accessibility team has done a fine job putting that together so you can really see what has changed and what has been improved upon.

\n\n\n\n

There are also some developer-related changes for the block editor in the miscellaneous block editor dev note. I think George Mamadashvili did that. He was also the editor tech lead for the release, or is, yeah. It’s not out yet.

\n\n\n\n

And it definitely also deals with deprecations of being experimental, coming stable, or deprecated kind of thing. So, you definitely want to check that out to make sure that you have that on your radar when things get deprecated.

\n\n\n\n

JC Palmes: Yeah, I always make sure that I check that because you can’t have deprecated machines, especially in client sites.

\n\n\n\n

Birgit Pauli-Haack: Yeah. And when they’re announced through the console… So, sometimes clients tell me, “Okay, I get this yellow… What does it mean?” I said, “You have to ignore it.”

\n\n\n\n

JC Palmes: It’s for styling. Just ignore it. 

\n\n\n\n

Birgit Pauli-Haack: And then, there is a post about the interactivity API best practices by Felix Arntz, and also, Avoiding Deprecation Warnings is part of the headlines there. But definitely, if you are working with the interactivity API, definitely check it out. It gives you quite a few interesting pointers there.

\n\n\n\n

Oh, there is a more efficient block-type registration. This is also from Felix, yes. Now, you can register multiple blocks in one function so it doesn’t have to be called over and over again, which is definitely a performance improvement, and also, you don’t have so much code in it then. Check that out.

\n\n\n\n

JC Palmes: Yeah, I’ll check that out, because I’ve added in another custom function that allows us to do that just in one function.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: You don’t have to call it out multiple times.

\n\n\n\n

Birgit Pauli-Haack: Yeah, right, yeah. So, anything in the WordPress 6.8 that you wanted to talk about that we skipped here?

\n\n\n\n

JC Palmes: Definitely, the new filter, because that’s going to be…

\n\n\n\n

Birgit Pauli-Haack: Oh, the Should Load Block Asset on Demand.

\n\n\n\n

JC Palmes: On Demand, yes…

\n\n\n\n

Birgit Pauli-Haack: Yeah, explain that to me.

\n\n\n\n

JC Palmes: Yeah. So, with that new filter, it really just allows developers to make sure that blocks will only load their assets, the styling, and the scripts for that block when it’s actually on a page.

\n\n\n\n

Birgit Pauli-Haack: Oh.

\n\n\n\n

JC Palmes: When it’s used on a page. So, that was available for core blocks before. Let me just… There’s one other filter, I think, that is part of that.

\n\n\n\n

Birgit Pauli-Haack: Should Load Separate Core Blocks

\n\n\n\n

JC Palmes: Should Load Separate Core Block Assets, that one we are using on BT, just handled differently. Again, custom function because we do have custom blocks that I would want to not load, because by default, that loads, right? So, with BT, that only loads when it’s actually used.

\n\n\n\n

I would have to change to this new filter because this one is more efficient. It just does it out of the box. So, with Should Load Separate Core Block Assets, it does two things, it loads the core blocks, and then, with the Total Block library script, with all of the styling and stuff, and then, the scripts and the style sheet for that particular block, what this new filter does is, it loads, yeah, I mentioned that, it only loads the script and the styles for that block, not the entire thing.

\n\n\n\n

Birgit Pauli-Haack: So, like…

\n\n\n\n

JC Palmes: So, that’s going to be a lot of improvement. We do that already, which means I have to change that function to this new filter, which is amazing.

\n\n\n\n

Birgit Pauli-Haack: Yeah. You were definitely ahead of your time.

\n\n\n\n

JC Palmes: Because we need to fix things when WordPress is not yet ready to fix it because we need that function right away.

\n\n\n\n

Birgit Pauli-Haack: Right.

\n\n\n\n

JC Palmes: We can’t just wait. But glad that what we’ve done for BT is being done by default now.

\n\n\n\n

Birgit Pauli-Haack: Yeah, you can rip it out. All right, my dears, dear listeners, we are all through the 6.8 release so far, and I hope you find some really good things in there. Now, we’re coming to Gutenberg 20.5.                                                       

\n\n\n\n

Gutenberg 20.5

\n\n\n\n

And don’t be alarmed, and we have 20.6, but there are not a whole lot of new things or mentionable enhancements that we want to mention here. So, we’ll still, probably, stay within the time of our podcast, although there is no time. It takes as long as it takes, like many other things in life.

\n\n\n\n

JC Palmes: Because there’s a lot.

\n\n\n\n

Enhancements

\n\n\n\n

Birgit Pauli-Haack: Yeah. So, 20.5 Gutenberg Plugin, it has the updated edit site link for the admin bar that now goes, actually, back to the site editor and not to the page that you were actually on or the template that you were on.

\n\n\n\n

So, that confused a lot of people because every time you clicked on it, you were on a different page. So, sure, every time you click on it, to go to the same page. So, that is really good.

\n\n\n\n

The Create Block Package now supports blocks manifests and the relevant core APIs by default. That needed a little bit of bug fix in there, but that is now… It also has to do with the multiple blocks, right?

\n\n\n\n

JC Palmes: Mm-hmm.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: So, this one, I think, is a huge deal because having it aligned better with core and the support manifests by default means there’s less guesswork and just better starting point for custom blocks.

\n\n\n\n

Birgit Pauli-Haack: Yes. Yeah, absolutely, yeah. So, the Block button, if it’s used in the navigation bar, now also has… So, when you’re in a navigation bar and you add another link, if it’s a custom page link, it offers you creating a new page, but not with a button. So, now, when you add a button to it, also gives you the capability to draft a new page, which is really nice. So, you can use those buttons more.

\n\n\n\n

What else is in there? So, the Data View Actions, as a plugin developer, you can use a modal to do whatever the action is. And now, you also have the possibility that you can control the size of the modal so it’s not the same size every time.

\n\n\n\n

And you have a lot of white space there, or you can focus on certain things. Now, you can actually control the size through props. That’s developer speak, but you will appreciate that.

\n\n\n\n

JC Palmes: Of course. There are a couple of updates there that make me smile.

\n\n\n\n

Birgit Pauli-Haack: Which one?

\n\n\n\n

JC Palmes: The Trailing Period Cleanup and the Defaulting Back To, the 100 PX Spacer Block default.

\n\n\n\n

Birgit Pauli-Haack: Oh. Yeah.

\n\n\n\n

JC Palmes: These are really just petty things for me, but I’m glad that people find them weird as well. So, they’re fixing it and adding it back, thank you.

\n\n\n\n

Birgit Pauli-Haack: Good, yeah. So, there’s a change in the Data Views, which comes on par with the WPA, the old page things where you have the pages listed in the admin as a sub-page if you have sub-pages like… So, hierarchical kind of dimension there.

\n\n\n\n

JC Palmes: Yeah, hierarchical and not a flat thing. And that helps.

\n\n\n\n

Birgit Pauli-Haack: And that now came, also, to the Data Views. So, you have a cluster, the way you actually designed it or put them together. So, I’m sorry, there’s a little…

\n\n\n\n

JC Palmes: I’m also reading through.

\n\n\n\n

Birgit Pauli-Haack: Yeah, I need to read through that.

\n\n\n\n

JC Palmes: Oh, the mobile one.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: So, when I test VT, I always test on multiple interfaces, like you should, and that also includes editing.

\n\n\n\n

Birgit Pauli-Haack: Oh, yeah, editing on mobile, yes.

\n\n\n\n

JC Palmes: Editing on mobile is a lot easier.

\n\n\n\n

Birgit Pauli-Haack: Oh, now, yeah. That’s good, yeah. What else do we have? That’s pretty much for 20.5.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Documentation

\n\n\n\n

Birgit Pauli-Haack: Yeah. There’s also the documentation about the WP scripts with the build blocks manifest has been updated as well. So, you can read up about it. And the Color Experimental Duotone has been removed from core blocks, but I hope they’ll keep it in. That is stabilized now. So, it’s called Filter Duotone instead of Color Experimental Duotone.

\n\n\n\n

So, it’s just a rewording of things, and also, to make it stable so people are more inclined to use it in their custom blocks as well, because some people shy away from experimental stuff because they don’t know how it will turn out.

\n\n\n\n

JC Palmes: Usually, they change their name, which is going to be the case here. I don’t think we have… So, for our client projects, we usually do shy away from the experimental stuff just so… It needs to be as stable as it should be-

\n\n\n\n

Birgit Pauli-Haack: Well, that makes total sense.

\n\n\n\n

JC Palmes: … in my personal projects still, yeah. I do use that in my… Well, I play around with all of the experimental stuff on my own theme.

\n\n\n\n

Birgit Pauli-Haack: Yeah, it’s fun, right?

\n\n\n\n

JC Palmes: You end up seeing all the things that get broken on the next update, which is fun.

\n\n\n\n

Birgit Pauli-Haack: Or you at least can start prognosis, like, “Which one gets broken first,” kind of thing.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: Makes begging easier. So, that was Gutenberg 20.5. 

\n\n\n\n

Gutenberg 20.6

\n\n\n\n

We are now coming to Gutenberg 20.6, and there are additional features in there that are not coming to 6.8, except for the Enabling the Startup Pattern for all post types. That was back-ported to 6.8, but the others are…

\n\n\n\n

I don’t think that the keyboard shortcut to paste styles is actually in 6.8. I think that’s in the Gutenberg plugin, and it doesn’t have the, yeah, it does not come to 6.8.

\n\n\n\n

JC Palmes: That’s sad.

\n\n\n\n

Birgit Pauli-Haack: That’s sad. Oh, so sad.

\n\n\n\n

JC Palmes: I liked that.

\n\n\n\n

Enhancements

\n\n\n\n

Birgit Pauli-Haack: Yeah. So, they’re adding support for more granular controls for the Table of Content block, which also hasn’t made it to Core yet because it needs a little bit more finessing.

\n\n\n\n

JC Palmes: Yeah.

\n\n\n\n

Birgit Pauli-Haack: But if you use it in your private sites, or while some people, like me, are brave or are stupid, depending on the perspective, they use Gutenberg.

\n\n\n\n

JC Palmes: They use it on…

\n\n\n\n

Birgit Pauli-Haack: Yeah, Gutenberg production.

\n\n\n\n

JC Palmes: Yes. But this Table of Content block controls things that I love.

\n\n\n\n

Birgit Pauli-Haack: Yeah.

\n\n\n\n

JC Palmes: But again, it’s one of those almost-there blocks.

\n\n\n\n

Birgit Pauli-Haack: Yeah, yeah. And what we are talking about right now is that you can select the heading levels. So, if you want all the H2s in there, then you can say that, oh, you want all H1 to H2 to H6 in there, you can say that too, or anything in between.

\n\n\n\n

So, it’s a nice setting on the sidebar for the Table of Content. And I think I tweeted out a little video to show that off, but… When I was testing it, I said, “Oh, this is nice.” Yeah. Then, whereas the navigation bar has…

\n\n\n\n

JC Palmes: Navigation, yeah.

\n\n\n\n

Birgit Pauli-Haack: … it gets a transparency slider for the sub-menus background, which is highly appreciated. But also, that is not yet in. It just came in in 20.6.

\n\n\n\n

JC Palmes: Just began in 6.8 too.

\n\n\n\n

Birgit Pauli-Haack: So, that is out. So, 6.8, just so, if you want to go back and look at things, 6.8 has Gutenberg plugins from 19.4 to 20.4. So, with 2020. And most of the time, only bug fixes get back-ported to the current version, but then, new enhancements are not going to make it there.

\n\n\n\n

In 20.6 Gutenberg Plugin, you also get a new option for opening the links in a new tab for the RSS block. And that is something that a lot of people wanted, and now, we have it. Now you can shortcut for pasting styles. Was that the 20.6 already?

\n\n\n\n

JC Palmes: Yeah, that’s the 20.6…

\n\n\n\n

Birgit Pauli-Haack: Yeah, it was a small release because most of the Gutenberg developers like George Mamadashvili, Fabian Kägy, Akiyama Anu, and a few others, they were all really, in the release cycle, occupied with that. So, yes. But that’s it. We are almost at the end of our show.

\n\n\n\n

Well, thank you, dear listeners, and thank you, JC, for sticking it out with me and having a discussion on that. It was wonderful to chat with you about the things. And dear listener, as always, the show notes will be published on Gutenbergtimes.com/podcast.

\n\n\n\n

This is Episode 116, and if you have questions and suggestions or news you want us to include the next time, just send them to changelog@gutenbergtimes.com, that’s changelog@gutenbergtimes.com. So, this is it.

\n\n\n\n

Thank you, JC, thank you, all, listeners, for being with us again. And hello, all the new ones that we gathered, new listeners we gathered on all the different podcast apps. Well, I wish you a great weekend, everyone. Well, the weekend will be over when you get to read this. So, I wish you a nice weekend, JC.

\n\n\n\n

JC Palmes: Thank you.

\n\n\n\n

Birgit Pauli-Haack: And until the next time, thank you.

\n\n\n\n

JC Palmes: Thank you.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 06 Apr 2025 09:21:15 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:13;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:120:\"Gutenberg Times: WordCamp Europe, New Chart block, GitHub Deployment, and can AI fix my plugins? — Weekend Edition 324\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://gutenbergtimes.com/?p=38289\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:123:\"https://gutenbergtimes.com/wordcamp-europe-new-chart-block-github-deployment-and-can-ai-fix-my-plugins-weekend-edition-324/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:22695:\"

Hi there,

\n\n\n\n

How is your block theme knowledge coming along? The slower pace of Gutenberg development is a blessing in disguise. I will take the opportunity to dive deeper into block themes, styles, block and section styles, and block development. I definitely also see a need to skill up my CSS. What is it that you need to learn?

\n\n\n\n

It sounds funny coming from me, as I’ve been knee-deep in Gutenberg development all this time. Still, if I don’t actually practice the skills I acquired, I lose them. That’s why I decided to tackle the migration of the Gutenberg Times website to a block theme. A step was long overdue. I’ll post about my progress.

\n\n\n\n

And now it’s time to see what others created, and I discovered during the week.

\n\n\n\n

Enjoy your weekend and get some rest.

\n\n\n\n

Yours, 💕
Birgit

\n\n\n\n
\n\n\n\n\n\n\n\n

WordCamp Europe will take place June 5 – 7, 2025 in Basel, Switzerland. This week organizers announced that they already sold over 1,000 tickets, already. They also published the program schedule. It’s a great mixture of many topics and perspectives.

\n\n\n\n

At first glance, here are my top sessions.

\n\n\n\n\n\n\n\n

Bonus: Two Playground sessions:

\n\n\n\n\n\n\n\n

Special treat: Mythbusting and Q&A about appearing in Google Search with Danny Sullivan, Google.

\n\n\n\n

Want to meet me in Basel? Send me the link to your calendar or use mine bit.ly/WCEUMeetBirgit.

\n\n\n\n\"See\n\n\n\n
\n\n\n\n

There is a new kid on the block. In his post, WPCoven: Introducing A New Voice Covering the WordPress Ecosystem, Alex de Borba, CEO at Atmostfear Entertainment, introduced a publication. WPCoven will cover developments related to the Block Editor. It will also share best practices for its applications within the WordPress & WooCommerce community. 👋 Sending a hearty “Welcome to the space” to WPCoven. I will certainly watch the feed.

\n\n\n\n\"WP\n\n\n\n

Developing Gutenberg and WordPress

\n\n\n\n

Mary Hubbard posted the takeaways from a meeting with Core Committers and Matt Mullenweg. You can read the full meeting recap in Dotorg Core Committers Check In. The TL;DR about releases is:

\n\n\n\n
    \n
  • WordPress 6.8 is the last major release for 2025,
  • \n\n\n\n
  • Minor aka point releases will happen (6.8.x) as needed, with bug fixes, and small enhancements
  • \n\n\n\n
  • Gutenberg plugin release cycle stays every other week.
  • \n
\n\n\n\n

I also expect, we will read more about canonical plugins in the future.

\n\n\n\n
\n\n\n\n

George Mamadashvili released Gutenberg 20.6 version.

\n\n\n\n
    \n
  • The RSS block now offers an option to allow opening the links in a new tab. It can also set the rel attribute. (69641)
  • \n\n\n\n
  • The Table of contents block received a new option to control the level of heading included. (69063)
  • \n\n\n\n
  • The Navigation block now sports a slider to control the transparency for submenu background. (69063)
  • \n
\n\n\n\n
\n\n\n\n

JC Palmes, Principal Technical Manager at WebDev Studios, living in the Philippines, and I chatted about the Gutenberg releases 20.5 and 20.6. We covered WordPress 6.8 extensively, too and discussed the starter theme WebDev Studio has built. It was a great joy to chat with JC Palmes again.

\n\n\n\n
\n

🎙️ Latest episode: Gutenberg Changelog 116 – WordPress 6.8, Source of Truth, Field Guide, Gutenberg 20.5 and 20.6 with special guest JC Palmes, WebDev Studios

\n\n\n\n\"\"\n
\n\n\n\n

Plugins, Themes, and Tools for #nocode site builders and owners

\n\n\n\n

The editorial team at Codeable published a tutorial titled Easy Ways to Edit Your WooCommerce Product Page Design. You learn how to change the WooCommerce product page without altering core WordPress files by creating a new plugin. This method lets developers change the layout, design, and functionality using filters or hooks. Developers can make changes by focusing on specific parts like the product image, description, price, and currency. This approach avoids disrupting other sections of the page. This strategy keeps code clean and ensures functionality. It’s advised to use a child theme for WooCommerce plugin modifications to prevent conflicts.

\n\n\n\n
\n\n\n\n

Bud Kraus‘s latest tutorial teaches How to make block content hide or appear in WordPress. He helps website owners learn to use the Block Visibility plugin, which is often misunderstood and underused. By installing the plugin, Kraus demonstrates how to hide specific blocks in a page or post. This provides more flexibility. It also allows for further customization. This method allows website owners to create dynamic layouts, improve user experience, and boost performance.

\n\n\n\n
\n\n\n\n

Nick Schäferhoff walks you through the steps on How to Build a One-Page Website with WordPress . He explains how these single-page sites can be super effective for modern websites. They allow users to easily navigate. Users can find what they need quickly. Schäferhoff also shares some tips on how to make the site visually appealing. He advises on ensuring it is user-friendly. This makes it easy to get started with this trendy web design approach. The instructions detailed, and you also find excellent screenshots so you won’t get lost.

\n\n\n\n
\n\n\n\n

A new Chart block plugin has arrived at the WordPress plugin repository. It was created by the folks at BdThemes, a WordPress product company from Bangladesh. The plugin is called Advanced Charts for Gutenberg Blocks Editor. Give it your data via CSV file and it assists create a visualization for it. It has many customization and design tools.

\n\n\n\n\"\"\n\n\n\n

If you only need basic chart tooling and designs, SB Chart Block by Herb Miller is ideal. From the block Inserter in the editor, search for “Chart” and you can install it right from within the editor.

\n\n\n\n\"\"\n\n\n\n

Theme Development for Full Site Editing and Blocks

\n\n\n\n

At the WordPress Meetup in London, Keith Devon and Mark Wilkinson, Highrise Digital, presented their theme building process. They demonstrated this process for a school project. I found it quite interesting to listen to the long-time theme builders. They approach building a theme with the site editor and offer the full range of editing tools to their clients. Here is the recording: Building a Block-Based WordPress Site with FSE

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

Benjamin Intal and his crew at Stackable are super excited to share the New Stackable Global Design System! This update is designed to make life easier for developers. It helps them create consistent and cool designs across different websites. You’ll find loads of ready-made components, typography, colors, and more to play with. It’s crafted to simplify the design process and cut down on the usual headaches for developers. Or so they claim.

\n\n\n\n

 “Keeping up with Gutenberg – Index 2025” 
A chronological list of the WordPress Make Blog posts exists. It includes contributions from various teams involved in Gutenberg development. These teams are Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. The past years are also available: 2020 | 2021 | 2022 | 2023 | 2024

\n\n\n\n

Building Blocks and Tools for the Block editor

\n\n\n\n

Jonathan Bossenger livestream about his question: Can AI fix Plugin Check issues? He recently adopted a WordPress plugin that was closed due to security flaws and other code issues. Can AI help him resolve these issues faster than he could himself? Let’s find out.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

JuanMa Garrido continued his series Data in the Block Editor with @wordpress/data. He presented Part 3 of building the app. This part is from the course Using the WordPress Data Layer. This course aims to get you comfortable with the WordPress data layer. It’s a JavaScript library used throughout the WordPress editor to read and write data. You can catch up on Part 1 and Part 2 of the series via YouTube.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

Ryan Welcher has been live-streaming on Twitch every Thursday at 14:30 UTC. Over the last two weeks, he focused on adding user profiles to the Block Developer Cookbook. He worked on Part 1 and Part 2. You’ll learn how to create an Author Archive template. You’ll also learn how to create an Author page layout while handling user metadata for display. Part of the experience of Welcher’s livestream is also method on debugging code and code review.

\n\n\n
\n
\n
\n
\n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

In his latest video, Nick Diego introduced you to an awesome developer tool: How to use GitHub Deployments on WordPress.com. “Whether you’re building custom themes, plugins, or managing full-site deployments, integrating GitHub with WordPress.com offers a powerful and efficient approach to code management. In this video, you’ll learn how to connect a GitHub repository to your WordPress.com site using GitHub Deployments.”

\n\n\n
\n
\n
\n
\n
\n\n\n

What’s new in Playground

\n\n\n\n

For the latest episode of the WPTavern Jukebox podcast, 163 – Birgit Pauli-Haack on the Magic of the WordPress Playground, I joined Nathan Wrigley. We talked about my experiences with the WordPress Playground. I shared how I created complex and interactive demos using the Playground. I even brought them online as fully functional websites. We discussed the power of storytelling in web development. You can use the Playground to experiment and learn new things.

\n\n\n
\n
\n
\n
\n
\n\n\n

Need a plugin .zip from Gutenberg’s master branch?
Gutenberg Times provides daily build for testing and review.

\n\n\n\n

Now also available via WordPress Playground. There is no need for a test site locally or on a server. Have you been using it? Email me with your experience

\n\n\n\n

\"GitHub

\n\n\n\n

Questions? Suggestions? Ideas?
Don’t hesitate to send them via email or
send me a message on WordPress Slack or Twitter @bph.

\n\n\n\n
\n\n\n\n

For questions to be answered on the Gutenberg Changelog,
send them to changelog@gutenbergtimes.com

\n\n\n\n
\n\n\n\n

Featured Image: Image by ta98mori from Pixabay

\n\n\n\n
\n\n\n\n

Don’t want to miss the next Weekend Edition?

\n\n\n

We hate spam, too, and won’t give your email address to anyone
except Mailchimp to send out our Weekend Edition

Thanks for subscribing.
\n\n\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 05 Apr 2025 05:14:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:14;a:6:{s:4:\"data\";s:11:\"\n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"HeroPress: HeroPress Swag!\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://heropress.com/?p=7882\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:95:\"https://heropress.com/heropress-swag/#utm_source=rss&utm_medium=rss&utm_campaign=heropress-swag\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:5594:\"\"Black

Marcus Burnette over at TheWP.World recently made a swag store and very kindly created some HeroPress swag!

\n\n\n\n

$5 of each sale goes to support ongoing operation at HeroPress, so we appreciate your support!

\n\n\n\n

Here’s what’s available:

\n\n\n
\n\n
\n\"White\n\n\n\n

White Mug

\n
\n\n\n\n
\n\"Black\n\n\n\n

Black T-Shirt

\n
\n\n\n\n
\n\"Blanket\n\n\n\n

Throw Blanket

\n
\n\n
\n\n
\n\n\n\n\n\n
\n\"Embroidered\n\n\n\n

Embroidered Patch

\n
\n\n\n\n
\n\"Black\n\n\n\n

Black Mug

\n
\n\n
\n\n\n

\n\n\n\n

So be sure to stop by the HeroPress swag store!

\n

The post HeroPress Swag! appeared first on HeroPress.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 04 Apr 2025 14:00:15 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:15;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:65:\"Do The Woo Community: Do the Woo Friday Shares, April 4, 2025 v13\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93923\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"https://dothewoo.io/blog/do-the-woo-friday-shares-april-4-2025-v13/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:62:\"Shares from the WooCommerce, WordPress and Open Web Community.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 04 Apr 2025 13:44:29 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:16;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:115:\"Do The Woo Community: The Power of Photography, Translation and Contributing with V Gautham Navada and Bigul Malayi\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93848\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:113:\"https://dothewoo.io/the-power-of-photography-translation-and-contributing-with-v-gautham-nevada-and-bigul-malayi/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:210:\"In this episode, guests V Gautham Navada, and Bigul Malayi discuss contributions to WordPress, highlighting the significance of photography and translation in enhancing community engagement and business growth.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 03 Apr 2025 14:17:47 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:17;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"Do The Woo Community: Why User Feedback and Internal Testing Drive Smarter Feature Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93508\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:98:\"https://dothewoo.io/blog/why-user-feedback-and-internal-testing-drive-smarter-feature-development/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:206:\"User-centric development by involving support teams in feature planning and conducting beta tests. The approach leverages internal tools and data-driven insights to enhance product functionality and design.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 03 Apr 2025 10:07:52 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:18;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"WPTavern: #163 – Birgit Pauli-Haack on the Magic of the WordPress Playground\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=193436\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:92:\"https://wptavern.com/podcast/163-birgit-pauli-haack-on-the-magic-of-the-wordpress-playground\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:52923:\"Transcript
\n

[00:00:00] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress. The people, the events, the plugins, the blocks, the themes, and in this case what the WordPress Playground is, and how it’s transforming the scope of WordPress.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you or your idea featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.

\n\n\n\n

So on the podcast today, we have Birgit Pauli-Haack. Birgit is a longtime WordPress user, an influential voice in the WordPress community. She’s known for her role as the curator at the Gutenberg Times, and host of the Gutenberg Changelog podcast, and she brings her wealth of experience as a Core contributor to WordPress as well.

\n\n\n\n

She joins me today for an in-person conversation recorded at WordCamp Asia in the Philippines, and we are discussing Playground, a remarkable development that’s set to redefine the WordPress development landscape.

\n\n\n\n

Playground allows users to launch a fully functional WordPress instance directly in their browser, without the necessity of a server, database, or PHP, playground breaks down barriers, offering developers, product owners, educators, and everyone in between a new way to interact with WordPress.

\n\n\n\n

We explore how this technology not only simplifies the testing and development process, but also sets the stage for more interactive and immediate web experiences.

\n\n\n\n

We explore the concept of Blueprints within Playground, tailored configurations that enables a bespoke user experience by preloading plugins, themes, and content. This feature helps developers to present their work in a controlled environment, offering users an insightful hands-on approach that can significantly enhance understanding and engagement, and it’s all available with just one click. It really does eliminate the traditional hurdles associated with installing WordPress.

\n\n\n\n

If you’re curious about how the WordPress Playground is set to usher in a new era of friction free web development, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

\n\n\n\n

And so without further delay, I bring you Birgit Pauli-Haack.

\n\n\n\n

I am joined on the podcast by Birgit Pauli-Haack. Hello Birgit.

\n\n\n\n

[00:03:28] Birgit Pauli-Haack: Oh, hey Nathan.

\n\n\n\n

[00:03:29] Nathan Wrigley: We’re actually looking at each other, not through a screen.

\n\n\n\n

[00:03:32] Birgit Pauli-Haack: Yes. It’s a total different feeling.

\n\n\n\n

[00:03:34] Nathan Wrigley: Yeah. Birgit And I chat a lot on various other channels, and it’s a pleasure having you right in front of me. That’s lovely.

\n\n\n\n

[00:03:39] Birgit Pauli-Haack: Yeah, same here. I’m always glad we meet at a WordCamp.

\n\n\n\n

[00:03:42] Nathan Wrigley: Yeah, thank you. So that’s the introduction then because here we are, we’re at WordCamp Asia, in the Philippines. It’s the first day of the conference in general. We had the Contributor Day yesterday, and we’ve got another day tomorrow.

\n\n\n\n

And we’re going to have a chat with Birgit who is going to be talking to us today about Playground, because you’ve got a slot at the event all about creating a demo in Playground. And we’ll get onto that in a minute. But first of all, for those people who don’t know who you are, just a few moments for your potted bio. Tell us about yourself.

\n\n\n\n

[00:04:09] Birgit Pauli-Haack: So I’m the curator at the Gutenberg Times and I’m the host on the Gutenberg Changelog podcast. And I also am a Core contributor to WordPress, and I work for Automattic. I live in Munich and I’m married, 37 years.

\n\n\n\n

[00:04:22] Nathan Wrigley: There we go. That is a very potted bio. Thank you, I appreciate that.

\n\n\n\n

So here we are, we’re going to talk about Playground. And I figured the best place to start is answering the question, what is Playground? And just before we hit record, it was pretty obvious that both you and I are very excited about this. And so I want to encourage people to really pay attention because this genuinely, for me is one of the most exciting developments, not just now, but ever, in WordPress. It truly is a transformational technology. But for those who don’t know what it is, just tell us what Playground is.

\n\n\n\n

[00:04:54] Birgit Pauli-Haack: I’m totally with you there on the magic, yeah. And it’s not just for WordPress, it’s for web development. So WordPress Playground is a WordPress instance in your browser. Yeah, you go there, put in playground.wordpress.net. You get a full WordPress instance in your browser, and you can add plugins, you can themes, you can content. Test it out. Whatever you do with that and want to learn with Playgrounds, you don’t need a server, you don’t need a database, you don’t need PHP installed or something like that. So it’s just there.

\n\n\n\n

And for someone who has been in the web development for many, many years, it’s like magic. Because before you’re always kind of, oh, where do I host things? What’s with the database? What’s with the server? And it’s all gone. Yeah, so it’s really cool.

\n\n\n\n

[00:05:43] Nathan Wrigley: I think probably it’s best on this particular podcast to avoid the technicalities, but I would point the listener to a podcast that I did on the WP Tavern with Adam Zielinski several months ago now, where Adam came on and tried, in an audio form, it’s very hard to do, but explained in an audio form exactly what the underpinnings are.

\n\n\n\n

And the only words I can use to describe it are, it’s voodoo. It is literal magic. Just two or three years ago, if you’d have said that Playground was possible, I honestly would’ve thought that you were talking nonsense. It could not happen. That will never happen.

\n\n\n\n

[00:06:18] Birgit Pauli-Haack: Snake oil.

\n\n\n\n

[00:06:18] Nathan Wrigley: Yeah, exactly. And yet Adam managed to pull it off. And so just to re-explain what Birgit just said, it’s all in the browser. When you go to playground.wordpress.net, there is no server. Just say it again, there’s no server. There’s no PHP that you need to install on your local machine. It all happens inside the browser. Close the browser down, it goes away. We’ll come to that. Maybe that’s changed.

\n\n\n\n

But the idea is it’s happening in the browser, and so you can have any combination of website that you like immediately inside of Playground, and it really is remarkable.

\n\n\n\n

I liken to the moment that the iPhone got the App Store. The iPhone was a very useful thing to have. You know, it did phone calls and it looked beautiful, and you could upload music to the phone with a cable. And then along came the App Store, and suddenly a thousand, a million, different developers could get their hands on it and tell you, here’s a different way you can use the iPhone. And here’s another way, and here’s another thing that you can do. And it feels a bit like Playground is WordPress’ moment like that. You know, it just suddenly prizes the lid open, and makes developers able to show you what they’ve got in a heartbeat.

\n\n\n\n

[00:07:25] Birgit Pauli-Haack: Yeah. And that’s pretty much, that’s a very good analogy because we also have a Blueprints gallery that could be something like an app store where you can learn how you can assemble it. So the core technologies is not not, I don’t know any of the technology that’s underlying. It’s based on Web Assembly. And that has been around for about 10 years, trying to get a lot of different programming languages talk to each other in the browser.

\n\n\n\n

And then it’s based, not on MySQL, but on SQLite database. And then Service Workers and worker Threads API, that are browser APIs. For storage, for instance, yeah, or for sending commands to other different applications. But that’s all I know, yeah. I have never worked with Web Assembly, yeah. And MySQL, I know that, just really amazing.

\n\n\n\n

So you can use that. Many people use it to spin up a fully functional WordPress and demo that. So you can use it in educational settings. You don’t have to download a whole lot of stuff. You don’t have to, as a teacher, you don’t have to set up, talk to your IT department to set up a server for all the students. You can just point them to the Playground and then give them instructions on how to work with that.

\n\n\n\n

It’s a sandbox environment. It could be, yeah, if you want to. You can upload your content and then see what else can you change with it without messing with your live site. You can integrate it with your development. There is a WP now, VS Code extension where you can, so when you’re working on your plugin and you click on the button, it loads up a local Playground for you with the plugin that you’re working on already installed, and that’s really cool.

\n\n\n\n

Same with the theme. The training team has been working on interactive demos in terms of having code examples on one side, and then you make changes to the code and you see it in the right hand side. How it changes the website. So that’s really cool.

\n\n\n\n

[00:09:20] Nathan Wrigley: I think one of the things that you said there, you’ve got an understanding of some of the underlying technologies, but you were stressing that, basically you don’t need to understand them. Having a knowledge of them is fun, you know, it’s interesting. But a bit like I don’t have the faintest idea how to build an iPhone app, but I can still use an iPhone. And I can still benefit from this application, the maps, navigation app. I don’t need to understand how that’s built, but I can use it, it works.

\n\n\n\n

And really that’s, I think the purpose. The developers over there, thank you so much, but most people are never probably going to want to get into the weeds of that. They just want to click the button and see what happens.

\n\n\n\n

And just to be clear on this, if you’ve never done that, I, at my home, have a fairly good internet connection, so I don’t know if I’m in a sort of slightly privileged position, but when I click the button at playground.wordpress.net, I’m imagining it’s somewhere in the order of three to four seconds before that website is ready to go. Basically it’s the length of time it takes me to blink and grab the mouse again. It’s in a heartbeat. So there’s literally no friction.

\n\n\n\n

But if you go to playground.wordpress.net and click the button, what you’re going to get there is a vanilla version of WordPress, which is fine. Then you can do whatever you like with that, put plugins in, what have you. But wouldn’t it be interesting, wouldn’t it be great if somebody came up with, oh, I don’t know, let’s call them Blueprints or something like that, where you could pre-build something that then somebody else could use.

\n\n\n\n

So this is the App Store, isn’t it? You know, somebody’s built the maps navigation app. Somebody’s built the note taking app. Somebody’s built the whatever. This feels like what the Blueprints are. But I want to make sure that you are describing it and not me because I am not sure that I’ve encapsulated it perfectly.

\n\n\n\n

[00:11:00] Birgit Pauli-Haack: No, you did. But in opposite to the App Store, you actually can look at other people’s Blueprints and steal them. Blueprints are written in JSON has nothing to do with Jason. It’s JSON. It’s a data format for JavaScript. And there is a schema for it, so when you put it into your code editor, it gives you signals, yeah, that you formatted right.

\n\n\n\n

And then you have two different ways of configuring your Playground instance. One is to do settings. So you could do which PHP you want to use? Which WordPress version do you want to use? Also, do you want to have network enabled? And most of the time you want it enabled because you want to import and install themes or something like that. Those are the settings.

\n\n\n\n

And then you have steps. And those steps are also just formulated in JSON format. For instance, you can log in. Automatically log in the person in the Playground. Or you can say, I have a landing page that should land, so when somebody uses that blueprint, when Playground is ready to completely load it, you should land in the block editor, for instance. And you should have that particular block plugin already active on that post, so you can really play with blocks. Nick Diego with his plugin Block Visibility has done a great way for a live preview of his block from the repository.

\n\n\n\n

Another way is to, so install a plugin, add content to it. Use WP-CLI to instantly load up new versions, add new pictures, or use an export from another website, an XML file from another website and load it into the Playground instance.

\n\n\n\n

But sometimes you have, you said you get the vanilla if you just do that, if you just do playground.wordpress.net, you get the vanilla WordPress. But it’s one post, Hello World, and it’s one sample page. But you don’t see how content kind of interacts with whatever feature you want to demo. So you need some content there, yeah. And the Blueprints Gallery has actually some nice examples on how to configure that.

\n\n\n\n

[00:13:08] Nathan Wrigley: Let’s come back to the gallery in a minute. Just to recap what you just said. So there’s a bunch of settings, probably more for developers. You know, you might want to test something in a particular PHP environment or what have you, so you can select those. And then you can do these steps where you can essentially design, if somebody was to use that Playground and somebody was to click on your link, they would wait the 2, 3, 4 seconds, whatever, and then, depending on the steps that you’d set up, they would arrive where you chose them to be.

\n\n\n\n

So for example, you might pre-install the latest, greatest plugin that you want to share with the world. And you want people in a post for that. And you want them inside the block editor. And you can make it so that upon clicking the button, the first thing they get is, we’re inside your plugin, we’re about to use it. So the profundity of that is pretty amazing. You can really tailor the experience.

\n\n\n\n

So rather than going from being like Playground, which sounds like children, you’re messing about, larking about a little bit. It also becomes like serious ground a little bit, you know? Serious developers can use this to circumvent, I don’t know, support tickets, the capacity to demonstrate to users who’ve never seen your product before, your plugin, your theme, or whatever it may be.

\n\n\n\n

You can point them to a link. They can click the link. You as the developer configure everything within an inch of its life, so they get exactly where you want them to be. And in that way you can use it as a sales mechanism, as a support mechanism.

\n\n\n\n

[00:14:29] Birgit Pauli-Haack: And sometimes it’s really hard to tell people what your plugin does unless you show it them in the video. But then they still don’t get their hands on it. And with that feature, with the Playground combined with the Blueprints, you can actually make them feel the thing. How it works with them, and what ideas they get when they play around with it, and have better questions, educated questions for you, for the product, yeah.

\n\n\n\n

[00:14:51] Nathan Wrigley: So a Blueprint then is a version of Playground in which somebody has pre-configured things. Is that basically what it is? You know, let’s say that I have got this fabulous new plugin and I want you to experience it. I don’t necessarily want you to land on a particular page, but I just want the plugin to be available to you and you can do things.

\n\n\n\n

If I install my plugin, use Playground to do that, I can then share a link. And because I’ve tinkered with it, it becomes a Blueprint because it’s not the playground.wordpress.net version, it’s my doctored version, adapted version.

\n\n\n\n

[00:15:26] Birgit Pauli-Haack: Well, it also goes to playground.wordpress.net, but it has a query parameter, to be a little technical term, that says, use the blueprint at this URL. So a plugin developer for the repository, at the repository there are live preview buttons now. And the plugin developer can put in a separate directory Blueprints on the WordPress site, put all the assets, all the image that they want to load, and the configuration file, which is written in this JSON file, and put it there, and then make that live. And every time someone clicks on the preview button, they go to playground.wordpress.net with the Blueprint kind of loaded, the configuration files.

\n\n\n\n

[00:16:09] Nathan Wrigley: So it’s all happening through playground.wordpress.net. But then there’s JSON configuration file, which gets sort of sideloaded, if you like, through the URL. That tells it, okay, add this and then end up here and what have you. The important part is that JSON, that’s what makes it the Blueprint. It’s going to playground.wordpress.net, but the JSON file means that it does something else.

\n\n\n\n

And you said the word gallery, which tells me that there’s a whole host of these things. Pre-configured, pre-built, put into a box if you like. And we can go to that gallery and explore. What kind of stuff is in there?

\n\n\n\n

[00:16:38] Birgit Pauli-Haack: So, what kind of stuff is there? So there’s one, how do I put an admin notice on top of the dashboard? How do I add a dashboard widget and load it up with my Playground? So most of the time, when you want to log into a WordPress site, you get the dashboard. And if there’s a widget, you can actually guide people to go some other places. You can say, okay, I have a plugin that needs 50 posts, for whatever reason. So there is a Blueprint there and how to use WP-CLI to create 12 or 50 posts automatically, that are then loaded into the post content.

\n\n\n\n

So there’s also a Blueprint for a specific WooCommerce extension. So it loads WooCommerce, it loads the extension, it loads some products, and then you land for a shipping page where you can say, okay, this shipping plugin, what does it do for me? And you see it working with products on a Playground site. So that is really remarkable. It takes a little longer when you have content to load.

\n\n\n\n

[00:17:38] Nathan Wrigley: Goes up to like 10 seconds.

\n\n\n\n

[00:17:40] Birgit Pauli-Haack: So you go and get your coffee and come back.

\n\n\n\n

[00:17:42] Nathan Wrigley: But it’s still profound.

\n\n\n\n

[00:17:43] Birgit Pauli-Haack: Yeah, remarkable. Yeah, you don’t have to do anything, kind of just wait a bit.

\n\n\n\n

What else is in there? Oh, there is a demo of 2025. So when you load 2025 theme automatically and go to your website and see it, you get the post, the blog site, where all the posts are in one one big site with the full content. And not a whole lot of people have that kind of blog. And in the demo, you actually go to the magazine front page, and then see all the patterns that are in there. You can see all the templates in that Playground demo.

\n\n\n\n

That’s interesting for plugin developers that have experimental themes or experimental settings on the settings page that you can actually preload them as well. There’s an example in there for the Gutenberg experiments. They’re on the check marks on a setting site. And you can take that and replicate that for your own plugins site, how to do that, with the areas.

\n\n\n\n

Because you can do site options. So the site options is not only site title and tag descriptions, also, oh, make my block editor have the top toolbar instead of all the other things or the distraction free model, yeah. So these kind of features, you can also preload there and have examples from the Blueprints Gallery.

\n\n\n\n

[00:18:57] Nathan Wrigley: I think we’re just at the beginning really, aren’t we? Of of this journey. And basically, the underlying technology is now provisioned. It’s there. And we’re at point where, okay, people, developers, explore. And we’re really just at the beginning of that. And the gallery is probably a good place to go.

\n\n\n\n

But if you wanted to put one of these JSON files together, do you know, is there some credible documentation out there that would help people to get started, learn the ropes?

\n\n\n\n

[00:19:25] Birgit Pauli-Haack: Yeah, there’s definitely, there’s documentation of all the steps that are there, yeah, like how to run PHP, how to have additional PHP extensions installed and all that. So when you open the Playground, there are three, and you’re not going to the full page, so you have three panes. On the left hand side you have some menus, and one of them is the documentation link. So that’s good.

\n\n\n\n

And another link is there, it’s the Blueprint Gallery. So in the middle of the section of your Playground, you see all the list of all the gallery content. And then when you click on the preview or the view site, the Playground loads that for you, and then there’s another menu item where is says, view Blueprint. And that gives you a Blueprint editor.

\n\n\n\n

So you see the Blueprint loaded in, but then when you want to edit from the documentation, okay, what happens when I put that in? And you click the run button, and it reloads that Playground with your changes. So it’s really, very hands on, and you still don’t have to create a server or a local environment or something like that.

\n\n\n\n

[00:20:31] Nathan Wrigley: Yeah, there’s this really virtuous cycle of, okay, so you’ve used something from the gallery, but you’re curious about how it works. Look, here’s how it works. Here’s the buttons to click to go and explore. Oh, and whilst you’re at it, if you want to edit anything, here’s the option to edit it. And when you click save, it’ll restart that whole thing and you’ll get the new version.

\n\n\n\n

So all of the sort of helpful tooling is now built into it. Because when I talked to Adam, none of that existed. I mean, the version selection for PHP didn’t exist. The ability to land people on particular destinations when they first load up the playground, none of that existed. It was literally the technology of getting it working.

\n\n\n\n

So now built into it is this knowledge base, if you like. Not really a knowledge base, but more, you want to know how this one works? We’ll show you. And it’s that beautiful, well, the purpose of WordPress, democratising publishing. In this case, it’s democratising the nuts and the bolts, and the bits and pieces of publishing.

\n\n\n\n

Yeah, so that’s really nice. And that’s all built inside. So just follow the prompts in the UI, and you can adapt what you want, and what have you. But also there are some 101 articles out there, perhaps on Learn or something like that where can see in text format how do all.

\n\n\n\n

[00:21:40] Birgit Pauli-Haack: Yeah, the developer blog has, on developer.wordpress.org/news has three articles about Playground. One is about the underlying technology from the Web Assembly people. That was really good for those who want to explore that even further.

\n\n\n\n

And then there is one on what use cases you can do with a little bit of an example. And then also, so we are right now always talking about playground.wordpress.net. But you mentioned something that someone could put this on their website, and you can.

\n\n\n\n

Playground can be self-hosted. It does not have to go through the wordpress.net site. But how to do this is in the documentation. It has a seperate section there. So if you say, okay, I don’t have my plugin in the repo, but I want to use it through my own website, then you can actually put it there, and it’ll have your own branding around it. So it’s even get further than just the WordPress part.

\n\n\n\n

[00:22:35] Nathan Wrigley: So that’s a really important distinction to make. So in the cases that we’ve been talking about so far, if you want to go to playground.wordpress.net and you use your own JSON file, it will be able to suck in anything from the WordPress repo. And that’s the sort of, the WordPress way, if you like. I’m doing air quotes.

\n\n\n\n

[00:22:51] Birgit Pauli-Haack: Also from GitHub.

\n\n\n\n

[00:22:52] Nathan Wrigley: Oh, thank you. Yeah, that’s an important distinction. I’d forgotten that. Also from GitHub, but you know, it’s everything that’s open source out there, free to download already.

\n\n\n\n

But a big part of the WordPress community, one of the things that makes it popular, is the ability to sell commercial plugins. And so that was another question that I had. Is possible to do it?

\n\n\n\n

And so, yes, but you need to take the technology that builds WordPress at playground.wordpress.net, you put that onto your own server, and you can do whatever you like with that. So you can put your premium products in there on a, I don’t know, two day free trial sort of basis, and show people how that all works.

\n\n\n\n

So Playground suddenly becomes more interesting outside of the free to play area as well. And you can imagine that being a really, really useful tool. Because we’ve always been able to play fairly straightforwardly with free things on the repo, but suddenly the moment where you’ve got to pay $100 for a thing, the capacity to see that really is the bit which opens the wallet.

\n\n\n\n

Okay, it’s $100, maybe I’ll buy it, maybe I won’t. It’d be nice to see it. Okay, they’ve got a 14 day trial, but I’ve still got to pay for it. This opens up the capacity to, look, there it really is. Play with it for two days or whatever it may be. That’s fascinating.

\n\n\n\n

[00:24:05] Birgit Pauli-Haack: Absolutely, yeah. And if you want to test that plugin, yeah, you still would need a local server or a hosting server to load it on. And you have that 14 day trial. And now you can really test it right now.

\n\n\n\n

[00:24:16] Nathan Wrigley: Right. And that’s the other big thing. Because if you buy a commercial plugin, you then have to spin up a site somehow. You have to download the plugin, upload the plugin, get the plugin configured. This gets rid of all of that, because you don’t need to download and upload anything, and it can be pre-configured.

\n\n\n\n

So the author of the plugin can say, okay, if you want to use my LMS plugin for this kind of thing, here’s playground version with everything just right. And if you want to do it for this kind of thing, I don’t know, you’re an elementary school teacher who might use my LMS plugin in this way, or you’re a university lecturer, who might use it in this way. Let’s build it a perfect version for you.

\n\n\n\n

And you can imagine that a million times over for all the commercial plugins out there. You know, form plugins. Okay, this is the contact form that we’ve pre-built. This is the, I don’t know, the form which integrates with WooCommerce or whatever. So the developers can do all of this. And that really makes it super useful to them.

\n\n\n\n

[00:25:11] Birgit Pauli-Haack: Yes, absolutely, yeah. What’s coming down the pipeline for Playground. One is that you can also use it with private GitHub repos. Which right now is not possible, but it’s in the works. And there was a problem with the proxy, that you get some cross site downloading errors because some servers are not set up to have images downloaded from a machine. They have created a proxy server now, where that is kind of circumvented that you can also from non WordPress sites download stuff, like images and content, or PHP plugins.

\n\n\n\n

What also comes is, so SQL, MySQL, for some plugins Playground does not work yet, because they use very specific MySQL query, the union query, for instance. Select union and other commands like that. The SQLite doesn’t have those yet. And they are however working on it to replicate these kind of behavior of a database also with Playground. So to make it even more compatible with all the plugins that are out there.

\n\n\n\n

I think they did a test of 10,000 plugins that are in the repo, and test every month kind of how many plugins don’t work with it yet. And they got it down from, I think 7% to 5%. So it’s always kind of progressing very well towards zero.

\n\n\n\n

[00:26:33] Nathan Wrigley: Yeah, there’s a lot of things going on in the background that the likes of you and I probably, you know, because we’re curious about it, we’ll probably know about, but maybe the average listener who’s not wedded to this subject maybe doesn’t. But that’s really interesting.

\n\n\n\n

So the intention is to get it so that more or less anything works in more or less any scenario. And really nicely putting it out there so that you can do things which aren’t bound to GPL, WordPressy kind of things, if you know what I mean. So, you know, you can use your commercial product over here, and you can use your GitHub repo over here. That’s really nice.

\n\n\n\n

My understanding is that when Adam began it, he was immediately repurposed. So Adam Zielinski, he was an, was, still is, I think, an Automattician. And I think that it was immediately understood, this is profound. Let’s get Adam on this full time. You know, it’s no longer a hobby project. But I also think that he’s got other people from Automattic involved. There’s like a little team around it now, pushing the development of that. Is that still the case? Is this a team which is growing, or stagnating at, well not stagnating, maintaining at a certain number?

\n\n\n\n

[00:27:33] Birgit Pauli-Haack: Well, it’s growing in scope. So they’re also working, and that was a focus starting in last fall, that they’re working on using Playground for the Data Liberation Project. And that’s what Adam was doing also full-time now in the last few months. That he looks, okay, what kind of parser do we need to do really good data liberation from other systems, or from WordPress?

\n\n\n\n

Yeah, because the import and export in WordPress only gets you so far, yeah. And there are some quirks in there, and they want to really have a perfect data liberation through Playground. They have a browser extension. It’s all beta right now. It’s not functioning yet. But it’s really coming along quite nicely.

\n\n\n\n

[00:28:20] Nathan Wrigley: So Data Liberation then is this very laudable project of being able to bring into WordPress, I guess data liberation on some levels is the whole point of open source really, isn’t it? Is that you can grab your data and just pick it up and take it somewhere else.

\n\n\n\n

[00:28:34] Birgit Pauli-Haack: Open content.

\n\n\n\n

[00:28:35] Nathan Wrigley: Right, yeah. It’s your content. This platform is no longer being used, or you’ve fallen out with it. You know, you no longer love it in the way that you did. You want to now move it here. And you’ll be able to, let’s say, go Joomla into WordPress, Drupal into WordPress, or as you said, WordPress into WordPress.

\n\n\n\n

Which suddenly kind of opens up the whole idea of migrating websites, which a real mess frankly. It’s a really difficult thing to do. And I often think that people are bound to products and services that they’re purchasing on a monthly basis because the migration process is so difficult. And they don’t want to be caught up in all of that because things can go wrong. You know, it might not work perfectly and there’s all the just carrying it out.

\n\n\n\n

But if you can essentially do migrations, and Playground is the sort of go between. It’s the bit which talks from, I don’t know, one hosting company to another. So it goes from hosting company A to Playground. Playground then serves it up to hosting company B, which is where you want to end up. And all of that happens through Playground. That’s remarkable. And you can do the inspecting in the middle bit, the middleware, Playground if you like. Check it’s all working before you deploy it. That’s amazingly powerful.

\n\n\n\n

[00:29:41] Birgit Pauli-Haack: Yeah. And that’s actually the vision of Playground’s part of Data Liberation. They also have a browser extension to kind of identify a non WordPress site, the various pieces like the pages, the posts, the news, the events, kind of the custom post types. And then kind of teach Playground what it all is. But that’s kind of, it’s very technical on one side, but it’s also, you need to have a total different concept about content management systems to actually make that. So that’s not really for a normal consumer.

\n\n\n\n

[00:30:13] Nathan Wrigley: Yeah, because if you’re coming from Drupal and you’ve got like 1,000 different modules in there, you know, think plugins in the WordPress space. Then it’s going to be difficult to one-to-one map that over to WordPress. But the endeavor is to do a half decent job and in the middle you can step in and say, okay, this might need modifying, that might need modifying. And then you can go back to your Drupal install, change things a little bit, try again because it takes no time to do it. That is really a key, interesting part. You do kind of wonder actually if hosting companies in the future will just offer Playground in as part of their bundle, you know, their onboarding migrating bundle.

\n\n\n\n

[00:30:47] Birgit Pauli-Haack: Yeah. A lot of hosting companies have their own plugins for that. So I know that Pressable and SpinupWP, they all have their, or wordpress.com has their own plugin that they then connect with. I think it’s BlogVault most of the time. Pantheon, same, yeah. Where you can migrate in. But that part in the middle, that kind of always takes a long time.

\n\n\n\n

And you are bound to the hosting company to actually offer that, yeah. And that’s not a cheap plugin. But if you go from one small hosting to one, another small hosting, you don’t have that luxury.

\n\n\n\n

[00:31:20] Nathan Wrigley: Yeah, and if you’re crossing platforms as well, say Joomla into WordPress and what have you. That’s also really different.

\n\n\n\n

[00:31:25] Birgit Pauli-Haack: Yeah. There are a few agencies who have built for their customer things, but it’s not open source and it’s, well, it’s open source, but it’s not meant for a huge amount of public to kind of use it.

\n\n\n\n

[00:31:36] Nathan Wrigley: Yeah, I’d imagine that it’s fairly proprietary technology, isn’t it? It’s probably locked down because it’s the secret source of getting the Drupal installs into WordPress on their platform.

\n\n\n\n

One of the things which Adam spoke about when we talked, I don’t know where we’re at with this, but I raised the question of the destructibility of it. So essentially when I spoke to Adam, when you launched Playground, you fiddle with it, played with it, the moment you click close on the browser tab everything went away. That’s how it was designed. But he said that at some point in the near future, and maybe that moment has already been passed.

\n\n\n\n

[00:32:09] Birgit Pauli-Haack: It’s here.

\n\n\n\n

[00:32:09] Nathan Wrigley: Yeah, so now we’ve got a more permanent version. Tell us about that. Are there any constraints on that? Like, can I close the browser tab? Can I shut my computer down, for example? I mean, will it last forever? Could I even use it as a, I don’t know, as a temporary website in, let’s say I work in a school and I want an intranet for my staff or something, could for those kind of things?

\n\n\n\n

[00:32:29] Birgit Pauli-Haack: Well, it cannot be, it doesn’t have a domain or something like that. So that wouldn’t work. But yes, you can save. You have two options to save the site that you’re working on, so you can come back tomorrow. One is in the browser. So it uses the local storage of the browser and really downloads the whole WordPress stuff there. And then you open up the browser again, you get the site again. You cannot load it from another computer because it’s a different browser.

\n\n\n\n

And the second option is to load it in your local file system. So you can, it downloads the whole thing, gives you a directory and that’s your website, and you can load it then back into Playground a day later, or a week later, or two months later, because it’s still on your computer.

\n\n\n\n

You can also have multiple sites now in one Playground instance. So you can say, okay, save this site, and then now I use another blueprint, load it again and it’s another temporary site. And you load it, you save it again, then you have a second website there.

\n\n\n\n

[00:33:29] Nathan Wrigley: A curious version of version control or something like that. You’ve added this plugin in, I’m going to save a new version marking that this plugin got added. Let’s see how that works. And then if it doesn’t work, we can roll back to the, just delete that one and go back to the previous one. Oh gosh. So essentially permanent. Locally permanent maybe is the better way to describe it.

\n\n\n\n

[00:33:50] Birgit Pauli-Haack: And you need to think about the saving part. If you do a second site and you close it, a browser without the saving part, it’s going to go away. Yeah, it’s still ephemeral there. Which is also a good thing sometimes.

\n\n\n\n

[00:34:02] Nathan Wrigley: But obviously as you said, you know, the point of hosting in the end is that, you know, it connects to a domain name, it goes through the DNS process and you you can see it online. No.

\n\n\n\n

[00:34:10] Birgit Pauli-Haack: No, not yet.

\n\n\n\n

[00:34:11] Nathan Wrigley: This is not. Oh, not yet. I wonder.

\n\n\n\n

[00:34:12] Birgit Pauli-Haack: No, no, I don’t think that’s ever going to be. But what can be, soon hopefully is kind of pushing it to a hosting company. And that, I think it needs to be just finalised which hosting is going to be there. And the Playground team learns a lot from wordpress.com, because the new development, local development system that wordpress.com has, Studio, is based on Playground. They develop some of the features also for, that wordpress.com can use them in their Studio. And what was the bug fixes? Come to Playground.

\n\n\n\n

[00:34:46] Nathan Wrigley: That makes real sense though, for hosting companies to be clamoring all over this, to build a Playground import functionality. Because then developers all over the world, you know, maybe if in teams it might be a little bit more difficult, but you know, a solo developer, certainly at the moment, you’ve been working on something. You’ve got this perfect version of the site, you’ve got all the plugins that you want, you’ve set it up, it’s working on my machine. Now I go over to my hosting company of choice, click the import Playground button and there it is. Why wouldn’t the hosting companies offer that frankly, it just seems too straightforward.

\n\n\n\n

[00:35:17] Birgit Pauli-Haack: Syncing up with the live site or there’s also a GitHub deployment there. It opens so many ideas, yeah. And when you ask Adam, well, if I think about this, and can you do that? He said, sure.

\n\n\n\n

[00:35:28] Nathan Wrigley: Give a few weeks. I’ll add it to list of 1,000 things that people have already suggested.

\n\n\n\n

[00:35:32] Birgit Pauli-Haack: Yeah, we need to develop that. Yeah, the ideas are there, the prototypes are there, the proof of concept is already done. Just a matter of resources now, yeah. I can for instance see one thing is, if you have a documentation and you need people to contribute to documentation, you load the documentation in Playground, you make the changes, and then you push it to GitHub as a pull request. And then somebody can review it, load it in their own Playground and approve it so the documentation could be updated.

\n\n\n\n

Something like that is already in use. That scenario, that’s in prototype. It’s not there yet, but we know that it can work, because some theme developers have that process. They’re not developers per se, that they go into the files. They load the theme into Playground, use the Create Block Theme plugin. Make the changes to the theme. Save it and create the block theme, so it’s in files. Then push it to GitHub as a pull request for this theme, and then have all the changes there. So that’s how a lot of designers work with their developers on the themes. They don’t have to touch any code, but it’s still all saved in code.

\n\n\n\n

[00:36:48] Nathan Wrigley: It’s just such an interesting beginning of everything. It does feel like we are at a moment where there’s just so many different roads that could be taken, and lots of people coming up with lots of different ideas.

\n\n\n\n

Just quickly circling back to the Studio thing that you mentioned. So Studio is a local development environment. You’re going to be downloading this as a software bundle for your Mac or your Windows machine or what have you. You’re saying that’s a wrapper for Playground, is it?

\n\n\n\n

[00:37:13] Birgit Pauli-Haack: Exactly.

\n\n\n\n

[00:37:13] Nathan Wrigley: But that’s immutably stored. That’s not dependent on.

\n\n\n\n

[00:37:17] Birgit Pauli-Haack: No, it’s on your machine, yeah.

\n\n\n\n

[00:37:19] Nathan Wrigley: Right. So it’s going for the files on the machine approach as opposed to being stored in the browser. So if you download and make use of Studio, you can close that machine down, come back to it whenever you like, it’s there until you decide to delete it.

\n\n\n\n

[00:37:32] Birgit Pauli-Haack: Like any other local environment that you can, yeah.

\n\n\n\n

[00:37:35] Nathan Wrigley: Yeah, okay. And that’s available free you to download for anybody.

\n\n\n\n

[00:37:38] Birgit Pauli-Haack: Free, open source.

\n\n\n\n

[00:37:39] Nathan Wrigley: Okay. Is there anything else you wanted to cover off, apart from the fact that we’ve both got ridiculously excited about this. Was there anything curious, interesting, quirky, novel that you’ve seen out there that we haven’t yet touched?

\n\n\n\n

[00:37:50] Birgit Pauli-Haack: No, not yet. But I’m starting now to kind of dream about it. And sooner or later I come up with something, yeah.

\n\n\n\n

What I would want and what I want to pursue is that I can have a Playground instance for writers. And I know writers who are not very keen on using the Block Editor, because it gets in the way. But the Block Editor has these settings where you can do distraction free, where you can do, put the toolbar on top, yeah, and hide it as long as I write, and just let me have when I’m not writing kind of thing, and log in and not have to go to the menu.

\n\n\n\n

Right now, if I’m a blogger, I have to log into WordPress, and then I need to look at post, new post. This would give you, start writing, and don’t have to worry about the rest of it. And then click a button and then your WordPress site is updated with it. That’s kind of what I’m working on. I don’t know if really helpful, but.

\n\n\n\n

[00:38:44] Nathan Wrigley: No, that’s really great. I mean, one of the things that I always thought was curious about it would be the idea in education, for educators literally standing in front of pupils, children who, you know, depending on what the kind of curriculum they’ve got. It might be we’re doing about poetry. We want everybody to upload and modify a poem, or comment on a poem or something like that.

\n\n\n\n

And here’s the link. You know, we’re in an environment where everybody’s, we’re in the computer lab, everybody’s got a computer. Just click on this link, scan the QR code, whatever it may be. Give us your modifications, what have you. And I know that’s a sort strange example, but it’s the fact that instantly, very, very inexperienced users are in the same exact interface as all the other experienced users. And the level of difficulty was clicking a link. You just needed to click a link.

\n\n\n\n

And the educator didn’t need a great deal of technology to set it up. The pupils needed zero technology to access it. And so it’s that one to many thing, where lots and lots of people can access the same thing in a heartbeat. And I’m imagining that the tooling to create the Playground installs, and to create the Blueprints is going to make it more and more easy in the future. So possibly not the perfect example, but I do like the example of one to many.

\n\n\n\n

[00:39:56] Birgit Pauli-Haack: Yeah. What I like about it is that it’s not about WordPress. It’s about poetry. It’s about writing. It’s about, well, even image uploading and editing, yeah. You could certainly do that. Technology gets out of the way. And for the last 25 years, that’s always been in the way, yeah, and now it’s out of the way.

\n\n\n\n

[00:40:14] Nathan Wrigley: Well, because the internet is basically a reading experience. I mean, I know we’ve got forms, but really all you’re doing is submitting a form so that somebody can read that. But you go to any website and largely websites, you know, if you’re going to some sort of SaaS app, that’s a different thing, it’s configured probably to be more interactive. But broadly speaking, you’re going to consume information.

\n\n\n\n

But in this, you click a link and you’re reading information, but then you can do things with it. Oh, I think it would be better if there was an image there in that poem. Or, I don’t know, it’s an explanation of some principle of physics or something, and a diagram would be really useful at this point, and I don’t like the way they describe that, that could go in bold. And you are interacting with the internet. And it’s totally free, and it will be easy to deploy, and it’ll take seconds to load. And all of a sudden the internet became more interactive. And it’s just the beginning. It’s very exciting.

\n\n\n\n

[00:41:05] Birgit Pauli-Haack: Yeah, it is.

\n\n\n\n

[00:41:06] Nathan Wrigley: Birgit Pauli-Haack, thank you very much for talking to me today.

\n\n\n\n

[00:41:09] Birgit Pauli-Haack: Thank you for leading me down the road of all the ideas here.

\n\n\n\n

[00:41:13] Nathan Wrigley: Thank you for explaining it.

\n
\n\n\n\n

On the podcast today we have Birgit Pauli-Haack.

\n\n\n\n

Birgit is a long time WordPress user, an influential voice in the WordPress community. She’s known for her role as the curator at the Gutenberg Times and host of the Gutenberg Changelog podcast. And brings her wealth of experience as a Core contributor to WordPress as well.

\n\n\n\n

She joins me today for an in-person conversation, recorded at WordCamp Asia in the Philippines, and we’re discussing Playground, a remarkable development that’s set to redefine the WordPress development landscape.

\n\n\n\n

Playground allows users to launch a fully functional WordPress instance directly in their browser. Without the necessity of a server, database, or PHP, Playground breaks down barriers, offering developers, product owners, educators and everyone in between a new way to interact with WordPress.

\n\n\n\n

We explore how this technology not only simplifies the testing and development process, but also sets the stage for more interactive and immediate web experiences.

\n\n\n\n

We explore the concept of Blueprints within Playground, tailored configurations that enable a bespoke user experience by preloading plugins, themes, and content. This feature helps developers to present their work in a controlled environment, offering users an insightful hands-on approach that can significantly enhance understanding and engagement, and it’s all available with just one click. It really does eliminate the traditional hurdles associated with installing WordPress.

\n\n\n\n

If you’re curious about how the WordPress Playground is set to usher in a new era of friction-free web development, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

 Gutenberg Times

\n\n\n\n

Gutenberg Changelog podcast

\n\n\n\n

Podcast with Adam Zielinski on How Playground Is Transforming WordPress Website Creation

\n\n\n\n

 WordPress Playground

\n\n\n\n

 Block Visibility plugin by Nick Diego

\n\n\n\n

Playground  Blueprints Gallery

\n\n\n\n

WordPress Developer Blog > News

\n\n\n\n

 Data Liberation Project

\n\n\n\n

 SpinupWP

\n\n\n\n

 BlogVault

\n\n\n\n

 Pantheon

\n\n\n\n

WordPress  Studio

\n\n\n\n

 Create Block Theme plugin

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 Apr 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:19;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"Do The Woo Community: The Web Agency Summit 2025 with Andrew Palmer\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93794\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"https://dothewoo.io/the-web-agency-summit-2025-with-andrew-palmer/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:195:\"The Web Agency Summit is a free event from April 7-11, 2025, focusing on web development, offering insights into AI, SEO, and networking opportunities for professionals across platforms and CMSs.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 Apr 2025 10:22:53 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:20;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"Do The Woo Community: When It’s Time to Let Go of Your Podcast\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93347\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:65:\"https://dothewoo.io/blog/when-its-time-to-let-go-of-your-podcast/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:198:\"Podcasting can be challenging, requiring time and effort. After managing eight podcasts, I learned the importance of knowing when to let go, recognizing that not all ideas sustain long-term success.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 Apr 2025 10:14:21 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:21;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"WordPress.org blog: WordPress 6.8 Release Candidate 2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18662\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/04/wordpress-6-8-release-candidate-2/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:8637:\"

The second Release Candidate (“RC2”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it’s recommended that you evaluate RC2 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone. While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC2 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC2 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update –version=6.8-RC2
WordPress PlaygroundUse the 6.8 RC2 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025.  Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for further details.

\n\n\n\n

What’s in WordPress 6.8 RC2?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement. For more technical information related to issues addressed since RC1, you can browse the following links:

\n\n\n\n\n\n\n\n

Want to look deeper into the details and technical notes for this release? These recent posts cover some of the latest updates:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community of people collaborating on and contributing to its development. The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable.  It’s also a meaningful way for anyone to contribute.  This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report.  You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled. Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases. With RC2, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English? ¿Español? Français? Русский? 日本語? हिन्दी? বাংলা? मराठी? ಕನ್ನಡ?  You can help translate WordPress into more than 100 languages. This release milestone (RC2) also marks the hard string freeze point of the 6.8 release cycle.

\n\n\n\n

An RC2 haiku

\n\n\n\n

Testing, 1, 2, 3
It’s almost April fifteenth
Squashing all the bugs

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @michelleames, @tacoverdo, @jopdop30, @vgnavada, @jeffpaul.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 01 Apr 2025 15:53:20 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Jonathan Desrosiers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:22;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"Do The Woo Community: Host Adam Weeks Covers CloudFest 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93611\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:63:\"https://dothewoo.io/blog/host-adam-weeks-covers-cloudfest-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:321:\"Our host Adam Weeks was busy during CloudFest and the Hackathon. And on top of that he was making sure we had content to share while he enjoyed the event. So kudos to Adam and here are recaps of his episodes. Episode 621: Inspiring Innovation through Hackathons A peek into the CloudFest Hackathon with insights […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 01 Apr 2025 10:30:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:23;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:70:\"Do The Woo Community: Engaging Young People in the WordPress Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=88452\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"https://dothewoo.io/blog/engaging-young-people-in-the-wordpress-community/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:248:\"The WordPress community must engage younger generations by simplifying onboarding, providing education, promoting career opportunities, and fostering connections, ensuring sustainable contributions to the platform’s future development and growth.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 31 Mar 2025 09:10:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:24;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:123:\"Gutenberg Times: Field Guide, No-Code Theme, Pattern Library, why you might not need a Custom Block — Weekend Edition 323\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://gutenbergtimes.com/?p=38176\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:127:\"https://gutenbergtimes.com/field-guide-no-code-theme-pattern-library-why-you-might-not-need-a-custom-block-weekend-edition-323/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:18889:\"

Hi,

\n\n\n\n

Spring is here. On the weekend I saw Forsythia bushes in full bloom all over the city. Yesterday, I passed the National Museum and saw their Magnolia trees blooming as well. The temperatures are still too low for my taste, but not for long. 🌤️

\n\n\n\n\"\"\n\n\n\n

“Isn’t this a WordPress newsletter”, you might think. I know, I know. Let’s get on with it, then. Carpe diem! 🤗

\n\n\n\n

Have a fabulous weekend!

\n\n\n\n

Yours, 💕
Birgit

\n\n\n\n

PS: The links for mentioned people are now going to their Blue Sky profile, and if I couldn’t find them, it’s till their X (formerly known as Twitter) profile.

\n\n\n\n

Follow us on Bluesky @bph.social and @gutenbergtimes.com

\n\n\n\n\n\n\n\n
\n\n\n\n

The Page Builder summit 2025 is on the calendar now: Anchen le Roux and Nathan Wrigley announced the eighth edition of the virtual conference will take place from 12th to 16th of May 2025. Save the date, and add your name to the Waitlist, to receive info, when registration opens. “The summit is a 5-day event that will help WordPress developers, designers, freelancers, and agencies to build better websites faster and more efficient. As well as learn more about the page builders and the awesome things you can do with them. “, they wrote.

\n\n\n\n
\n\n\n\n

Web Agency Summit 2025 will happen April 7-11, 2025. “Learn proven strategies top agencies are using today to scale sustainably, streamline operations, attract high-value clients, and stay ahead of the curve.”

\n\n\n\n
\n\n\n\n

WordSesh returns May 13–15, 2025. It is a virtual conference for WordPress professionals. Its host, Brian Richards, is a seasoned virtual conference producer and WordPress educator. His speaker and session curation is top-notch. Sign up to receive updates on the next event.

\n\n\n\n

Developing Gutenberg and WordPress

\n\n\n\n

WordPress 6.8 Release Candidate 1 is now available for testing. Final release is scheduled for April 15, 2025

\n\n\n\n
    \n
  • You can check out the post Help Test WordPress 6.8 with detailed instructions and videos on selected features.
  • \n\n\n\n
  • The Field Guide holds relevant information for developers about the new version.
  • \n\n\n\n
  • The Source of Truth compliments with detailed information on block editor features for end users, plugin, and theme developers.
  • \n
\n\n\n\n

The latest Dev Notes for WordPress 6.8

\n\n\n\n\n\n\n\n
\n\n\n\n

Gutenberg 20.6

\n\n\n\n

George Mamadashvili released Gutenberg 20.6 RC 1 version, and it’s ready for testing. What to expect in this version?

\n\n\n\n
    \n
  • The Table of contents block received a new option to control the level of heading included. (69063)
  • \n\n\n\n
  • The Navigation block now sports a slider to control the transparency for submenu background. (69063)
  • \n\n\n\n
  • The RSS block now has an option to allow opening the links in a new tab and set the rel attribute. (69641)
  • \n
\n\n\n
\n \n
\n \n \n \n
\n\n\n
\n

🎙️ Latest episode: Gutenberg Changelog 116 – WordPress 6.8, Source of Truth, Field Guide, Gutenberg 20.5 and 20.6 with special guest JC Palmes, WebDev Studios

\n\n\n\n\"\"\n
\n\n\n\n

Plugins, Themes, and Tools for #nocode site builders and owners

\n\n\n\n

Wes Theron created a video tutorial to teach you How to Build a WordPress Theme the No-Code Way. He shows you where to update your colors, choose your fonts, modify the Single page template and then use the Create block Theme plugin to save all the settings into a new theme’s file structure.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

In this short video on X (former Twitter), Jamie Marsland shows us How to create a One-Pager website with WordPress, using the site editor, core blocks and some custom CSS.

\n\n\n\n
\n\n\n\n

MahdiAli Khanusiya, is the designer behind the PatternWP plugin that offers a big library of WordPress block patterns and full-page templates. Using it will instantly increase the range of designs and layout you can offer your customers, and streamline your production process. There is also a pro version available.

\n\n\n\n\"\"\n\n\n\n

Theme Development for Full Site Editing and Blocks

\n\n\n\n

Latest six block themes in the WordPress repository:

\n\n\n\n\n\n\n\n\"\"\n\n\n\n

 “Keeping up with Gutenberg – Index 2025” 
A chronological list of the WordPress Make Blog posts from various teams involved in Gutenberg development: Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. The previous years are also available: 2020 | 2021 | 2022 | 2023 | 2024

\n\n\n\n

Building Blocks and Tools for the Block editor.

\n\n\n\n

In his post How to extend core WordPress blocks with Blocks API, Joel Olawanle, technical editor at Kinsta, introduced you to the basic extension methods like Block Styles and Block Variations with code examples and multiple ways to accomplish the tasks.

\n\n\n\n
\n\n\n\n

Alfredo Navas, web developer at WebDev Studios, wrote a tutorial on how to use the Block Bindings API and why you might not need a Custom Block. Navas walks you through registering a Custom Source, how to create a Block Variation with custom data and making it all work in the editor and on the front end.

\n\n\n\n
\n\n\n\n

In last week’s livestream, Ryan Welcher created a new WordPress block theme for the Block Developer Cookbook and gave it a new look. You can watch him turning change his color scheme and turn his existing theme into a style variation.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

Brian Coords found a way to create Dynamic WordPress Playground Blueprints with Cloudflare Workers and shared in his video how he built a system to spin up demo WooCommerce stores. The code lives on GitHub

\n\n\n
\n
\n
\n
\n
\n\n\n

Need a plugin .zip from Gutenberg’s master branch?
Gutenberg Times provides daily build for testing and review.

\n\n\n\n

Now also available via WordPress Playground. There is no need for a test site locally or on a server. Have you been using it? Email me with your experience

\n\n\n\n

\"GitHub

\n\n\n\n

Questions? Suggestions? Ideas?
Don’t hesitate to send them via email or
send me a message on WordPress Slack or Twitter @bph.

\n\n\n\n
\n\n\n\n

For questions to be answered on the Gutenberg Changelog,
send them to changelog@gutenbergtimes.com

\n\n\n\n
\n\n\n\n

Featured Image:

\n\n\n\n
\n\n\n\n

Don’t want to miss the next Weekend Edition?

\n\n\n

We hate spam, too, and won’t give your email address to anyone
except Mailchimp to send out our Weekend Edition

Thanks for subscribing.
\n\n\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 29 Mar 2025 09:21:31 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:25;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:83:\"Do The Woo Community: Christian Taylor Joins as Co-Host of the Creative Sparks Show\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93581\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:82:\"https://dothewoo.io/christian-taylor-joins-as-co-host-of-the-creative-sparks-show/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:96:\"BobWP announces new co-hosts for the Content Sparks show, video content expert Christian Taylor.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 28 Mar 2025 11:40:15 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:26;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"Do The Woo Community: Do the Woo Friday Shares, March 28, 2025 v12\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93556\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"https://dothewoo.io/blog/do-the-woo-friday-shares-march-28-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:206:\"This content highlights our carefully selected information and resources from the Woo and WordPress community, aiming to provide valuable insights and updates for users and enthusiasts in the digital space.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 28 Mar 2025 08:42:11 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:27;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"Do The Woo Community: WordPress Flexibility and Simplicity: Building for Users with Ben Ritner\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93525\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:92:\"https://dothewoo.io/wordpress-flexibility-and-simplicity-building-for-users-with-ben-ritner/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:384:\"In today’s Woo ProductChat, co-hosts Katie Keith, founder and CEO at Barn2, and James Kemp, the core product manager at WooCommerce, sit down with Ben Ritner, the Senior Director of Product at StellarWP. They dive into the intricate balance between customizability and simplicity in WordPress products, particularly focusing on Ben’s work with the Cadence suite. […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 27 Mar 2025 16:39:33 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:28;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"Do The Woo Community: Leveling Out the Audio on a Podcast with Multiple Guests\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93358\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:82:\"https://dothewoo.io/blog/leveling-out-the-audio-on-a-podcast-with-multiple-guests/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:252:\"Podcasting requires managing sound levels effectively, especially during livestreams. Auphonic, with its Loudness Normalization feature, simplifies post-production, ensuring balanced audio quality and saving valuable time for creators, plus a lot more.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 27 Mar 2025 12:26:21 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:29;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"BuddyPress: BuddyPress 14.3.4, 12.5.3 & 11.4.4 Security Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://buddypress.org/?p=336835\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:81:\"https://buddypress.org/2025/03/buddypress-14-3-4-12-5-3-11-4-4-security-releases/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:2347:\"

BuddyPress 14.3.4, BuddyPress 12.5.3, and BuddyPress 11.4.4 are all now available. This is a security release. Please update as soon as possible.

\n\n\n\n

14.3.4, 12.5.3 & 11.4.4 fixed two bugs:

\n\n\n\n
    \n
  • Restrict bulk notification management to owner. Many thanks to Brian Mungah for responsibly reporting the problem.
  • \n\n\n\n
  • Improve security of status update messages. Many thanks to mikemyers for responsibly reporting the issue.
  • \n
\n\n\n\n

For complete details, visit the 14.3.4 changelog.

\n\n\n\n
\n\n\n\n\n\n\n\n
\n\n\n\n

You can get the latest version by clicking on the above button, downloading it from the WordPress.org plugin directory or checking it out from our Subversion repository.

\n\n\n\n

Many thanks to our 14.3.4 contributors 

\n\n\n\n

emaralivejjj, and dcavins.

\n\n\n\n

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 27 Mar 2025 02:22:26 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"David Cavins\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:30;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"WPTavern: #162 – Jo Minney on Website Usability Testing for WordPress Projects\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=193251\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"https://wptavern.com/podcast/162-jo-minney-on-website-usability-testing-for-wordpress-projects\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:54757:\"Transcript
\n

[00:00:00] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress, the people, the events, the plugins, the blocks, the themes, and in this case, the efficacy of website usability testing for WordPress projects.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice. Or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.

\n\n\n\n

Today I bring you the first in a mini series of podcasts I recorded in person at WordCamp Asia in Manila. This flagship WordPress event brought together hundreds of WordPress professionals, enthusiasts, and all manner of interested parties under one roof for a three day event. One contributor day, and two days of presentations.

\n\n\n\n

I tracked down several of the speakers and workshop organizers and recorded them speaking about the subject they were presenting upon. I hope that you enjoy what they had to say.

\n\n\n\n

So on the podcast today, we have the first of those conversations, and it’s with Jo Minney.

\n\n\n\n

Jo based in Perth, Australia, is passionate about user experience, data-driven decision making, cats, pockets, and travel. She’s a small business founder, and works with organizations creating digital platforms with WordPress. She also freelances as a UX consultant. She volunteers with Mission Digital to address social issues using technology, and is an ambassador for She Codes Australia, promoting tech accessibility for women. Recognized as a 2023 Shining Star by Women in Technology, Western Australia, Jo is an international speaker on topics like user experience, accessibility, and gender equality. She’s committed to ensuring a seamless user experience, and today shares her insights from practical, everyday usability testing.

\n\n\n\n

Joe’s presentation entitled, Budget Friendly Usability Testing for WordPress, helped attendees understand what usability testing is, and clarified why it differs from other testing methods. She shares examples from her work showing how small changes can significantly impact user experience, which is better for you, the website builder, and your client, the website owner.

\n\n\n\n

We also discuss how usability testing can transform a website’s effectiveness by improving conversions. Joe explains the importance of recruiting novice users for testing, and highlights how usability testing pushes for real, user-centered, improvements.

\n\n\n\n

Towards the end, Jo share’s practical advice on when and how to integrate usability testing into your process. Advocating for early and iterative testing to preemptively address potential issues.

\n\n\n\n

If you’re looking to gain a deeper understanding of usability testing and its benefits, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast where you’ll find all the other episodes as well.

\n\n\n\n

And so without further delay, I bring you Jo Minney.

\n\n\n\n

I am joined on the podcast by Jo Minney. Hello, Jo.

\n\n\n\n

[00:04:06] Jo Minney: Hi. It’s good to be back again Nathan.

\n\n\n\n

[00:04:08] Nathan Wrigley: Yeah, you’ve been on the podcast before. But this time it’s different because this time we’re actually facing each other. Last time we were doing it on, you know, something like Zoom or something like that, but here we are staring at each other because we’re at WordCamp Asia. We’re in the Philippines, Manila. It is the second day of the event, kind of. We had Contributor Day yesterday. Today is presentation day. It’s the first day of the presentations, and you are doing one.

\n\n\n\n

[00:04:29] Jo Minney: I’ve done one actually. I did it at 11 o’clock this morning.

\n\n\n\n

[00:04:33] Nathan Wrigley: How did it go?

\n\n\n\n

[00:04:34] Jo Minney: It went really well, I think. I had very good feedback from it. Half of the things on my slides didn’t work. I think that’s normal for a conference though, and I’m pretty experienced now at just winging it, and rolling with it anyway, so. It was really exciting because it’s a topic that I’m super passionate about and I haven’t had a chance to speak about it at a conference before. So, yeah, it was really nice to be able to share something that I do on a day-to-day basis and can stand up there and really confidently talk about.

\n\n\n\n

[00:04:58] Nathan Wrigley: I don’t think I’ve ever spoken about this subject before in any of the podcasts that I’ve done. That is quite nice, and it’s novel. I’ll just introduce the topic. The presentation that you gave was called Budget-Friendly Usability Testing for WordPress. And obviously that sort of sums it up. We’re going to talk about usability testing.

\n\n\n\n

But before we do that, Jo, just to nail your colours to the mast a bit, tell us about you. Where you’re from. What you do for a job, and anything that you think is relevant to this podcast.

\n\n\n\n

[00:05:22] Jo Minney: Okay, I really like cats and pockets.

\n\n\n\n

[00:05:25] Nathan Wrigley: I saw that in your show notes. Why pockets?

\n\n\n\n

[00:05:27] Jo Minney: Okay. So I think pockets are a great example of something that can be both a fantastic and a terrible user experience. You are like, oh yeah, maybe I know what you’re talking about. But, let me ask, do you live with a woman?

\n\n\n\n

[00:05:39] Nathan Wrigley: I do.

\n\n\n\n

[00:05:39] Jo Minney: I know that’s a very personal question, sorry Nathan. But, how many times on average a month does she complain about not having pockets in her clothing?

\n\n\n\n

[00:05:48] Nathan Wrigley: Never, she carries a bag.

\n\n\n\n

[00:05:50] Jo Minney: Yeah, but why do we have to carry a bag, right? She has to carry a bag because her clothing doesn’t have pockets. So I spoke at a conference late last year, and I asked this question. This has been a life goal of mine, was to speak about pockets at a conference. And I managed to do it. I asked all of the women in the audience, hands up if you’ve ever thrown out clothes or gotten rid of them because they didn’t have pockets in? And every single woman stood up and was like, yes, I’ve gotten rid of clothes because they didn’t have pockets in.

\n\n\n\n

Most of the people that were there were men. And I said, stand up if you don’t have pockets in your clothes right now. And 400 men stayed seated. But this is an example of something where, yes, there’s a subsection of the population that’s experiencing this problem, but it’s a big problem for us. It’s very frustrating. You’re at a conference, you don’t want to have to carry around a handbag. So, pockets. They’re a great example of user experience.

\n\n\n\n

[00:06:45] Nathan Wrigley: Okay, I get it. I understand now. Tell us a little bit about your sort of day-to-day work, though. You work with WordPress, I guess.

\n\n\n\n

[00:06:51] Jo Minney: I do. So I run a small agency. We’re what I usually call a micro agency, and we have only three of us that are working on the WordPress team. We do website development, but specifically for charities, nonprofits, cause-based organisations, so a lot of social enterprises and that sort of thing.

\n\n\n\n

On top of that, I also do consulting for user experience research. I’m not a designer. UX and UI often get lumped together. They’re very different. UI is about the interface and what people see, and UX is about user experience and how people use things. And they can’t be completely separated, but they’re also very different.

\n\n\n\n

So I am lucky because I work in the niche that I work in, that I’m able to do a lot of usability testing and it’s something that a lot of people don’t get the experience to do. And so I thought I would share what I’ve been able to learn over having this sort of unique opportunity to do so much usability testing, and share with people how they can do it more cost effectively, but also the benefit that it can have for a project.

\n\n\n\n

[00:07:54] Nathan Wrigley: Let’s dig into it and I’m going to actually crib the questions which you posed to the audience today. You put four questions surrounding your subject. And the first one is this. And I’m sure that the listeners to this podcast, if they’re anything like me, they’ll probably have some impression that usability testing is a thing that you could do. And I think the word there is could, as opposed to do, do.

\n\n\n\n

I imagine most people have an impression of what it is, but whether or not they do it is another thing altogether. But that would then lead to this. What even is it? So what is usability testing, and what are you actually testing for? So that was a question you posed to the audience and now I’m throwing it right back at you.

\n\n\n\n

[00:08:34] Jo Minney: Yeah, it’s a good question. It’s probably the sensible place to start. So usability testing is not the same as user testing, or user acceptance testing. And it’s focusing on, how do we identify what the problems are with something that we have created?

\n\n\n\n

So a lot of UX research is focused on what we call quantitative testing. So, meaning we’re looking for quantities of something. It could be the amount of time it takes someone to do an action. It could be using heat maps. So we have a thousand users, let’s see where their cursors most often are going. Let’s see how often they scroll down the page. And quantitative testing is really good at showing you comparisons of whether one thing or another thing works better, but it’s not actually good at identifying what the problem is, only that there is a problem.

\n\n\n\n

So you can do a lot of testing and still not know what the problem is. Usability testing is different because it’s what we call qualitative testing. So it means that we’re not looking for big numbers, we’re not looking for lots of data. We are looking for really deep user experience examples. And in a nutshell, the way that that works is you recruit some participants, usually five people per round is ideal. And often I get asked, well, how can you have statistically significant data with only five people? That’s not the point of qualitative testing. The point of qualitative testing is not to have statistically relevant data, it’s to have the actual user experiences.

\n\n\n\n

So you recruit your people, you come up with your research questions and that’s the problem that you’re trying to solve or the question you’re trying to get an answer to. So, an example might be, are users going to recognise this label that I’ve used in my navigation? Is this button going to get clicked if I put it in this location? It’s often a thing that, if you’re working with a customer to develop a website for them, what we find is that often the things that we are testing for in usability testing are things that the customer and I disagree on, or things where they weren’t sure when they made the decision in the first place. And they’re a great example of things that you want to test for.

\n\n\n\n

But the research questions are only the first part because if I say, the example I used in my talk today is that we had a support service directory. And this was for people who are experiencing family domestic violence. And they didn’t want to use the term directory because it’s a very harsh term. So they had called it support services, which sounds, on the surface like a good idea, but a lot of the people that are using their platform are not English first language. And they also tend to be in a really stressed out state as you can imagine.

\n\n\n\n

And so what we actually found is that when we said to them, can you imagine you’re helping someone, can you help them find a legal service that will enable them to get a restraining order or something like this? What we found is that repeatedly they didn’t go to support services to start with. The minute we changed that to service directory, they started to find the thing that we wanted them to click on.

\n\n\n\n

It’s such a small change, but it made a huge impact, the usability. Now, we found that out after the second test, which meant that we were able to change it after the second test, and then we had three more tests where we could show that every time they were able to find the thing that we wanted them to be looking for.

\n\n\n\n

So this is an example where the research question and the research task or the activity that we’re giving to the user, they’re not the same thing. If we said to them, find support services, find the service directory, if we use that language, obviously they’re going to look for that label. But instead we asked them to do an activity that would hopefully take them to the place we wanted them to go to.

\n\n\n\n

And then finally the last step is to iterate that and to actually take that data and make decisions, and make improvements to the project iteratively to try and make it better. That’s the goal, right? Is to find what the problems are and fix them. So we still have to work out how to fix them, but at least we know what the problems are and not just that people were not clicking on the button and we don’t know why.

\n\n\n\n

[00:12:27] Nathan Wrigley: I have a couple of follow up questions. First thing isn’t the question, it’s an observation. So that’s really cleared up in my head what it is, so that’s amazing. But one of the things that I want to know from that is, do you filter out people who, let’s say for example, you’ve got a website, the kind that you just described. Do you filter out people who are not the target audience? So in other words, I don’t know, maybe that’s not a perfect example. But let’s say, on some websites, would it be better to have really inexperienced users of the internet as your five candidates?

\n\n\n\n

[00:12:59] Jo Minney: That is exactly the ideal person.

\n\n\n\n

[00:13:02] Nathan Wrigley: So people who are just, I’ve never come across this before. You want people who are potentially bound to be confused. If somebody’s going to be confused, it’s you five.

\n\n\n\n

[00:13:10] Jo Minney: That is the ideal participant for a usability study. And often people say, I want to start learning how to do usability testing. Where should I start? And my advice to them is always the same, with your mum.

\n\n\n\n

Recruit a person that’s a generation older than you, because I can guarantee that in most cases, sorry to generalise, but they tend to be less efficient and less used to technology because they haven’t grown up with it. So for millennials and younger, we have had technology for all of our adult lives and most of our childhood.

\n\n\n\n

For my parents’ generation, they have had to learn that technology as an adult, and so their brains have a different mental model, and they don’t take for granted things that we take for granted. Like, when I click the logo, it will take me back to the homepage. I know that, you know that, your mum might not know that.

\n\n\n\n

And I think that is something that is really valuable is to understand the benefit of testing with people who aren’t as experienced with technology. Who don’t speak English as a first language. Who are experiencing some kind of accessibility challenge. Whether that’s using assistive technology, being colorblind. Things like that are really good things to try and get some cross-sectional representation in your testing participant pool.

\n\n\n\n

[00:14:25] Nathan Wrigley: So the idea then is that you’ve got these novice users who hopefully will immediately illustrate the point. And it’s driven by questions. So it’s not just, we are just going to stand over your shoulder and watch you browse the internet, and when you do something and describe, you’re looking for something and you can’t find it, that’s not how it’s done.

\n\n\n\n

It’s more, okay, here’s a defined task, do this thing and we’re going to ask you to do five things today, we want you to achieve them all and describe what you’re doing, but it’s more of that process.

\n\n\n\n

And then the idea is that you go from an imperfect website, slowly over time, iterating one problem after another towards a better website. The goal is never reached. It’s just an iterative process.

\n\n\n\n

[00:15:01] Jo Minney: That’s it. Perfection does not exist.

\n\n\n\n

[00:15:03] Nathan Wrigley: Okay, so that’s interesting. So we start with the novice. We’ve got a small cohort of people. We ask them specific questions, and we get feedback about those specific questions.

\n\n\n\n

So the other thing that I wanted to ask then is, when do you do it? Because it feels like you need to build the website first, then show it to people. So there’s got to be something. This isn’t process of discovery prior to the website. You need pixels on pages. Buttons that are potentially mislabeled or what have you. Is that the case? Build first, then usability test afterwards. There’s no usability testing prior to the initial build.

\n\n\n\n

[00:15:37] Jo Minney: It’s kind of a trick question because you can usability test at most stages. Probably the only stage you can’t usability test at is when you don’t yet have a site map. Having said that, my recommendation is, assuming you had unlimited budget and unlimited time, I would do at minimum two rounds of usability testing, and I would do one before you have any design, and I would do it just using wire frames.

\n\n\n\n

So we build interactive wire frames using WordPress. So for the demo that I did today, I spun one up. I used InstaWP. You can get like a seven day website or something through there. It took me 42 minutes to build out the website in just the block editor, with no design or anything, just the layout of it. And I was eating a loaded potato at the time. So if I can do that in 42 minutes, eating a loaded potato, and that’s not my job, I think it’s a pretty efficient and cost effective way of being able to do early usability testing.

\n\n\n\n

And often the thing that we’re testing for there is like, have I got the right navigation structure and hierarchy? Are the labels that I’m using sensible for people? Do they fit with the mental models of what our users are actually expecting? And the benefit of doing it that early is that when you don’t have a design applied, it’s a lot easier to identify problems.

\n\n\n\n

Because there is a thing that happens in human psychology, and there’s a lot of psychology in user experience. And there’s a thing that happens where if something’s pretty, we will say that it is easier to use. Our experience is that it’s easier to use because it’s nice to look at. And that’s great. That means that UI is really important, but it also means that, if you have a really nice UI, it can mask problems that you have in the background. It is great that things can be easier if they’re pretty, but imagine how much easier they would be if they worked well and were pretty, that’s what we should be aiming for.

\n\n\n\n

So typically we would do one round of usability testing when we just have a framework and just have the navigation. When someone lands on a page, sometimes we’ll just write a message on there and say, congratulations, you found the service directory where you can find this thing, this thing, this thing, this thing, and then we put a little button there. When they click it, it releases confetti on the page. So they get a dopamine hit and it’s like, yay, I completed the activity. You don’t have to have all of your content in place to be able to do testing, and identify early that you’ve got problems that you need to fix.

\n\n\n\n

[00:18:02] Nathan Wrigley: It sounds almost like an overly complicated design is the enemy of usability. We are drawn towards beautiful, but sometimes maybe beautiful just is overwhelming. You know, there’s lots of colors on the page, the buttons get hidden, there’s just too much text on there. Looks great, but it might be sort of masking the thing that you’re really trying to show. And it feels like there’s this tight rope act of trying to balance one thing against the other. Yeah, that’s really interesting.

\n\n\n\n

So, with the wire frame thing, in that case, you are really just testing, can the person find the thing? But I’m guessing once you’ve move beyond the wire frame stage and you’ve got a website, it’s literally out on the internet, it’s functional. It’s exactly what we hope would be the perfect version, then you’re drilling into more detail. You know, can a person find this resource? Do they know that this button is what we are intending them to click? Those kind of things.

\n\n\n\n

[00:18:49] Jo Minney: Yeah. So I think things like searchability and discoverability are much easier to test for in the early stages when you’re just doing, say, using like a wire frame or a prototype. And things like usability, you really do need to have the complete designed product to be able to test for them well. And I say that, there’s actually kind of four categories of the different types of tasks that we can do. I’ll give you the link to the blog post that I wrote that has all of this in detail because we do not have time to go deep into that today.

\n\n\n\n

But things like, does my search form work the way that I want it to? They’re the sorts of things that you do have to do some development to be able to get them working. So it’s not always practical to do that at the very early stages when you do want to start testing your navigation and stuff like that.

\n\n\n\n

Something that you can do is if you’ve only got enough budget, or enough time, to be able to do, say, five usability tests total, you could do two of them early, and then you could do three of them towards the end, after you have the majority of the design and the development work in place. Users are pretty forgiving when they’re doing a usability test. If you say, this is still a work in progress, there might be a couple of pages that look odd and aren’t quite ready to go live yet. If you get somewhere and you’re not sure, you can just go back, it’s okay.

\n\n\n\n

It’s not meant to be a perfect experience. The point is that you are getting their real time thoughts and feedback as they’re doing it. So it’s really important that you try and encourage them to follow the think aloud protocol, which is really outlining every single thing that goes through they’re head, just brain dump on me please. Like, I just want to hear all of your thoughts and thought processes.

\n\n\n\n

And the only thing as the facilitator that I will say during a usability test is, tell me what you’re thinking. And other than that, I am completely silent. So even when it comes to giving them the activity, so if I’m asking you to do an activity like help somebody find a legal service that they can use in this particular state. I would actually send that task to you via the chat or something like that.

\n\n\n\n

I would send the task to you via the chat, and then I would get you to read that task back to me, because I don’t want you to be thinking about how I’m saying it. I want you to be able to go back to that task and look at it, and think about it, and process everything inside your own head. But I want you to be telling me all of that.

\n\n\n\n

So often we’ll find people ask questions during that, like, what should I do next? And the answer to that is really hard to train yourself out of replying to them with anything other than, what would you do if I wasn’t here? And I think that’s the hardest thing about learning to facilitate a usability test.

\n\n\n\n

[00:21:24] Nathan Wrigley: Yeah, and in a sort of an ideal scenario, you wouldn’t even be in the room. But in some strange way, you’d be able to just get into their head and say, okay, now I want you to do this, but every time you’ve got problem, just figure figure it out, and we’ll watch. But you have to be there because you have to be able to listen to what they’re saying and what have you. Yeah, that’s curious.

\n\n\n\n

[00:21:40] Jo Minney: Yeah, and we do, at the end of each activity, we’ll then ask them for feedback on how they found it. If they had any suggestions or things that they didn’t say out loud while they were doing it that they wanted to share with us. How confident were they with the activity, and did they think that they were successful in it, which is a really good way of telling, I wasn’t really sure what the activity was meant to do. Or I wasn’t really sure if what I found really met the needs that I was looking for.

\n\n\n\n

Then we ask them, how certain are you with the answer that you just gave? And if they’re like, three out of five, you’re like, alright, this person didn’t understand what it was that I was asking them to do in the first place. Maybe the problem is actually with my question and not with the website.

\n\n\n\n

[00:22:18] Nathan Wrigley: Okay, so the whole process is, you’re not just asking for feedback about the website, there’s a whole process of asking for feedback about the process as well which is, that’s kind of curious. Meta, meta processing.

\n\n\n\n

[00:22:27] Jo Minney: Very meta, for sure.

\n\n\n\n

[00:22:29] Nathan Wrigley: We’re in an industry where at the moment everything is trying to be automated.

\n\n\n\n

[00:22:32] Jo Minney: Is this the AI question?

\n\n\n\n

[00:22:34] Nathan Wrigley: Well, no, this feels like it’s a very human thing. You need actual bodies on the ground. So it’s really a question of economics. Because I’m wondering if this often turns out to be a fairly expensive process. And because of that, I wonder if people push against it, because the budgets may not be there. If this is something that clients typically would say, well, okay, tell me how much that’s going to cost. It’s a nice idea but, okay, it’s going to cost us X thousand dollars because we’ve got to put five people in a room and we’ve got to pay for your time to moderate the event, and come up with the questions and so on.

\n\n\n\n

How do we manage that in an era of automation where everything is, the dollar cost of everything has got to be driven down. This feels like the dollar cost is going up because there’s humans involved.

\n\n\n\n

[00:23:14] Jo Minney: Yeah, it’s a great question. Have you ever run a Google ad before?

\n\n\n\n

[00:23:17] Nathan Wrigley: It’s expensive.

\n\n\n\n

[00:23:18] Jo Minney: It’s very expensive. It’s very expensive to get a new lead. It’s a lot more cost effective to convert a lead than it is to get a new one. And the point of usability testing is to improve conversion of people being able to do the thing that you want them to do on the website.

\n\n\n\n

So my first answer to that would be, look at the cost benefit analysis. It’s worth it in most cases to do usability testing. Something that we’ve found with positioning of usability testing is that if we offer it as an add-on, then people don’t want to do it because they don’t want to pay for it. They see the value in it necessarily. However, we don’t offer it as an add-on.

\n\n\n\n

We actually have it just as part of our proposal right from the start where we’re like, this is part of the point of difference between what you get when you build with us versus when you build with someone else. They’ll tell you what they think is the best way to do something. If we are unsure about the best way to do something or we disagree on it, it’s not going to ultimately be me making a decision or you making a decision. We’re going to test and we’re going to get real evidence from customers.

\n\n\n\n

And they’re the ones that are going to be developing it so you know that the final result that you get is going to be the best possible version of the website. And often we might be more expensive than our competitors, but people will go with us because we are not competing on price. We’re competing on offering a service that nobody else is offering. I asked today in the presentation who has done usability testing before and not a single person put their hand up.

\n\n\n\n

[00:24:42] Nathan Wrigley: That would’ve been my assumption actually.

\n\n\n\n

[00:24:44] Jo Minney: Yeah. And honestly, I don’t think any of the people that we’re competing against in the industry that I’m in are doing the same thing as what we’re doing. And so it is very much a point of difference. I think it’s not a well understood technique, but it’s so valuable that it is a really easy way to position yourself as being different, and really actually do a better job for your customers, for the people that you’re building websites for. Because ultimately you are going to have a better result at the end of it.

\n\n\n\n

[00:25:12] Nathan Wrigley: The interesting thing there is, when I say usability testing, somehow in my head there is a connection between that and accessibility. And that’s not where I’m going with this question, but there’s just something about it being unnecessary. And I’m not binding that to the word accessibility. What I’m saying is clients often think, I don’t need to do that. Obviously, we’re moving into an era where legislation says otherwise. But I can just leave it over there. I don’t need to worry about that, usability testing, not for me.

\n\n\n\n

However, the lever that you’ve just pulled, it completely changes the dynamic because you’ve pulled an economic lever, which is that if we can get everybody to follow this action, I don’t know, fill up the cart with widgets and then press the buy now button, and go through the checkout process. If that’s the thing that you’re usability testing, you’ve made direct line. You’ve joined up the dots of, okay, user, money.

\n\n\n\n

So it’s not just about it being a better website so that people can browse around it all day. It’s also about connecting the economics of it. So the usability is about people buying, converting, getting the resource. And so there might not be an economic transfer there, but it will be some benefit to your business. There might be downloading that valuable PDF that you want everybody to see or whatever.

\n\n\n\n

So that’s kind of interesting. That’s changed my thoughts about it a little bit. And it is more about that. It’s getting an understanding of what you want out the website, getting an understanding of what you think should be happening is actually possible and happening. Have I sort of summed that up about right?

\n\n\n\n

[00:26:40] Jo Minney: Yeah, I think that’s a really good summary it. I think the only thing I would add there is that a lot of the times the conversation around accessibility and the conversation around usability do have a lot of crossover. They are fundamentally different, but one of my favorite examples is actually something that I think applies to both.

\n\n\n\n

So two of the common problems that we find very early on in design is often to do with colour. And so one of them is colour contrast and the other one is colourblind accessibility. And I think it’s a great way to get people to change their thinking, and their perception of the way we have these conversations is, if you have an e-commerce website, Nathan, what would you say if I said to you, I can instantly get you 8% more customers?

\n\n\n\n

[00:27:23] Nathan Wrigley: Yeah, I’d say that’s great.

\n\n\n\n

[00:27:24] Jo Minney: And I’d be like, cool, change your buttons so that colourblind people can read them, because 8% of men are colourblind. So actually it’s only 4% of people because assuming half of them are men, then you’ve actually only got 4%. But still 8% of men are colourblind, that’s a big percentage of the population. So if your button is red and green, then you’re going to have a problem. People are not going to be able to find the thing that you want them to click to give you their money.

\n\n\n\n

Likewise, if you want people to be able to use your website when they’re outside and using their phone in sunlight, then you need to have good colour contrast on your website. So often this conversation is around, well, I don’t have people who are disabled, I’m not trying to cater to people that are using screen readers. It doesn’t matter because not very many people that are using my website are blind. And I’m like, well, I’m not blind but I still struggle when I’m looking at something where the text is too faint, and I’m looking at it on my phone, and I’m standing outside in the sun because we naturally don’t visualise as much contrast there.

\n\n\n\n

So I think being able to position it in a way where people can see the value to themselves. I want to use a website that has better contrast, and so it makes that conversation easier with a customer.

\n\n\n\n

[00:28:32] Nathan Wrigley: I hadn’t really drawn the line between accessibility and usability, but it seems like they’re partner topics, basically. There’s like a Venn diagram, accessibility over here, usability over here, with a massive overlap somewhere in the middle.

\n\n\n\n

[00:28:43] Jo Minney: A hundred percent. That’s why we always encourage having that sort of intersection between accessibility and usability in our testing pool. So we always try and have one person who experiences some kind of accessibility challenge, whether that’s being colourblind, hearing impaired, if we’ve got a lot of video on the site, for example. And I think that it can be a really valuable way of collecting multiple data points at one time.

\n\n\n\n

[00:29:04] Nathan Wrigley: When you have a client that comes to you and they’ve obviously, by the time that they’ve signed the contract with you, usability is already part of the deal it sounds like. How do you decide, what’s the thing in round one that we’re going to pick up on? Is there sort of like a copy book that you go through? Is it like, I don’t know, buttons or the checkout or colour or? Where do you go first? And sort of attached to that question a little bit, this process never ends, right? In theory, you could do usability testing each month. But I was wondering if you did it like on an annual cycle or something, yeah.

\n\n\n\n

[00:29:34] Jo Minney: If you’re not changing stuff super often, I would say, there’s probably more cost effective ways that you can collect information about it. Typically we encourage, long-term, have things like heat maps and stuff like that. They will help you identify if there is a problem. If you know that there is a problem, let’s say you’ve got a heat map and you’re like, why is nobody clicking on our buy now link? That is a good instance of where you would do some usability testing to figure out what the problem is.

\n\n\n\n

But if everything’s working and you’re getting conversions, then probably doing usability testing isn’t the most valuable thing that you can do. If you’re looking at making significant changes to the way that your website works, that’s another good time to introduce a round of usability testing. So we don’t do it just for the sake of doing it. We do it because we need to do it, and because there’s value in it for our customers.

\n\n\n\n

[00:30:18] Nathan Wrigley: Do you keep an eye on your customer’s websites so that you can sort of get ahead of that, if you know what I mean? So let’s say that you put heat maps in, very often that would then get handed over to the client and it’s somebody in the client’s company’s job is to check the heat maps. Or do you keep an eye on that and, oh look, curiously, we’ve seen over the last 12 months, yeah, look at that. There’s not much going on over at that very important button over there. Let’s go back to the client and discuss that. That could be another round of usability testing.

\n\n\n\n

[00:30:44] Jo Minney: Yeah, so I think we’re not uncommonly, a lot of agencies now do have some kind of retainer program where they will maintain communication and assistance for their clients. So we call them care plans. I know everyone has a different name for it. I think it’s pretty standard now in the WordPress ecosystem. It’s a very common thing to do.

\n\n\n\n

As part of our care plans we have scheduled meeting with our clients once every three months or six months or 12 months, depending on how big the site is. And one of the things that we’ll do at that time is review their analytics, review the heat maps, that sort of thing.

\n\n\n\n

Ask them, have they experienced any problems? Have they noticed a downturn in the people signing up for the memberships? Or have they noticed, have they had any complaints from people about something? Is there anything that they’re not sure about? Are they going to be changing the way that they operate soon, and introducing something new into their navigation that we need to consider where does that fit in the grand scheme of things?

\n\n\n\n

I find if we’re having those conversations early and we are the ones starting those conversations, then often we are coming to them with solutions instead of them coming to us with problems.

\n\n\n\n

[00:31:46] Nathan Wrigley: I think that’s the key bit, isn’t it? If you can prove to be the partner that comes with, we’ve got this intuition that there’s something that we can explore here. You are proactive, you’re going to them not, okay, anything you want? Is there anything we can help you with, you know? And the answer to that is always, not really.

\n\n\n\n

Whereas if you go and say, look, we’ve got this idea, based upon some data that we’ve seen, we’ve got heat maps and what have you, shall we explore that further? That seems much more credible. You are far likely, I think to have an economic wheel which keeps spinning if you adopt that approach, as opposed to the is there anything you want doing, kind of approach?

\n\n\n\n

[00:32:18] Jo Minney: Absolutely. I think every developer’s worst nightmare is having a customer come back to them and say, I’ve just noticed that I haven’t had anyone send through anything in my contact form for the last three weeks. And I’ve just noticed, when I went and tested it, that the contact form’s not working anymore.

\n\n\n\n

I’m sure I’ve had that nightmare at least once. And I think if you can avoid being in that situation where they’re coming to you with something like, oh my God, it’s broken, how do I fix it? If instead you can go to them and be proactive about it and just kind of keep your finger on the pulse.

\n\n\n\n

Yes, there’s a little bit of ongoing work, but like honestly, I jump on, I check all of the analytics maybe once every three months for my clients. I set aside one day to do it. Go and have a look through that. If I notice anything, I can usually fix it, make sure that we’re collecting the data again before it becomes a problem.

\n\n\n\n

And then that way when there is an issue, we’ve got data that we can back up and we can start from there and go, okay, yes, we’ve identified, here’s where we need to do more research. And then we can apply something like usability testing to that.

\n\n\n\n

[00:33:16] Nathan Wrigley: How much of your time on a monthly basis, let’s say as a percentage, do you spend on usability of existing clients? Is this something that is a lot of the work that you do? What I’m trying to figure out here is, for people listening, is this something that they can turn into a real engine of their business?

\n\n\n\n

Because you might get two days, three days work a week just on the usability of pre-existing clients. So in a sense, you’ve created interest and work out of thin air, because these clients already exist, they’re in your roster, but there’s a whole new thing that we can offer to them. So, how much do you spend doing it?

\n\n\n\n

[00:33:50] Jo Minney: Yeah, so it’s a great question. I would say it’s cyclical. I couldn’t really say like, I always spend this much amount of time. There might be entire weeks that go by where my whole life is usability testing, and there might be a month that goes by where I don’t do any. And it really does often depend on where our projects are in the life cycle at any particular time.

\n\n\n\n

So we’re often working on projects that will span over years. And because of that, they might introduce a completely new part of their project. And that’s a good time to reintroduce that usability testing. As I said, like you don’t really want to do it just for the sake of doing it, but at the same time, if you can show that there will be value in making a change, if you can show that there is a lost opportunity somewhere, then a hundred percent you can sell that, the value to them of, hey, you could spend $1,000 now, but you could be earning $5,000 more every month for the next several years. That’s a no-brainer, right?

\n\n\n\n

People are happy to make investment if they can see that there’s going to be a cost benefit for them in the future. Or if the thing that they’re trying to do is maybe their government website or something, and they’ve got a particular thing that they need to meet, they’ve got KPIs. If you can show that you are able to help them meet those KPIs, then they are going to invest in doing that thing that you’re trying to offer them.

\n\n\n\n

[00:35:02] Nathan Wrigley: We talked about the Venn diagram of accessibility and usability, and the fact that there’s a lot of an overlap. In the year 2025, this is a year where, in Europe at least anyway, accessibility, the legal cogs are turning and the screw is getting tighter. So accessibility is becoming mandated in many respects.

\n\n\n\n

And I was wondering about that, whether there was any kind of overlap in legislation on the usability side. The accessibility piece is obviously easier to sort of define in many ways, and it’s going to become less optional. But I was wondering if there was any usability legal requirements. I don’t know quite how that would be encapsulated.

\n\n\n\n

[00:35:41] Jo Minney: Sort of. An example that comes to mind is that there are a lot of practices that historically have been really prevalent on the internet, and they’ve been identified as being really bad for usability. And they’ve actually now been identified as being so bad that they’re almost evil. And they’ve started to crack down on those.

\n\n\n\n

And an example of that is, have you ever tried to unsubscribe from a gym? It’s basically impossible. And so now if you, at least in Australia, I know if you have a subscription on your site, you legally have to have a way of people being able to unsubscribe without having to call someone or send an email somewhere.

\n\n\n\n

And that is an example where that is actually usability. And I think there are definitely things where we are picking up on stuff that is maybe a shady way of working, and a shady way of developing websites. And those things are starting, we’re starting to cut down on them.

\n\n\n\n

I’m not sure if that is purely usability, or just like not being being a bad person. But I think that there is definitely, the only reason that we know that those things are a problem is because we have all had those bad experiences. And ultimately that’s all user experience is, it’s just how good or bad is experience of using a platform.

\n\n\n\n

[00:36:49] Nathan Wrigley: I share your frustration with those kind of things because I’ve been through that process. Not just canceling a subscription but, I don’t know, something that you’ve got yourself accidentally into and you don’t want to be on that email list anymore. Seemingly no way to get off it.

\n\n\n\n

[00:37:01] Jo Minney: They’ve changed the unsubscribe link so it doesn’t have the word unsubscribe in it. And now you just have to look for the word that’s not underlined, or highlighted in a different colour. That when you hover over it, something pops up and you’re like, oh, that’s the link. That thing that says manage preferences down the bottom, hidden in the wall of text. That is a shady practice. That is a poor user experience just as much as it’s just a bad thing to do.

\n\n\n\n

[00:37:23] Nathan Wrigley: I think it’s got the label of deceptive design now. It used to be called dark patterns, didn’t it? But deceptive design. This notion of doing things in such a way to just deliberately confuse the user so that the green big button, which is the exact opposite of what you want to click, is the one which is visible. And then there’s this tiny little bit of greyed out text, which is the one which, clearly, you’ve ended up at this page, that’s the one you want. That’s the enemy of usability in a way. But for the business, it may be exactly what they want because it keeps the economic engine rolling.

\n\n\n\n

Yeah, that’s interesting. I wonder if there’ll be more legislation to tighten those things up so that they’re not allowed. Yeah, that’s fascinating.

\n\n\n\n

Last question. We’re running out of time. Last question. And it refers to something that we talked about earlier. I’m guessing this really never ends. This is a journey which you begin, you tweak it, you do a little bit, you fix, and then you start again a little bit later and what have you. Is there ever a moment though where you go to a client and say, we did it? This site, as far as we’re concerned, is now perfect. Or is it never a goal? It’s a journey and never a destination.

\n\n\n\n

[00:38:23] Jo Minney: I think you’ll probably agree with me here, Nathan, that it’s basically impossible to be perfect, because ultimately someone is always going to have a different opinion. Someone’s always going to think that your shade of purple is too dark. Someone is always going to dislike the font that you chose, because it’s not loopy enough, or it’s too loopy, right?

\n\n\n\n

So I don’t think there is such a thing as perfect. But through doing five usability tests, five people, you can pick up at least 85% of the potential problems with your design. And I’m not aiming for perfect, but I know that for me, if I can confidently say to my customers that I’ve been able to identify 85% of the potential problems that they might experience in their project, then they can confidently go away and say, hey, we’re pretty happy with what we’ve got.

\n\n\n\n

We can definitely improve on that over time. But that is a huge milestone to be able to hit. And being able to have enough data, and enough research to confidently say that, I think is a really big win both for us and for our customers.

\n\n\n\n

[00:39:26] Nathan Wrigley: Sadly, Jo, time is the enemy, and I feel like we’ve just pulled back the lid a teeny tiny bit on the big subject of usability. Honestly, I reckon I could talk for another two hours on this at least. You know, because you’ve got into colours there and all sorts, and there’s just so many tendrils that we haven’t been able to explore. But we’ve prized it open a little bit, and so hopefully the listener to this has become curious. If they have, where would they find you? What’s a good place to discover you online?

\n\n\n\n

[00:39:53] Jo Minney: Yeah, so I think the best place is to hit up my personal blog, jominney.com. So it’s J O M I N N E Y .com. And I have a lot of stuff on there about usability, usability testing. I have a blog post that I wrote specifically for this talk that shares all of the resources that I used to put together the slides and everything. The talk itself will be on WordCamp TV. If you’re on socials and you want to hit me up, pretty much the only platforms I’m active on nowadays are LinkedIn and Bluesky, and I’m Jo Minney on both of them.

\n\n\n\n

[00:40:23] Nathan Wrigley: Jo Minney, thank you so much for chatting to me today. I really appreciate it.

\n\n\n\n

[00:40:27] Jo Minney: You’re most welcome, Nathan. Thanks for having me again.

\n
\n\n\n\n

Today, I bring you the first in a mini series of podcasts I recorded in person at WordCamp Asia in Manila. This flagship WordPress event brought together hundreds of WordPress professionals, enthusiasts and all manner of interested parties under one roof for a three day event – one contributor day, and two days of presentations.

\n\n\n\n

I tracked down several of the speakers and workshop organisers, and recorded them speaking about the subject they were presenting upon. I hope that you enjoy what they have to say.

\n\n\n\n

So on the podcast today we have the first of those conversations, and it’s with Jo Minney.

\n\n\n\n

Jo, based in Perth, Australia, is passionate about user experience, data-driven decision-making, cats, pockets and travel. She’s a small business founder, and works with organisations creating digital platforms with WordPress. She also freelances as a UX consultant. She volunteers with Mission Digital to address social issues using technology, and is an ambassador for She Codes Australia, promoting tech accessibility for women. Recognised as a 2023 Shining Star by Women in Technology Western Australia, Jo is an international speaker on topics like user experience, accessibility, and gender equality. She’s committed to ensuring a seamless user experience, and today shares her insights from practical, everyday usability testing.

\n\n\n\n

Jo’s presentation, entitled Budget-Friendly Usability Testing for WordPress helped attendees understand what usability testing is, x and clarified why it differs from other testing methods. She shares examples from her work, showing how small changes can significantly impact user experience, which is better for you, the website builder, and your client, the website owner.

\n\n\n\n

We also discuss how usability testing can transform a website’s effectiveness by improving conversions. Jo explains the importance of recruiting novice users for testing, and highlights how usability testing pushes for real, user-centered improvements.

\n\n\n\n

Towards the end, Jo shares practical advice on when and how to integrate usability testing into your process, advocating for early and iterative testing to preemptively address potential issues.

\n\n\n\n

If you’re looking to gain a deeper understanding of usability testing and its benefits, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

WordCamp Asia in Manila

\n\n\n\n

Jo’s WordCamp Asia 2025 presentation: Budget-Friendly Usability Testing for WordPress

\n\n\n\n

InstaWP

\n\n\n\n

Think Aloud Protocol

\n\n\n\n

Jo Minney’s website

\n\n\n\n

Jo on Bluesky

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 26 Mar 2025 18:37:05 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:31;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:102:\"Do The Woo Community: Building Trust and Converting Sales with Simple UX Decisions with Marc McDougall\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93465\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:101:\"https://dothewoo.io/building-trust-and-converting-sales-with-simple-ux-decisions-with-marc-mcdougall/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:198:\"In this episode of Woo DevChat, hosts discuss UX design and CRO with Marc McDougall, who shares insights on common misconceptions, mistakes, and the evolving role of AI in enhancing user experience.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 26 Mar 2025 15:58:22 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:32;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"Do The Woo Community: Get Ready for the Atarim Web Agency Summit 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93450\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"https://dothewoo.io/blog/get-ready-for-the-atarim-web-agency-summit-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:359:\"The Atarim Web Agency Summit 2025, scheduled for April 7-11, is a free virtual event for web professionals. Featuring over 40 expert-led sessions, it offers actionable insights for agency growth, networking opportunities, and access to industry leaders. Registration is free, with replay options available, making it essential for anyone in the digital space.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 26 Mar 2025 15:08:27 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:33;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:135:\"HeroPress: With open arms – friendships in the WordPress community – Su atviromis rankomis – draugystės WordPress bendruomenėje\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://heropress.com/?post_type=heropress-essays&p=7820\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:180:\"https://heropress.com/essays/with-open-arms-friendships-in-the-wordpress-community/#utm_source=rss&utm_medium=rss&utm_campaign=with-open-arms-friendships-in-the-wordpress-community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:19273:\"\"Pull

Šį rašinį galima rasti ir lietuvių kalba.

\n\n\n\n

Truth be told, unlike my husband, I have never been the most social person. At a party, you’ll usually find me talking to the dog (or cat). Throughout my life, I’ve only had a few close friends, and I’d rather be reading a book than going to a concert. While WordPress has been a huge part of the growth of my business, I’d like to take this opportunity to discuss something much more important – the friendships that I have formed through this wonderful community.

\n\n\n\n
\n

Due to WordPress, I have some truly spectacular friends in my life.

\n
\n\n\n\n

While we may have started as strangers, we moved into attending each other’s weddings, laughing until we’re crying while packing hundreds of swag orders, holding hands in a hospital bed and being there for each other through thick and thin. Being a privacy lawyer, I won’t name any names here but you’ll probably be able to tell pretty quickly if I’m writing this about you. 

\n\n\n\n

A little backstory 

\n\n\n\n

When I was finishing up law school, I worked at a small web design agency in Chicago as their COO. I met my husband, Hans, who was the owner of a different agency when he came to buy us out. It was love at first sight (yes, really) and we have been inseparable ever since. We shared our struggles and annoyances over dinner one night – writing Privacy Policies for clients was monotonous for me and he had no idea what to do when a client asked him about website policies. So we created Termageddon – an auto-updating website policies solution for agencies and their clients. Since we started an agency partner program, we knew that we had to find agencies who would be willing to try our new product and that’s when we came across WordCamps and the WordPress community. 

\n\n\n\n

Our first WordCamp 

\n\n\n\n

WordPress has a huge community and going to a large WordCamp such as WordCamp US when you don’t know anyone can be really scary (especially for an introvert like me) so we thought that we’d get our feet wet with a smaller WordCamp nearby. Enter WordCamp Jackson, Michigan.

\n\n\n\n
\n

Driving into the most adorable small city that we have ever visited, we were very nervous – what if no one wanted to talk to us? 

\n
\n\n\n\n

These fears were quickly dispelled when we walked into a room with about 30 friendly faces. Even the mayor was in attendance! During a break, we all sat on couches and our new friends helped us come up with the design for our very first swag item: a t-shirt with a pirate asking “Arrrr you compliant?”. I still smile every time I put it on. The next thing we know, the informative presentations are over and we’re all piling into cars and going to an escape room. The friendships formed during that event have lasted many years. In fact, one of our friends from that very first WordCamp helped us build our chicken coop. 

\n\n\n\n

Come on over! 

\n\n\n\n

A while later, my husband went to London and met a friend through a non-WordPress event and they truly hit it off (seriously, they have a standing call twice per month for five years now). A few months later, it was time for our first WordCamp US and our friend flew from the UK to Chicago to stay with us and our plan was to take a road trip and drive from our home to the WordCamp. Well, it just so happened that his other friend who was also going to WordCamp (someone we haven’t met before), missed his flight. Our friend called us to explain the situation and asked whether he could change his flight to Chicago, stay with us and join our road trip. We said “come on over!” Well, that missed flight led to the best trip of all time and a lifelong friendship.

\n\n\n\n

I’ll always remember him walking me to the store to buy some tea on a cold evening, all of us posing for a picture next to the St. Louis arch, hanging out in various hotels and Airbnb’s throughout the years, sharing stories from our youth, marveling at the excitement and joy of growing families, and supporting each other’s business ventures. We’ve seen each other many times throughout the years on various trips and WordCamps and I think of us as our core group at these events – a safe space amidst all of the chaos. 

\n\n\n\n

Better together 

\n\n\n\n

When you start establishing yourself in an industry or a community, you may think of other people in the space as competitors. While it’s certainly not the best trait that humanity has to offer, I think that this happens more frequently than we would like to admit. When I was new in the WordPress community, there was an established privacy attorney who had been a part of that community for much longer than I have. Going to WordCamp US, I knew that she was going to be giving a speech on the California Consumer Privacy Act and how to comply with this privacy law. To be honest with myself and you, I was extremely nervous about meeting her. What if she thought that I was a competitor? What if she disliked me? What if there’s not enough room for two privacy lawyers at this event? Should I just hide throughout the entire event to make sure that she doesn’t see me? 

\n\n\n\n

It’s true that we create these extreme scenarios in our minds but reality is usually much different (and less scary). We quickly bonded over the fact that we were the only two people there who knew what CCPA even is and, by the end of the night, we were jammed together in an Uber going to a bar. Throughout the years, we have supported each other’s projects, participated in long evenings of conversations, shared our struggles and wins. Due to her kindness and welcoming nature, we did not head towards competition but are able to enjoy the benefits of a wonderful symbiosis and a true friendship. 

\n\n\n\n

Family for life 

\n\n\n\n

Hanging out with your friends at WordCamps is fun but it’s even more fun when your friendship progresses to the point where your friends fly over to hang out at your home. Well, in this case, we only got to hang out for one day before my friend got very sick. Not the “I have the flu” kind of sick, the over a week in the ICU and months in the hospital kind of sick. 

\n\n\n\n

Throughout that time, we met her family, who stayed with us for a while as we live very close to the hospital. While this time was certainly grueling for everyone involved, it also shed a new perspective on how friends get through tough times. Whether it was rides to the hospital, sitting together, crying together, making home cooked meals, celebrating every win, no matter how small, the friendship, the community, and the knowledge that we were there for each other let us make it through this difficult time. The day that she got out of the hospital was truly miraculous.

\n\n\n\n
\n

And now, we are most certainly not just WordCamp friends, we’re family – for life. 

\n
\n\n\n\n

The little things 

\n\n\n\n

Up to this point in my life, I have been a part of many communities – from school, to dance groups, to attorney associations, to my local neighborhood, each community has had something special to offer. However, I have never been involved with another community that is as welcoming or that has led to the formation of so many wonderful friendships as WordPress. From sharing a beer (or a boot of beer), to attending our wedding through Zoom (2020), to making a flower crown, to eating so much sushi that I could barely walk back to the Airbnb, to corn mazes and petting zoos, and touring a submarine together, I am truly thankful that the WordPress community has welcomed me with open arms and I hope that I can do the same for others! 

\n\n\n
\n\n
\n

Donata’s Work Environment

\n\n\n\n

We asked Donata for a view of her office this is what she sent!

\n\n\n
\n \"Donata\n
\n\n\n\n\n

HeroPress would like to thank Draw Attention for their donation of the plugin to make this interactive image!

\n
\n\n
\n\n\n\n\n

Su atviromis rankomis – draugystės WordPress bendruomenėje

\n\n\n\n

Tiesą sakant, kitaip nei mano vyras, niekada nebuvau pati socialiausia asmenybė. Vakarėlyje mane dažniausiai rastumėte kalbančią su šunimi (ar kate). Visą savo gyvenimą turėjau tik keletą artimų draugų, o knygos skaitymas man visada buvo malonesnis nei koncerto lankymas. Nors WordPress atliko didžiulį vaidmenį plėtojant mano verslą, norėčiau pasinaudoti šia proga ir pakalbėti apie kai ką daug svarbesnio – draugystes, kurias užmezgiau šioje nuostabioje bendruomenėje.

\n\n\n\n
\n

Dėl WordPress turiu iš tiesų nuostabių draugų savo gyvenime.

\n
\n\n\n\n

Nors pradėjome kaip svetimi, mes tapome tais, kurie dalyvauja vienas kito vestuvėse, juokiasi iki ašarų pakuodami šimtus reklaminių dovanų, laiko vienas kitam ranką ligonines lovoje ir būna kartu per storą ir ploną. Kadangi esu privatumo teisininkė, nemininesiu vardų, tačiau tikriausiai greitai suprasite, jei rašau apie jus.

\n\n\n\n

Trumpa istorija

\n\n\n\n

Kai baiginėjau teisės studijas, dirbau mažoje interneto dizaino agentūroje Čikagoje kaip COO. Ten sutikau savo vyrą Hansą, kuris buvo kitos agentūros savininkas, kai jis atvyko mus nupirkti. Tai buvo meilė iš pirmo žvilgsnio (taip, tikrai), ir nuo to laiko mes esame neatskiriami. Vieną vakarą dalinomės savo sunkumais ir nepasitenkinimais – man buvo nuobodu rašyti privatumo politikos dokumentus klientams, o jis net nežinojo, ką daryti, kai klientas paprašydavo interneto svetainės politikos. Taip gimė Termageddon – automatiškai atnaujinamas interneto svetainių politikos sprendimas agentūroms ir jų klientams. Kadangi pradėjome agentūrų partnerių programą, turėjome rasti agentūras, kurios būtų pasiruošusios išbandyti mūsų naują produktą, ir tada mes atradome WordCamps ir WordPress bendruomenę.

\n\n\n\n

Mūsų pirmasis WordCamp

\n\n\n\n

WordPress turi didžiulę bendruomenę, o vykstant į didelį WordCamp renginį, pavyzdžiui, WordCamp US, kai nieko nepažįsti, gali būti labai baisu (ypač tokiai intravertei kaip aš), todėl nusprendėme pradėti nuo mažesnio WordCamp netoli mūsų. Taip mes atsidūrėme WordCamp Jackson, Mičiganas.

\n\n\n\n
\n

Važiuodami į vieną mieliausių mažų miestelių, kokius tik esame matę, labai nervinomės – o kas bus jei niekas nenorės su mumis kalbėtis?

\n
\n\n\n\n

Šios baimės greitai išnyko, kai įėjome į kambarį su maždaug 30 draugiškų veidų. Netgi miesto meras dalyvavo! Per pertrauką visi susėdome ant sofų, o naujieji draugai padėjo mums sukurti mūsų pirmojo reklaminių dovanų daikto dizainą: marškinėlius su piratu, klausiančiu “Arrrr you compliant?” (Ar esate atitinkantys?). Vis dar šypsausi, kai juos apsivelku. Nespėjome apsidairyti, o jau po naudingų pranešimų visi susėdome į automobilius ir vykome į pabėgimo kambarį. Draugystės, užmezgtos šio renginio metu, tęsiasi jau daugelį metų. Tiesą sakant, vienas iš mūsų draugų iš to pirmojo WordCamp padėjo mums pastatyti vištų tvartą.

\n\n\n\n

Užeikit!

\n\n\n\n

Kiek vėliau mano vyras išvyko į Londoną ir susipažino su draugu per ne-WordPress renginį, ir jie tikrai susidraugavo (rimtai, jie kalbasi kas dvi savaites jau penkerius metus). Po kelių mėnesių atėjo metas mūsų pirmajam WordCamp US, ir mūsų draugas nuskrido iš JK į Čikagą, kad apsistotų pas mus, o mūsų planas buvo keliauti automobiliu nuo namų iki WordCamp. Tačiau nutiko taip, kad jo kitas draugas, kuris taip pat vyko į WordCamp (mes jo dar nebuvome sutikę), praleido savo skrydį. Mūsų draugas paskambino mums, paaiškino situaciją ir paklausė, ar jo draugas gali pakeisti skrydį į Čikagą, apsistoti pas mus ir prisijungti prie mūsų kelionės. Mes pasakėme: “Užeikit!” Tas praleistas skrydis privedė prie geriausios kelionės gyvenime ir viso gyvenimo draugystės.

\n\n\n\n

Aš visada prisiminsiu, kaip jis lydėjo mane į parduotuvę nusipirkti arbatos šaltą vakarą, kaip visi kartu pozavome nuotraukai prie Saint Louis arkinio paminklo, kaip per daugelį metų leisdavome laiką įvairiuose viešbučiuose ir Airbnb, dalijomės jaunystės istorijomis, stebėjomės augančių šeimų džiaugsmu ir jauduliu bei palaikėme vieni kitų verslo sumanymus. Per daugelį metų matėmės daugybę kartų įvairių kelionių ir WordCamp renginių metu, ir aš mus laikau pagrindine grupe šiuose renginiuose – saugia vieta viso šurmulio apsuptyje.

\n\n\n\n

Geriau kartu

\n\n\n\n

Kai pradedate įsitvirtinti tam tikroje pramonėje ar bendruomenėje, galite pagalvoti, kad kiti žmonės šioje srityje yra konkurentai. Nors tai tikrai nėra geriausia žmonijos savybė, manau, kad taip nutinka dažniau, nei norėtume pripažinti. Kai buvau naujokė WordPress bendruomenėje, buvo viena pripažinta privatumo teisininkė, kuri buvo šios bendruomenės dalis daug ilgiau nei aš. Važiuodama į WordCamp US,  žinojau kad ji ketina skaityti pranešimą apie Kalifornijos vartotojų privatumo įstatymą (CCPA) ir kaip laikytis šio privatumo įstatymo. Būsiu atvira – man buvo labai neramu ją sutikti. O kas, jei ji manytų, kad esu konkurentė? O jei jai nepatikčiau? O jei šiame renginyje nepakaktų vietos dviem privatumo teisininkėms? Gal man geriau viso renginio metu slėptis, kad tik ji manęs nepastebėtų?

\n\n\n\n

Tiesa ta, kad dažnai kuriame kraštutinius scenarijus savo galvose, bet realybė dažniausiai būna visai kitokia (ir mažiau bauginanti). Greitai susidraugavome, nes supratome, kad esame vienintelės dvi moterys renginyje, kurios iš viso žinojo kas yra CCPA. Vakaro pabaigoje jau spraudėmės kartu į Uber važiuodamos į barą. Per tuos metus palaikėme viena kitos projektus, dalijomės ilgais pokalbiais vakarais, kartu išgyvenome sunkumus ir džiaugėmės pasiekimais. Dėl jos geranoriškumo ir svetingumo nepasukome konkurencijos keliu, o galėjome džiaugtis nuostabia simbioze ir tikra draugyste.

\n\n\n\n

Šeima visam gyvenimui

\n\n\n\n

Leisti laiką su draugais „WordCamp“ renginiuose yra smagu, bet dar smagiau, kai draugystė tampa tokia stipri, kad draugai atskrenda pas jus tiesiog pabūti kartu. Na, šiuo atveju, mes spėjome pabūti tik vieną dieną, kol mano draugė labai susirgo. Ne „turiu gripą“ lygio susirgo, o taip, kad teko praleisti daugiau nei savaitę reanimacijoje ir kelis mėnesius ligoninėje.

\n\n\n\n

Tuo sunkiu metu susipažinome su jos šeima, kuri kurį laiką gyveno pas mus, nes gyvename labai arti ligoninės. Nors šis laikotarpis tikrai buvo alinantis visiems, jis taip pat suteikė naują perspektyvą, kaip draugai išgyvena sunkius laikus kartu. Nesvarbu, ar tai buvo kelionės į ligoninę, sėdėjimas kartu, verksmas kartu, naminiai patiekalai ar kiekvienos, net ir mažiausios pergalės šventimas – draugystė, bendruomenė ir žinojimas, kad esame vieni kitiems, padėjo mums išgyventi šį sunkų laikotarpį. Diena, kai ji išėjo iš ligoninės, buvo tikras stebuklas.

\n\n\n\n
\n

Dabar mes tikrai ne tik WordCamp draugės – mes šeima visam gyvenimui.

\n
\n\n\n\n

Mažos smulkmenos 

\n\n\n\n

Iki šiol mano gyvenime buvo daugybė bendruomenių – nuo mokyklos, šokių grupių, teisininkų asociacijų iki mano vietinės kaimynystės – kiekviena bendruomenė turėjo ką nors ypatingo. Tačiau niekada nebuvau dalis kitos bendruomenės, kuri būtų tokia svetinga ir kuri būtų padovanojusi tiek daug nuostabių draugysčių kaip WordPress. Nuo alaus bokalo (arba alaus bato) dalijimosi, iki mūsų vestuvių stebėjimo per Zoom (2020 m.), iki gėlių vainikų pynimo, iki tiek daug sušio valgymo, kad vos galėjau pareiti atgal į „Airbnb“, iki kukurūzų labirintų ir gyvūnų ūkių lankymo, ir net povandeninio laivo ekskursijos – esu nuoširdžiai dėkinga, kad WordPress bendruomenė mane priėmė atviromis rankomis, ir tikiuosi, kad galėsiu padaryti tą patį kitiems!

\n

The post With open arms – friendships in the WordPress community – Su atviromis rankomis – draugystės WordPress bendruomenėje appeared first on HeroPress.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 26 Mar 2025 01:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"Donata Stroink-Skillrud\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:34;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"WordPress.org blog: WordPress 6.8 Release Candidate 1\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18639\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://wordpress.org/news/2025/03/wordpress-6-8-release-candidate-1/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:9186:\"

The first Release Candidate (“RC1”) for WordPress 6.8 is ready for download and testing!

\n\n\n\n

This version of the WordPress software is under development.  Please do not install, run, or test this version of WordPress on production or mission-critical websites.  Instead, it’s recommended that you evaluate RC1 on a test server and site.

\n\n\n\n

Reaching this phase of the release cycle is an important milestone.  While release candidates are considered ready for release, testing remains crucial to ensure that everything in WordPress 6.8 is the best it can be.

\n\n\n\n

You can test WordPress 6.8 RC1 in four ways:

\n\n\n\n
PluginInstall and activate the WordPress Beta Tester plugin on a WordPress install.  (Select the “Bleeding edge” channel and “Beta/RC Only” stream).
Direct DownloadDownload the RC1 version (zip) and install it on a WordPress website.
Command LineUse the following WP-CLI command: wp core update --version=6.8-RC1
WordPress PlaygroundUse the 6.8 RC1 WordPress Playground instance (available within 35 minutes after the release is ready) to test the software directly in your browser without the need for a separate site or setup.
\n\n\n\n

The current target for the WordPress 6.8 release is April 15, 2025.  Get an overview of the 6.8 release cycle, and check the Make WordPress Core blog for 6.8-related posts in the coming weeks for further details.

\n\n\n\n

What’s in WordPress 6.8 RC1?

\n\n\n\n

Get a recap of WordPress 6.8’s highlighted features in the Beta 1 announcement.  For more technical information related to issues addressed since Beta 3, you can browse the following links:

\n\n\n\n\n\n\n\n

Want to look deeper into the details and technical notes for this release? These recent posts cover some of the latest updates:

\n\n\n\n\n\n\n\n

How you can contribute

\n\n\n\n

WordPress is open source software made possible by a passionate community of people collaborating on and contributing to its development.  The resources below outline various ways you can help the world’s most popular open source web platform, regardless of your technical expertise.

\n\n\n\n

Get involved in testing

\n\n\n\n

Testing for issues is critical to ensuring WordPress is performant and stable.  It’s also a meaningful way for anyone to contribute.  This detailed guide will walk you through testing features in WordPress 6.8.  For those new to testing, follow this general testing guide for more details on getting set up.

\n\n\n\n

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bug report.  You can also check your issue against a list of known bugs.

\n\n\n\n

Curious about testing releases in general?  Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

\n\n\n\n

Search for vulnerabilities

\n\n\n\n

From now until the final release of WordPress 6.8 (scheduled for April 15, 2025), the monetary reward for reporting new, unreleased security vulnerabilities is doubled.  Please follow responsible disclosure practices as detailed in the project’s security practices and policies outlined on the HackerOne page and in the security white paper.

\n\n\n\n

Update your theme or plugin

\n\n\n\n

For plugin and theme authors, your products play an integral role in extending the functionality and value of WordPress for all users.

\n\n\n\n

Thanks for continuing to test your themes and plugins with the WordPress 6.8 beta releases.  With RC1, you’ll want to conclude your testing and update the “Tested up to” version in your plugin’s readme file to 6.8.

\n\n\n\n

If you find compatibility issues, please post detailed information to the support forum.

\n\n\n\n

Help translate WordPress

\n\n\n\n

Do you speak a language other than English?  ¿Español?  Français?  Русский?  日本語? हिन्दी? বাংলা? मराठी?  You can help translate WordPress into more than 100 languages.  This release milestone (RC1) also marks the hard string freeze point of the 6.8 release cycle.

\n\n\n\n

An RC1 haiku

\n\n\n\n

March fades, nearly there,
Six-eight hums—a steady beat,
RC greets the world.

\n\n\n\n

Thank you to the following contributors for collaborating on this post: @joemcgill @benjamin_zekavica @courane01 @mkrndmane @audrasjb @areziaal @ankit-k-gupta @krupajnanda @bph.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Mar 2025 16:19:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Jeffrey Paul\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:35;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"Do The Woo Community: A Continued Saga About the Life of Blog Posts\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93306\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"https://dothewoo.io/blog/a-continued-saga-about-the-life-of-blog-posts/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:225:\"BobWP chats about the importance of adding content instead of removing it, expressing commitment to producing more podcasts, videos, and blog posts despite claims of blog irrelevance, valuing audience engagement over metrics.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Mar 2025 13:01:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:36;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:89:\"Do The Woo Community: On the Floor at CloudFest 2025 with Adam Weeks and Christian Taylor\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93275\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:88:\"https://dothewoo.io/on-the-floor-at-cloudfest-2025-with-adam-weeks-and-christian-taylor/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:226:\"Adam Weeks and Christian Taylor explore CloudFest, assessing booth designs and marketing strategies. They discuss visual engagement, effective messaging, and the significance of interactive experiences in attracting attendees.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 25 Mar 2025 07:46:41 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:37;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:70:\"Do The Woo Community: How AI is Reshaping Enterprise WordPress in 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=91953\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"https://dothewoo.io/blog/how-ai-is-reshaping-enterprise-wordpress-in-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:191:\"AI is transforming enterprise WordPress through coding tools and personalization, but poses risks requiring careful integration and oversight amidst evolving challenges and security concerns.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 24 Mar 2025 11:40:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:38;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:111:\"Gutenberg Times: Get ready for WordPress 6.8, Source of Truth, a book, and code with AI — Weekend Edition 322\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://gutenbergtimes.com/?p=38031\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:115:\"https://gutenbergtimes.com/get-ready-for-wordpress-6-8-source-of-truth-a-book-and-code-with-ai-weekend-edition-322/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:21287:\"

Hi, the spring is coming to Munich this weekend, or that’s what the forecast tells us. With temperatures around 18 °C / 64° F, I will spend a few hours outside on long walks in the Englisch Garden and possible get my bicycle working again. I am looking forward to getting away from the screens all together and having in-person conversations with my cousin and his wife. They are accomplished musicians and different kind of nerds.

\n\n\n
\n

🔖 What kind of activities are in your future and are they also determined by the weather like mine? Hit reply and let me know.

\n
\n\n\n

Yours, 💕
Birgit

\n\n\n\n

PS: I just started my travel preparation for WordCamp Europe. Want to meet me? bit.ly/WCEUMeetBirgit

\n\n\n\n\"\"\n\n\n\n\n\n\n\n

Developing Gutenberg and WordPress

\n\n\n\n

WordPress 6.8 Beta 3 was released on March 18, 2025, and it is ready for testing. If you need inspiration and instruction on how and what to test, the test team’s post is for you. Help Test WordPress 6.8.

\n\n\n\n
\n\n\n\n

Joe Dolson published the dev note on Changes to the .screen-reader-text class in WordPress 6.8 The .screen-reader-text class replaces the deprecated clip property with clip-path: inset(50%) for modern browser compatibility and accessibility improvements. Focus styles remain unchanged to ensure visibility during keyboard navigation. Developers should update themes and plugins using .screen-reader-text to align with these changes for future-proofing.

\n\n\n\n
\n\n\n\n

A group of contributors collaborated on the Source of Truth (WordPress 6.8). Learn everything about enhanced data views, query loops, and block interactions. Also about the more cohesive design experience through the Zoom Out editing approach, expanded style controls, and improved typography options. WordPress 6.8 is scheduled to be released on April 15, 2025

\n\n\n\n\"\"\n\n\n\n
\n\n\n\n

George Mamadashvili released Gutenberg 20.5 and the changelog is available on GitHub. Among the updates you’ll find

\n\n\n\n
    \n
  • the ability to create a new page from the button block added to a site navigation, (69368)
  • \n\n\n\n
  • the pages list in the site editor can now display hierarchical relationship similar to the current pages list page, (69550)
  • \n\n\n\n
  • developers can now control the modal size called via DataViews action functions (69302)
  • \n
\n\n\n\n
\n\n\n\n

Troy Chaplin published What’s new for developers? (March 2025) on the WordPress Developer blog. He covers Gutenberg 20.3 and 20.4 as well as updates around the WordPress 6.8 release cycle.

\n\n\n\n
\n\n\n\n

As one of the first to cover the upcoming major release, Nithin Sreeraj at WP-Content posted WordPress 6.8 Expected Features and Changes.

\n\n\n\n
\n

🎙️ Latest episode: Gutenberg Changelog 116 – WordPress 6.8, Source of Truth, Field Guide, Gutenberg 20.5 and 20.6 with special guest JC Palmes, WebDev Studios

\n\n\n\n\"\"\n
\n\n\n\n

Plugins, Themes, and Tools for #nocode site builders and owners

\n\n\n\n

Bhargav (Bunty) Bhandari takes building in public quite literally. This time he created a Poll block for WordPress. It allows you to create interactive polls directly within the WordPress Block Editor, with design tools, voting options and results in real time. The code is available on GitHub until he submits it to the WordPress repository.

\n\n\n\n\"\"\n\n\n\n

Jamie Marsland runs an always friendly and welcoming WordPress Gutenberg Facebook group! The description read: “A community for Gutenberg users to learn, share, and explore tips on building WordPress websites using the Blocks Editor.” It’s a private group, too. Marsland wrote: “Whether you need help with WordPress editing or want to share your knowledge, we’d love to have you.”

\n\n\n\n\"\"\n\n\n\n

Theme Development for Full Site Editing and Blocks

\n\n\n\n

Some people like to learn via videos; other people prefer books.

\n\n\n\n

Koji Kuno, a web developer from Japan and contributor to WordPress, published a book called Creating a Website with Twenty-Twenty-Five in late 2024. This book is designed for beginners who want to learn how to create websites using WordPress 6.7 and its newest theme, Twenty-Twenty-Five.

\n\n\n\n

The book starts by explaining the basics of WordPress, including how its block themes, block editor, and site editor work. Once readers understand these concepts, Kuno dives deeper into the Twenty-Twenty-Five theme. He provides a detailed overview of the theme’s files, layout structures, style options for blocks and fonts, and how templates and patterns connect to each other.

\n\n\n\n

Kuno also includes step-by-step guides for building two types of websites: a blog site and a coffee shop site. He uses clear explanations and helpful graphics to make everything easy to follow, even for beginners. While most of the instructions focus on using WordPress’s site editor, Kuno also touches on the underlying code for certain features, such as supporting post formats.

\n\n\n\n

Overall, the book strikes a good balance between practical tutorials and technical insights. It’s an excellent resource for anyone looking to learn website design with WordPress in an approachable way.

\n\n\n\n\"\"Screenshot of Patterns and how they fit into the template structure of Twenty-Twenty-Five. (Page 44) \n\n\n\n
\n\n\n\n

Elliot Richmond experimented with Cursor AI to build a Block Theme. You can follow along on YouTube and see he is using Cursor AI for refactoring and code generation, about the challenges and results of AI-generated block themes, and some lesson learned turned into best practices .

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

In his post Additional Block Styles for Child Themes, Silvan Hagen shares how you can block styles by copying the relevant CSS file from the parent theme to the child theme and making adjustments. Hagen also provides a code snippet to append custom block styles from the child theme without overwriting the parent styles, by adding a function to the child theme’s functions.php file that enqueues the custom styles.

\n\n\n\n

 “Keeping up with Gutenberg – Index 2025” 
A chronological list of the WordPress Make Blog posts from various teams involved in Gutenberg development: Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. The previous years are also available: 2020 | 2021 | 2022 | 2023 | 2024

\n\n\n\n

Building Blocks and Tools for the Block editor

\n\n\n\n

In his post, Local WordPress Development Workflows Using Studio , Nick Diego walks you through two development workflows using Studio by WordPress.com. He covers using Git Deployments to WordPress.com for your newly developed plugin or theme. In the second part of the article you’ll learn how to structure a complete website build, share a preview with clients and colleagues, and sync to a live site on WordPress.com.

\n\n\n\n\"Using\n\n\n\n
\n\n\n\n

Muhammad Muhsin, developer at Awesome Motive, used the WordPress Interactivity API to build a simple Stopwatch block. He is also working on a tutorial to go along with it. Meanwhile, you can study his code on GitHub next to the documentation of the Interactivity API.

\n\n\n\n
\n\n\n\n

In this week’s live stream, How to build incredible WordPress Blocks with Cursor AI, Ryan Welcher and Nick Diego explored how AI can help you create great WordPress blocks. They shared useful tips and cool AI tools to improve your block-building skills and make things easier. Don’t miss this chance to discover new possibilities for your WordPress site!

\n\n\n\n\"\"\n\n\n\n
\n\n\n\n

The @wordpress/data package introduces a data layer to the WordPress Block Editor, enabling efficient state management and interaction with the editor’s ecosystem.

\n\n\n\n

In two of his live streams, JuanMa Garrido embarked into the depth of the data package and discuss how to work with the data package. In Data in the Block Editor, part one, he explores the various stores, how to retrieve and update store data and dispatch actions. In Data In the Block Editor, part two, Garrido continues to work through the block editor documentation and the date layer course on learn.WordPress.org

\n\n\n
\n
\n
\n
\n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

In his live stream, Ryan Welcher walked his viewers through the work necessary to add tests to his Advanced Query Loop plugin so developers who want to extend on the plugin can test custom hooks.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

On his video channel, Jon Bossenger streams on his adventure using AI for coding. You find out with him what works and what doesn’t. In his latest video Let’s Vibe, he wanted to find out what Vibe Coding is all about and if it actually can produce functional software.

\n\n\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n

Need a plugin .zip from Gutenberg’s master branch?
Gutenberg Times provides daily build for testing and review.

\n\n\n\n

Now also available via WordPress Playground. There is no need for a test site locally or on a server. Have you been using it? Email me with your experience

\n\n\n\n

\"GitHub

\n\n\n\n

Questions? Suggestions? Ideas?
Don’t hesitate to send them via email or
send me a message on WordPress Slack or Twitter @bph.

\n\n\n\n
\n\n\n\n

For questions to be answered on the Gutenberg Changelog,
send them to changelog@gutenbergtimes.com

\n\n\n\n
\n\n\n\n

Featured Image: Garage door and wall with rectangles of various colors painted on them for decoration Photo by Marcus Burnette found on WordPress.org/photos

\n\n\n\n
\n\n\n\n

Don’t want to miss the next Weekend Edition?

\n\n\n

We hate spam, too, and won’t give your email address to anyone
except Mailchimp to send out our Weekend Edition

Thanks for subscribing.
\n\n\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 22 Mar 2025 05:29:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:39;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"Matt: Automattic Operating System\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"https://ma.tt/?p=140810\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"https://ma.tt/2025/03/aos/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:5146:\"

I was interviewed by Inc magazine for almost two hours where we covered a lot of great topics for entrepreneurs but almost none of it made it into the weird hit piece they published, however since both the journalist and I had recording of the interview I’ve decided to adapt some parts of it into a series of blog posts, think of it as the Inc Article That Could Have Been. This bit talks about some of the meta-work that myself and the Bridge team at Automattic do.

At Automattic, the most important product I work on is the company itself. I’ve started referring to it as the “Automattic Operating System.” Not in the technical sense like Linux, but the meta layer the company runs on. The company isn’t WordPress.com or Beeper or Pocket Casts or any one thing. I’m responsible for the culture of the people who build those things, building the things that build those things. It’s our hiring, our HR processes, our expenses, the onboarding docs; it’s all of the details that make up the employee experience — all the stuff that shapes every employee’s day-to-day experience.

\n\n\n\n

Take expense reports. If you’ve got to spend two hours taking pictures of receipts and something like that, that’s a waste of time. You’re not helping a customer there. We switched to a system where everyone just gets a credit card. It does all the reporting and accounting stuff automatically. You just swipe the card and it just automatically files an expense report. Sometimes there’s an exception and you have to work with the accounting rules, but it just works and automates the whole process most of the time.

\n\n\n\n

Another commonly overlooked detail is the offer letter. We think so much about the design of our websites and our products. We have designers work on that and we put a lot of care and thought into it. But I realized we didn’t have the same attention to detail on our offer letter. When you think about it, getting an offer letter from a company and deciding to take it is a major life decision, something you only do a handful of times in your life.  This is one of the things that determines your life path. Our offer letter was just made by attorneys and HR. No designer had looked at it right. We hadn’t really thought about it from a product experience point of view. And so it was just this, generic document with bad typography and not great design. But it’s important, so one of the things we did was redesign it. Now it has a nice letterhead, great typography, and it’s designed for the end user.

I realized that the salary and stuff was buried in paragraph two. It was just a small thing in the document! Well, what’s key when you’re deciding whether to take a job? Start date, salary, you know, that sort of thing, so we put the important parts at the very top.

\n\n\n\n

And then there’s the legal language. All the legal stuff, which is different in every country. We have people in 90 countries, so there’s all the legal stuff that goes in there. And then it has this nudge inspired by the behavioral economics book, Predictably Irrational.

There’s the story about how, if you have an ethics statement above where you sign the test or something, people cheat less. So I thought, well, what’s our equivalent of that? We have the Automattic Creed. It’s an important part of our culture. So we put the creed in, it says

\n\n\n\n
\n

I will never stop learning. I won’t just work on things that are assigned to me. I know there’s no such thing as a status quo. I will build our business sustainably through passionate and loyal customers. I will never pass up an opportunity to help out a colleague, and I’ll remember the days before I knew everything. I am more motivated by impact than money, and I know that Open Source is one of the most powerful ideas of our generation. I will communicate as much as possible, because it’s the oxygen of a distributed company. I am in a marathon, not a sprint, and no matter how far away the goal is, the only way to get there is by putting one foot in front of another every day. Given time, there is no problem that’s insurmountable.

\n
\n\n\n\n

It’s not legally binding, but it’s written in the first person, you read it and you kind of identify with it and then you sign below that. We want people who work at the company who identify with our core values and our core values really are in the creed.

\n\n\n\n

These sorts of things are key to our culture. And they’re universal. Again, we have people from over 90 countries. These are very different cultures, yes, and very different historical backgrounds and cultural makeups. But what’s universal? We have our philosophies that we apply every day regardless of where you were born or where you work.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 21 Mar 2025 22:15:05 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Matt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:40;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"Gravatar: Digital Business Card Examples With Professional Flair\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3083\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"https://blog.gravatar.com/2025/03/21/digital-business-card-examples/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:19747:\"

Looking for digital business card examples that actually work? Networking has changed, but the need to make a strong first impression hasn’t, and business cards are a big part of it. So, if you’re looking for inspiration, we’ll show you real digital business cards from various industries that successfully blend professional presentation with practical functionality.

\n\n\n\n

Our list includes sleek corporate profiles and creative designs for artists and freelancers, each a great example of how to make your information accessible while maintaining your personal brand. 

\n\n\n\n

By the end of this article, you’ll have actionable ideas for creating your own digital business card. And the best part? You can set up a free, customizable digital business card in minutes using Gravatar – no coding or design skills required.

\n\n\n\n

Universal Digital Business Cards with Gravatar

\n\n\n\n\"Ronnie\n\n\n\n

Looking at my Gravatar profile, you can see how it functions as a complete digital business card that travels with me across the web. I’ve personally included a professional headshot, custom banner image, some interesting images, and verified links to all my social profiles. These sections are completely customizable, and what you include depends entirely on your goals. 

\n\n\n\n

What makes this especially useful for networking is the QR code functionality. When meeting someone at a conference or event, I can quickly pull up my Gravatar profile QR code from my phone’s digital wallet. With one quick scan, my new contact instantly has access to all my professional information.

\n\n\n\n\"Adding\n\n\n\n
\n

Anyone who scans my QR code can immediately connect with me through multiple channels – they can view my contact details, send me money, or browse through my featured photos for a more personal touch. No more fumbling with paper cards or manually typing contact info into phones.

\n
\n\n\n\n

As a technical professional, my Gravatar profile is quite literally the foundation of my online presence. When I contribute to GitHub, post on Stack Overflow, or communicate through Slack, my Gravatar profile appears automatically, helping me build a more recognizable personal brand.

\n\n\n\n\"Ronnie\n\n\n\n

The best part? I only need to update my information in one place. If I change roles or add new contact methods, updating my Gravatar profile instantly refreshes my presence across all integrated platforms – saving time and ensuring consistency.

\n\n\n\n

Want to create your own universal digital business card? Sign up at Gravatar.com using just your email address. It takes minutes to set up but provides lasting professional benefits everywhere you go online.

\n\n\n\n\"\"\n\n\n\n

Industry-Specific Showcases: Real Estate to Tech Professionals

\n\n\n\n

Real estate agents face unique networking challenges – they need to connect instantly with potential buyers and showcase properties efficiently. Digital business cards can help in this process by offering scannable QR codes that provide immediate connections with house hunters.

\n\n\n\n

Take Liz Nitz’s digital business card as an example. 

\n\n\n\n\"Liz\n\n\n\n

As a Bozeman-based real estate agent, her Gravatar profile functions as a powerful lead generation tool. When potential clients scan her QR code, they gain instant access to her contact information plus direct links to her real estate website, where current property listings are just a tap away. This approach eliminates friction in the buying process – no typing long URLs or searching for contact details.

\n\n\n\n

The benefits go beyond real estate into technical fields where showing your expertise is extremely important. Tech professionals use digital business cards to highlight their portfolios, technical skills, and ongoing projects.

\n\n\n\n

Simon Willison, founder of Datasette, demonstrates this approach effectively through his GitHub profile. 

\n\n\n\n\"Simon\n\n\n\n

His presence includes links to his technical blog and personal projects, creating a comprehensive snapshot of his expertise. Visitors can easily contact him while exploring his work samples – all from a single profile.

\n\n\n\n

What makes this especially powerful for tech professionals is GitHub’s integration with Gravatar. When developers update their Gravatar profile picture, those changes automatically appear on GitHub and ensure a consistent, professional presence without requiring multiple updates.

\n\n\n\n

For many industries, digital business cards eliminate the limitations of paper while adding dynamic elements like direct portfolio access, property listings, and instant contact options – turning a simple introduction into a potential business opportunity.

\n\n\n\n

Creative examples for freelancers and artists

\n\n\n\n

For creative professionals, first impressions matter tremendously. Digital business cards give artists and freelancers a powerful advantage – the ability to showcase their actual work during initial meetings rather than just talking about it.

\n\n\n\n

Jonathan H. Kantor’s digital business card perfectly demonstrates this advantage. 

\n\n\n\n\"Jonathan\n\n\n\n

As an illustrator at Talking Bull Games, his Gravatar profile displays samples of his artwork directly on the card itself. New contacts can immediately see his illustration style and quality before clicking through to his full portfolio website. This visual introduction creates an instant connection that paper cards simply cannot match.

\n\n\n\n

Similarly, Shannon Cutts uses her digital business card to establish her credibility as a freelance writer. 

\n\n\n\n\"Shannon\n\n\n\n

Her profile links directly to her writing samples and service pages, allowing potential clients to quickly assess her style and expertise. This immediate access to her work helps her stand out in competitive pitching situations.

\n\n\n\n

Both Jonathan and Shannon have enhanced their cards with integrated QR codes connected to payment systems. This smart addition means that when someone appreciates their work, they can commission or purchase it on the spot by sending payment directly to the artist’s designated eWallet. No invoicing delays or payment friction – just a seamless transaction from introduction to sale, all through a digital business card.

\n\n\n\n

Corporate digital cards that mean business

\n\n\n\n

Corporate professionals require business cards that convey expertise, professionalism, and comprehensive information. Thomas McCorry’s digital business card exemplifies this approach perfectly.

\n\n\n\n\"Thomas\n\n\n\n

His Gravatar profile is like a mini-CV, with a detailed bio section outlining his professional history and accomplishments. The card includes direct links to his personal website, portfolio of work, and LinkedIn profile – all organized in a clean, accessible format alongside professional photographs.

\n\n\n\n

This structured approach gives potential clients and contacts an immediate sense of Thomas’s experience and capabilities at a glance. Rather than trying to cram limited information onto a paper card, his digital version provides depth without overwhelming the viewer. Someone meeting Thomas can quickly understand his background and then access more detailed supporting materials about specific projects or expertise areas with a single tap.

\n\n\n\n

Charles Leisure takes corporate networking a step further by connecting a QR code to his digital business card. 

\n\n\n\n\"Charles\n\n\n\n

This practical addition allows him to instantly share his complete professional profile during meetings or conferences by simply opening the QR code stored in his Apple or Google Wallet. Contacts can scan the code with their smartphone and immediately have all his information saved – eliminating the traditional business card exchange and ensuring his information never gets lost in a pocket or briefcase.

\n\n\n\n

How to Create Your Perfect Digital Business Card with Gravatar

\n\n\n\n

Creating a professional digital business card doesn’t require design skills or technical expertise. Anyone can set up a functional, customizable card like the examples showcased in this article by signing up for a free Gravatar profile.

\n\n\n\n

Getting started takes just minutes, and the process is straightforward:

\n\n\n\n
    \n
  1. Sign up using your email address – Visit Gravatar.com and click “Get Started Now.” Enter your email address and follow the verification steps. If you already have a WordPress.com account, you can connect it to speed up the process.
  2. \n
\n\n\n\n\"Creating\n\n\n\n

\n\n\n\n
    \n
  1. Add a professional headshot – Upload a high-quality photo that represents you well. The image will be cropped to a square format, so choose one where your face is clearly visible. For business purposes, opt for good lighting and a neutral background.
  2. \n
\n\n\n\n\"Adding\n\n\n\n
    \n
  1. Insert verified links and social media profiles – Add your website, portfolio, and social media accounts. Gravatar verifies these connections, adding credibility to your profiles with a verification badge that builds trust with new contacts.
  2. \n
\n\n\n\n\"Adding\n\n\n\n
    \n
  1. Add a professional bio – Craft a concise, compelling description that highlights your expertise and unique value. Think of this as your elevator pitch in written form – clear, engaging, and focused on what makes you stand out.
  2. \n
\n\n\n\n\"Adding\n\n\n\n
    \n
  1. Add relevant images – Beyond your profile picture, you can add additional images that showcase your work, which is especially helpful for creative professionals wanting to display their portfolio directly on their card.
  2. \n
\n\n\n\n\"Adding\n\n\n\n
    \n
  1. Create a QR code for easy profile sharing – Once your profile is complete, you can generate a QR code that links directly to your digital business card. This code can be added to your Apple or Google Wallet for easy sharing during in-person networking events.
  2. \n
\n\n\n\n\"Generating\n\n\n\n
    \n
  1. Customize the style and feel – Personalize your digital business card with custom backgrounds, banner images, and button styles that align with your personal or corporate branding.
  2. \n
\n\n\n\n\"Customize\n\n\n\n

With these seven simple steps, you’ll have a professional digital business card that works across platforms and makes networking more efficient and effective.

\n\n\n\n

Customization features and design possibilities

\n\n\n\n

Gravatar offers extensive customization options that let you create a truly personalized digital business card:

\n\n\n\n
    \n
  • Background options: Add unique solid colors or image backgrounds that align with your personal aesthetic or company branding. 
  • \n\n\n\n
  • Custom header/banner images: Feature your logo, portfolio samples, or professional photography that represents your work. 
  • \n
\n\n\n\n\"Header\n\n\n\n
    \n
  • Button style customization: Match link buttons to your overall design theme for a cohesive, professional appearance. 
  • \n
\n\n\n\n\"Customizing\n\n\n\n
    \n
  • Section rearrangement: Position the most important elements (like payment options) at the top of your profile for better usability. 
  • \n
\n\n\n\n\"Rearranging\n\n\n\n
    \n
  • Custom domains: Transform your profile from username.gravatar.com to yourname.social (or other extensions like .bio, .contact, and more). 
  • \n
\n\n\n\n

Privacy is also thoughtfully integrated into the design system. Gravatar gives you control over which information remains public (like your avatar and display name) and which stays private (such as phone numbers or birth dates). 

\n\n\n\n\"Adjusting\n\n\n\n

When a new site or app requests access to your non-public information, Gravatar will ask for your confirmation first.

\n\n\n\n

This privacy-first approach highlights one of Gravatar’s main strengths – functioning as a universal profile. Update your information once, and those changes instantly sync across all integrated platforms like WordPress, GitHub, and Slack, making your digital business card both customizable and remarkably efficient.

\n\n\n\n

Start Building Your Professional Digital Presence

\n\n\n\n

A free Gravatar profile offers the perfect solution for professionals seeking to establish a consistent online presence. More than just a digital business card, it functions as your unified identity across the web, appearing automatically on compatible platforms whenever you interact.

\n\n\n\n

Getting started takes just minutes. Visit Gravatar.com, enter your email address, and follow the simple verification steps to create your profile. Add a professional photo, customize your information, and start connecting your social accounts. The process is straightforward and designed for users of all technical skill levels.

\n\n\n\n

What truly sets Gravatar apart is its automatic synchronization capability. Once set up, your digital business card will appear seamlessly across WordPress.com, GitHub, Stack Overflow, and numerous other integrated platforms. 

\n\n\n\n

Start building your professional digital presence with Gravatar today!

\n\n\n\n\"\"\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 21 Mar 2025 15:26:48 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:41;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:115:\"Do The Woo Community: Introducing the Content Sparks Hosting Team: Derek Hanson, Rae Morey, Robbie Adair and BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93144\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:110:\"https://dothewoo.io/introducing-the-content-sparks-hosting-team-derek-hanson-rae-morey-robbie-adair-and-bobwp/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:210:\"In the latest episode of Content Sparks, BobWP introduces three monthly hosts: Robbie Adair on content and AI, Rae Morey on all things media, and Derek Hansen on content management, promising valuable insights.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 21 Mar 2025 13:24:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:42;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"Do The Woo Community: Do the Woo Friday Shares, March 21, 2025 v11\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93186\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"https://dothewoo.io/blog/do-the-woo-friday-shares-march-21-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:70:\"Our curated content across the Woo and WordPress community and beyond.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 21 Mar 2025 10:47:01 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:43;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:122:\"Do The Woo Community: Discovering the Impact of i2Coalition at Cloudfest with Christian Dawson, David Snead and James Webb\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93118\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:120:\"https://dothewoo.io/discovering-the-impact-of-i2coalition-at-cloudfest-with-christian-dawson-david-sneak-and-james-webb/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:232:\"At CloudFest 2025, experts from i2Coalition and BigScoots discuss the importance of collaboration in the hosting industry, addressing legislative challenges while emphasizing WordPress\'s role in supporting small businesses globally.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 21 Mar 2025 09:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:44;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:95:\"Do The Woo Community: From Founding to Funding, Marieke van de Rakt’s Entrepreneurial Journey\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=92989\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:90:\"https://dothewoo.io/from-founding-to-funding-marieke-van-de-rakts-entrepreneurial-journey/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:229:\"In this episode, Jonathan Wold and Tammy Lister chat with Marieke van de Rakt, co-founder of Progress Planner. They discuss her teaching, investment philosophy, and insights on e-commerce challenges and open source opportunities.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 20 Mar 2025 13:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:45;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:104:\"Do The Woo Community: Thoughts on CloudFest, Rollercoasters and WP Cloud’s Strategy with Elise Prather\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93074\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:99:\"https://dothewoo.io/thoughts-on-cloudfest-rollercoasters-and-wp-clouds-strategy-with-elise-prather/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:236:\"Elise Prather, VP at Automattic\'s WP Cloud, shares her immersive experience at CloudFest, highlighting its vast size, unique networking opportunities, and the customizable hosting solutions WP Cloud offers for companies and freelancers.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 20 Mar 2025 09:33:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:46;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:15:\"Matt: Radiohead\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"https://ma.tt/?p=140773\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://ma.tt/2025/03/radiohead/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:785:\"

It’s so funny that my random re-engagement with Radiohead re-emergence coincides with them doing a new entity that might mean something. I did a poll on Twitter and people preferred OK Computer to Kid A 78%!

\n\n\n\n

Grok told me: “The band has recently registered a new limited liability partnership (LLP) named RHEUK25, which includes all five members—Thom Yorke, Jonny Greenwood, Colin Greenwood, Ed O’Brien, and Philip Selway. This move is notable because Radiohead has historically created similar business entities before announcing new albums, tours, or reissues.”

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 19 Mar 2025 23:06:02 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Matt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:47;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:98:\"Do The Woo Community: Tara Claeys on the Benefits of Niching Down to School and Nonprofit Websites\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=92779\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:97:\"https://dothewoo.io/tara-claeys-on-the-benefits-of-niching-down-to-school-and-nonprofit-websites/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:230:\"In this episode of WP Agency Tracks, hosts Marcus Burnett and Cami MacNamara discuss the benefits and challenges of niching down with guest Tara Claeys, emphasizing her focus on schools and nonprofits for greater business success.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 19 Mar 2025 14:04:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:48;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"Do The Woo Community: Ronnie Burt Chats About Gravatar’s Evolution and CloudFest Experiences\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"https://dothewoo.io/?p=93052\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:90:\"https://dothewoo.io/ronnie-burt-chats-about-gravatars-evolution-and-cloudfest-experiences/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:189:\"At CloudFest, Ronnie Burt discusses Gravatar\'s history, its integration with WordPress, recent spikes in usage from platforms like ChatGPT, and the importance of digital identity ownership.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 19 Mar 2025 10:30:38 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:49;a:6:{s:4:\"data\";s:13:\"\n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:65:\"Do The Woo Community: The Winners of the CloudFest Hackathon 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://dothewoo.io/?post_type=blog&p=93009\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://dothewoo.io/blog/the-winners-of-the-cloudfest-hackathon-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:210:\"The CloudFest Hackathon 2025 celebrated innovation in open-source development, featuring diverse awards and emphasizing inclusivity within the tech community, with Accessible Infographics as the overall winner.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 18 Mar 2025 15:57:07 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";O:48:\"WpOrg\\Requests\\Utility\\CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:9:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Wed, 09 Apr 2025 23:13:38 GMT\";s:12:\"content-type\";s:8:\"text/xml\";s:13:\"last-modified\";s:29:\"Wed, 09 Apr 2025 23:00:29 GMT\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:16:\"content-encoding\";s:2:\"br\";s:7:\"alt-svc\";s:19:\"h3=\":443\"; ma=86400\";s:4:\"x-nc\";s:9:\"HIT ord 1\";}}s:5:\"build\";i:1744240221;s:21:\"cache_expiration_time\";i:1744283618;s:23:\"__cache_expiration_time\";i:1744283618;}','off'), -(152,'_transient_timeout_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1744283618','off'), -(153,'_transient_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1744240418','off'), -(154,'_transient_timeout_dash_v2_88ae138922fe95674369b1cb3d215a2b','1744283618','off'), -(155,'_transient_dash_v2_88ae138922fe95674369b1cb3d215a2b','','off'), (156,'wp-graphql_allow_tracking','yes','auto'), (157,'wp-graphql_tracking_notice','hide','auto'), (158,'wp-graphql_tracking_last_send','1744240419','auto'), -(159,'_site_transient_timeout_popular_importers_968d0fadeded9636c5b63190aaec278f','1744413228','off'), -(160,'_site_transient_popular_importers_968d0fadeded9636c5b63190aaec278f','a:2:{s:9:\"importers\";a:7:{s:7:\"blogger\";a:4:{s:4:\"name\";s:7:\"Blogger\";s:11:\"description\";s:54:\"Import posts, comments, and users from a Blogger blog.\";s:11:\"plugin-slug\";s:16:\"blogger-importer\";s:11:\"importer-id\";s:7:\"blogger\";}s:9:\"wpcat2tag\";a:4:{s:4:\"name\";s:29:\"Categories and Tags Converter\";s:11:\"description\";s:71:\"Convert existing categories to tags or tags to categories, selectively.\";s:11:\"plugin-slug\";s:18:\"wpcat2tag-importer\";s:11:\"importer-id\";s:10:\"wp-cat2tag\";}s:11:\"livejournal\";a:4:{s:4:\"name\";s:11:\"LiveJournal\";s:11:\"description\";s:46:\"Import posts from LiveJournal using their API.\";s:11:\"plugin-slug\";s:20:\"livejournal-importer\";s:11:\"importer-id\";s:11:\"livejournal\";}s:11:\"movabletype\";a:4:{s:4:\"name\";s:24:\"Movable Type and TypePad\";s:11:\"description\";s:62:\"Import posts and comments from a Movable Type or TypePad blog.\";s:11:\"plugin-slug\";s:20:\"movabletype-importer\";s:11:\"importer-id\";s:2:\"mt\";}s:3:\"rss\";a:4:{s:4:\"name\";s:3:\"RSS\";s:11:\"description\";s:30:\"Import posts from an RSS feed.\";s:11:\"plugin-slug\";s:12:\"rss-importer\";s:11:\"importer-id\";s:3:\"rss\";}s:6:\"tumblr\";a:4:{s:4:\"name\";s:6:\"Tumblr\";s:11:\"description\";s:53:\"Import posts & media from Tumblr using their API.\";s:11:\"plugin-slug\";s:15:\"tumblr-importer\";s:11:\"importer-id\";s:6:\"tumblr\";}s:9:\"wordpress\";a:4:{s:4:\"name\";s:9:\"WordPress\";s:11:\"description\";s:96:\"Import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.\";s:11:\"plugin-slug\";s:18:\"wordpress-importer\";s:11:\"importer-id\";s:9:\"wordpress\";}}s:10:\"translated\";b:0;}','off'), -(162,'_site_transient_update_plugins','O:8:\"stdClass\":5:{s:12:\"last_checked\";i:1744240431;s:8:\"response\";a:0:{}s:12:\"translations\";a:0:{}s:9:\"no_update\";a:3:{s:9:\"hello.php\";O:8:\"stdClass\":10:{s:2:\"id\";s:25:\"w.org/plugins/hello-dolly\";s:4:\"slug\";s:11:\"hello-dolly\";s:6:\"plugin\";s:9:\"hello.php\";s:11:\"new_version\";s:5:\"1.7.2\";s:3:\"url\";s:42:\"https://wordpress.org/plugins/hello-dolly/\";s:7:\"package\";s:60:\"https://downloads.wordpress.org/plugin/hello-dolly.1.7.3.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-256x256.jpg?rev=2052855\";s:2:\"1x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-128x128.jpg?rev=2052855\";}s:7:\"banners\";a:2:{s:2:\"2x\";s:67:\"https://ps.w.org/hello-dolly/assets/banner-1544x500.jpg?rev=2645582\";s:2:\"1x\";s:66:\"https://ps.w.org/hello-dolly/assets/banner-772x250.jpg?rev=2052855\";}s:11:\"banners_rtl\";a:0:{}s:8:\"requires\";s:3:\"4.6\";}s:41:\"wordpress-importer/wordpress-importer.php\";O:8:\"stdClass\":10:{s:2:\"id\";s:32:\"w.org/plugins/wordpress-importer\";s:4:\"slug\";s:18:\"wordpress-importer\";s:6:\"plugin\";s:41:\"wordpress-importer/wordpress-importer.php\";s:11:\"new_version\";s:5:\"0.8.4\";s:3:\"url\";s:49:\"https://wordpress.org/plugins/wordpress-importer/\";s:7:\"package\";s:67:\"https://downloads.wordpress.org/plugin/wordpress-importer.0.8.4.zip\";s:5:\"icons\";a:2:{s:2:\"1x\";s:63:\"https://ps.w.org/wordpress-importer/assets/icon.svg?rev=2791650\";s:3:\"svg\";s:63:\"https://ps.w.org/wordpress-importer/assets/icon.svg?rev=2791650\";}s:7:\"banners\";a:1:{s:2:\"1x\";s:72:\"https://ps.w.org/wordpress-importer/assets/banner-772x250.png?rev=547654\";}s:11:\"banners_rtl\";a:0:{}s:8:\"requires\";s:3:\"5.2\";}s:25:\"wp-graphql/wp-graphql.php\";O:8:\"stdClass\":10:{s:2:\"id\";s:24:\"w.org/plugins/wp-graphql\";s:4:\"slug\";s:10:\"wp-graphql\";s:6:\"plugin\";s:25:\"wp-graphql/wp-graphql.php\";s:11:\"new_version\";s:5:\"2.1.1\";s:3:\"url\";s:41:\"https://wordpress.org/plugins/wp-graphql/\";s:7:\"package\";s:53:\"https://downloads.wordpress.org/plugin/wp-graphql.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:63:\"https://ps.w.org/wp-graphql/assets/icon-256x256.png?rev=3111985\";s:2:\"1x\";s:63:\"https://ps.w.org/wp-graphql/assets/icon-128x128.png?rev=3111985\";}s:7:\"banners\";a:2:{s:2:\"2x\";s:66:\"https://ps.w.org/wp-graphql/assets/banner-1544x500.png?rev=3111985\";s:2:\"1x\";s:65:\"https://ps.w.org/wp-graphql/assets/banner-772x250.png?rev=3111985\";}s:11:\"banners_rtl\";a:0:{}s:8:\"requires\";s:3:\"6.0\";}}s:7:\"checked\";a:3:{s:9:\"hello.php\";s:5:\"1.7.2\";s:41:\"wordpress-importer/wordpress-importer.php\";s:5:\"0.8.4\";s:25:\"wp-graphql/wp-graphql.php\";s:5:\"2.1.1\";}}','off'), +(162,'_site_transient_update_plugins','O:8:\"stdClass\":5:{s:12:\"last_checked\";i:1753995795;s:8:\"response\";a:0:{}s:12:\"translations\";a:0:{}s:9:\"no_update\";a:2:{s:9:\"hello.php\";O:8:\"stdClass\":10:{s:2:\"id\";s:25:\"w.org/plugins/hello-dolly\";s:4:\"slug\";s:11:\"hello-dolly\";s:6:\"plugin\";s:9:\"hello.php\";s:11:\"new_version\";s:5:\"1.7.2\";s:3:\"url\";s:42:\"https://wordpress.org/plugins/hello-dolly/\";s:7:\"package\";s:60:\"https://downloads.wordpress.org/plugin/hello-dolly.1.7.3.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-256x256.jpg?rev=2052855\";s:2:\"1x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-128x128.jpg?rev=2052855\";}s:7:\"banners\";a:2:{s:2:\"2x\";s:67:\"https://ps.w.org/hello-dolly/assets/banner-1544x500.jpg?rev=2645582\";s:2:\"1x\";s:66:\"https://ps.w.org/hello-dolly/assets/banner-772x250.jpg?rev=2052855\";}s:11:\"banners_rtl\";a:0:{}s:8:\"requires\";s:3:\"4.6\";}s:25:\"wp-graphql/wp-graphql.php\";O:8:\"stdClass\":10:{s:2:\"id\";s:24:\"w.org/plugins/wp-graphql\";s:4:\"slug\";s:10:\"wp-graphql\";s:6:\"plugin\";s:25:\"wp-graphql/wp-graphql.php\";s:11:\"new_version\";s:5:\"2.3.3\";s:3:\"url\";s:41:\"https://wordpress.org/plugins/wp-graphql/\";s:7:\"package\";s:59:\"https://downloads.wordpress.org/plugin/wp-graphql.2.3.3.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:63:\"https://ps.w.org/wp-graphql/assets/icon-256x256.png?rev=3111985\";s:2:\"1x\";s:63:\"https://ps.w.org/wp-graphql/assets/icon-128x128.png?rev=3111985\";}s:7:\"banners\";a:2:{s:2:\"2x\";s:66:\"https://ps.w.org/wp-graphql/assets/banner-1544x500.png?rev=3111985\";s:2:\"1x\";s:65:\"https://ps.w.org/wp-graphql/assets/banner-772x250.png?rev=3111985\";}s:11:\"banners_rtl\";a:0:{}s:8:\"requires\";s:3:\"6.0\";}}s:7:\"checked\";a:2:{s:9:\"hello.php\";s:5:\"1.7.2\";s:25:\"wp-graphql/wp-graphql.php\";s:5:\"2.3.3\";}}','off'), (163,'_site_transient_wp_plugin_dependencies_plugin_data','a:0:{}','off'), (164,'recently_activated','a:1:{s:41:\"wordpress-importer/wordpress-importer.php\";i:1744240487;}','off'), (165,'wp_calendar_block_has_published_posts','1','auto'), -(166,'category_children','a:0:{}','auto'); +(166,'category_children','a:0:{}','auto'), +(171,'db_upgraded','','on'), +(172,'_site_transient_timeout_browser_ce69b851c4edc7eebfb3998aa94a7157','1754416764','off'), +(173,'_site_transient_browser_ce69b851c4edc7eebfb3998aa94a7157','a:10:{s:4:\"name\";s:6:\"Chrome\";s:7:\"version\";s:9:\"138.0.0.0\";s:8:\"platform\";s:9:\"Macintosh\";s:10:\"update_url\";s:29:\"https://www.google.com/chrome\";s:7:\"img_src\";s:43:\"http://s.w.org/images/browsers/chrome.png?1\";s:11:\"img_src_ssl\";s:44:\"https://s.w.org/images/browsers/chrome.png?1\";s:15:\"current_version\";s:2:\"18\";s:7:\"upgrade\";b:0;s:8:\"insecure\";b:0;s:6:\"mobile\";b:0;}','off'), +(174,'_site_transient_timeout_php_check_e70f383f6a98929d6e0bd66e58f51173','1754416764','off'), +(175,'_site_transient_php_check_e70f383f6a98929d6e0bd66e58f51173','a:5:{s:19:\"recommended_version\";s:3:\"8.3\";s:15:\"minimum_version\";s:6:\"7.2.24\";s:12:\"is_supported\";b:1;s:9:\"is_secure\";b:1;s:13:\"is_acceptable\";b:1;}','off'), +(176,'can_compress_scripts','0','on'), +(177,'_site_transient_timeout_community-events-05e36848b79a837596feb55850c271c3','1753855165','off'), +(178,'_site_transient_community-events-05e36848b79a837596feb55850c271c3','a:4:{s:9:\"sandboxed\";b:0;s:5:\"error\";N;s:8:\"location\";a:1:{s:2:\"ip\";s:13:\"169.150.249.0\";}s:6:\"events\";a:4:{i:0;a:10:{s:4:\"type\";s:8:\"wordcamp\";s:5:\"title\";s:11:\"WordCamp US\";s:3:\"url\";s:29:\"https://us.wordcamp.org/2025/\";s:6:\"meetup\";s:0:\"\";s:10:\"meetup_url\";s:0:\"\";s:4:\"date\";s:19:\"2025-08-26 09:00:00\";s:8:\"end_date\";s:19:\"2025-08-29 17:00:00\";s:20:\"start_unix_timestamp\";i:1756224000;s:18:\"end_unix_timestamp\";i:1756512000;s:8:\"location\";a:4:{s:8:\"location\";s:16:\"Portland, Oregon\";s:7:\"country\";s:2:\"US\";s:8:\"latitude\";d:45.5283308;s:9:\"longitude\";d:-122.6634712;}}i:1;a:10:{s:4:\"type\";s:6:\"meetup\";s:5:\"title\";s:63:\"*IN PERSON* WordPress Pasadena Meetup, July 29th @ Foundr Space\";s:3:\"url\";s:59:\"https://www.meetup.com/wordpress-pasadena/events/308576430/\";s:6:\"meetup\";s:11:\"WP Pasadena\";s:10:\"meetup_url\";s:42:\"https://www.meetup.com/wordpress-pasadena/\";s:4:\"date\";s:19:\"2025-07-30 02:00:00\";s:8:\"end_date\";s:19:\"2025-07-30 04:00:00\";s:20:\"start_unix_timestamp\";i:1753840800;s:18:\"end_unix_timestamp\";i:1753848000;s:8:\"location\";a:4:{s:8:\"location\";s:18:\"Pasadena , CA, USA\";s:7:\"country\";s:2:\"US\";s:8:\"latitude\";d:34.147404;s:9:\"longitude\";d:-118.14906;}}i:2;a:10:{s:4:\"type\";s:6:\"meetup\";s:5:\"title\";s:37:\"#IEWP Monthly Meetup (General Meetup)\";s:3:\"url\";s:55:\"https://www.meetup.com/inlandempirewp/events/309034787/\";s:6:\"meetup\";s:36:\"Inland Empire WordPress Meetup Group\";s:10:\"meetup_url\";s:38:\"https://www.meetup.com/inlandempirewp/\";s:4:\"date\";s:19:\"2025-08-06 02:00:00\";s:8:\"end_date\";s:19:\"2025-08-06 04:00:00\";s:20:\"start_unix_timestamp\";i:1754445600;s:18:\"end_unix_timestamp\";i:1754452800;s:8:\"location\";a:4:{s:8:\"location\";s:18:\"Riverside, CA, USA\";s:7:\"country\";s:2:\"us\";s:8:\"latitude\";d:33.981945;s:9:\"longitude\";d:-117.3694;}}i:3;a:10:{s:4:\"type\";s:6:\"meetup\";s:5:\"title\";s:37:\"#IEWP Monthly Meetup (General Meetup)\";s:3:\"url\";s:55:\"https://www.meetup.com/inlandempirewp/events/309034876/\";s:6:\"meetup\";s:36:\"Inland Empire WordPress Meetup Group\";s:10:\"meetup_url\";s:38:\"https://www.meetup.com/inlandempirewp/\";s:4:\"date\";s:19:\"2025-09-03 02:00:00\";s:8:\"end_date\";s:19:\"2025-09-03 04:00:00\";s:20:\"start_unix_timestamp\";i:1756864800;s:18:\"end_unix_timestamp\";i:1756872000;s:8:\"location\";a:4:{s:8:\"location\";s:18:\"Riverside, CA, USA\";s:7:\"country\";s:2:\"us\";s:8:\"latitude\";d:33.981945;s:9:\"longitude\";d:-117.3694;}}}}','off'), +(181,'_transient_timeout_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1754038996','off'), +(182,'_transient_feed_mod_9bbd59226dc36b9b26cd43f15694c5c3','1753995796','off'), +(185,'_transient_timeout_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1754038997','off'), +(186,'_transient_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1753995797','off'), +(199,'_site_transient_timeout_theme_roots','1753997596','off'), +(200,'_site_transient_theme_roots','a:6:{s:4:\"nude\";s:7:\"/themes\";s:14:\"twentyfourteen\";s:7:\"/themes\";s:13:\"twentysixteen\";s:7:\"/themes\";s:12:\"twentytwelve\";s:7:\"/themes\";s:16:\"twentytwentyfive\";s:7:\"/themes\";s:15:\"twentytwentyone\";s:7:\"/themes\";}','off'), +(201,'_site_transient_timeout_community-events-6718ef04d3f46d7f6ff6aabe77f33591','1754038996','off'), +(202,'_site_transient_community-events-6718ef04d3f46d7f6ff6aabe77f33591','a:4:{s:9:\"sandboxed\";b:0;s:5:\"error\";N;s:8:\"location\";a:1:{s:2:\"ip\";s:10:\"172.18.0.0\";}s:6:\"events\";a:1:{i:0;a:10:{s:4:\"type\";s:8:\"wordcamp\";s:5:\"title\";s:11:\"WordCamp US\";s:3:\"url\";s:29:\"https://us.wordcamp.org/2025/\";s:6:\"meetup\";N;s:10:\"meetup_url\";N;s:4:\"date\";s:19:\"2025-08-26 00:00:00\";s:8:\"end_date\";s:19:\"2025-08-29 00:00:00\";s:20:\"start_unix_timestamp\";i:1756191600;s:18:\"end_unix_timestamp\";i:1756450800;s:8:\"location\";a:4:{s:8:\"location\";s:21:\"Portland, Oregon, USA\";s:7:\"country\";s:2:\"US\";s:8:\"latitude\";d:45.5283308;s:9:\"longitude\";d:-122.6634712;}}}}','off'), +(203,'_transient_timeout_feed_9bbd59226dc36b9b26cd43f15694c5c3','1754038996','off'), +(204,'_transient_feed_9bbd59226dc36b9b26cd43f15694c5c3','a:6:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n\n\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:52:\"\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:8:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"WordPress News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"https://wordpress.org/news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"The latest news about WordPress and the WordPress community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:13:\"lastBuildDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 15 Jul 2025 16:23:52 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"en-US\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:9:\"generator\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"https://wordpress.org/?v=6.9-alpha-60524\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"image\";a:1:{i:0;a:6:{s:4:\"data\";s:11:\"\n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:5:{s:3:\"url\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://s.w.org/favicon.ico?2\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"WordPress News\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:26:\"https://wordpress.org/news\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:5:\"width\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"32\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:6:\"height\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"32\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}s:4:\"item\";a:10:{i:0;a:6:{s:4:\"data\";s:63:\"\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"WordPress 6.8.2 Maintenance Release\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"https://wordpress.org/news/2025/07/wordpress-6-8-2-maintenance-release/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 15 Jul 2025 15:41:50 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:3:{i:0;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:14:\"minor-releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:8:\"releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18903\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:357:\"WordPress 6.8.2 is now available! This minor release includes fixes for 20 Core tickets and 15 Block Editor issues. For a full list of bug fixes, please refer to the release candidate announcement. WordPress 6.8.2 is a short-cycle maintenance release. More maintenance releases may be made available throughout 2025. If you have sites that support […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"Jb Audras\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:10720:\"\n

WordPress 6.8.2 is now available!

\n\n\n\n

This minor release includes fixes for 20 Core tickets and 15 Block Editor issues. For a full list of bug fixes, please refer to the release candidate announcement.

\n\n\n\n

WordPress 6.8.2 is a short-cycle maintenance release. More maintenance releases may be made available throughout 2025.

\n\n\n\n

If you have sites that support automatic background updates, the update process will begin automatically.

\n\n\n\n

You can download WordPress 6.8.2 from WordPress.org, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. For more information on this release, please visit the HelpHub version page.

\n\n\n\n

Dropping security updates for WordPress versions 4.1 through 4.6

\n\n\n\n

This is not directly related to the 6.8.2 maintenance release, but branches 4.1 to 4.6 had their final release today. These branches won’t receive any security update anymore.

\n\n\n\n

Thank you to these WordPress contributors

\n\n\n\n

WordPress 6.8.2 was led by Jb AudrasEstela Rueda and Zunaid Amin.

\n\n\n\n

Special thanks to @davidbaumwald, @sergeybiryukov, @mamaduka, @wildworks and @jorbin for their help on specific release tasks.

\n\n\n\n

WordPress 6.8.2 would not have been possible without the contributions of the following 96 people. Their asynchronous coordination to deliver maintenance fixes into a stable release is a testament to the power and capability of the WordPress community.

\n\n\n\n

Aaron Jorbin, Adam Silverstein, Adam Zieliński, Aki Hamano, Alex Stine, Anatol Broder, Andrea Fercia, Andrew Nacin, Ankit Kumar Shah, annezazu, Azhar Deraiya, Benjamin Gosset, Brandon Hubbard, Brandon Kraft, brhodes, Carolina Nymark, Chris Zarate, Courtney Robertson, Daniel Richards, Darshit Rajyaguru, David Baumwald, Dennis Snell, Dhruvang21, Dilip Bheda, Dion Hulse, divinenephron, dustintechsmith, Eric Andrew Lewis, Eshaan Dabasiya, Estela Rueda, Evan Herman, Fabian Kägy, Faisal Ahammad, Felix Arntz, Gary Pendergast, Gaurang Dabhi, George Mamadashvili, gernberg, Greg Ziółkowski, Harsh Gajipara, HelgaTheViking, Himanshu Pathak, Jb Audras, Jeffrey Paul, Jenny Dupuy, Jessica Lyschik, Jigar Panchal, Joe Dolson, Joe McGill, John Blackbourn, John Parris, Jon Surrell, Jonathan Desrosiers, Jonny Harris, Kausar Alam, Kishan Jasani, Marin Atanasov, Matt Mullenweg, Matthias Pfefferle, megane9988, Moses Cursor Ssebunya, Mukesh Panchal, mwillman1991, Nazar Hotsa, nidhidhandhukiya, Nikunj Hatkar, oferlaor, Olga Gleckler, Pascal Birchler, paulstanos, Peter Wilson, puggan, Ravi Gadhiya, Riad Benguella, Rolly Bueno, room34, Sainath Poojary, Sajjad Hossain Sagor, sam_a, Sandeep Dahiya, Sergey Biryukov, Shane Muirhead, siliconforks, SirLouen, Stephen Bernhardt, Sukhendu Sekhar Guria, Tammie Lister, Tobias Bäthge, Travis Smith, Ugyen Dorji, uxl, Weston Ruter, whaze, Yash B, Yogesh Bhutkar, and Zunaid Amin

\n\n\n\n

How to contribute

\n\n\n\n

To get involved in WordPress core development, head over to Trac, pick a ticket, and join the conversation on Slack, in the #core and #6-8-release-leads channels. Need help? Check out the Core Contributor Handbook.

\n\n\n\n

Thanks to @estelaris and @zunaid321 for proofreading.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18903\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:60:\"\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"Celebrating Kim Parsell: 2025 WordCamp US Scholarship Applications Open\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:87:\"https://wordpress.org/news/2025/07/kim-parsell-2025-wcus-scholarship-applications-open/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 14 Jul 2025 18:57:47 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:9:\"Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"WordCamp\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18911\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:364:\"The WordPress Foundation is pleased to announce the return of the Kim Parsell Memorial Scholarship for WordCamp US 2025. Applications are being accepted until July 25, 2025. Remembering Kim Parsell Kim Parsell was a dedicated contributor and a beloved member of the WordPress community. Her passion for open source and her welcoming spirit inspired many, […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Brett McSherry\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:6182:\"\n

The WordPress Foundation is pleased to announce the return of the Kim Parsell Memorial Scholarship for WordCamp US 2025. Applications are being accepted until July 25, 2025.

\n\n\n\n
\"\"
\n\n\n\n
\n
\n
\n\n\n\n
\n

Remembering Kim Parsell

\n\n\n\n
\n
\n
\"\"
\n
\n\n\n\n
\n

Kim Parsell was a dedicated contributor and a beloved member of the WordPress community. Her passion for open source and her welcoming spirit inspired many, both online and in person. Each year at WordCamp US, the WordPress Foundation celebrates Kim’s legacy by supporting contributors who share her commitment and enthusiasm. The Kim Parsell Memorial Scholarship aims to make it easier for deserving community members to attend WordCamp US, reflecting Kim’s belief in making WordPress accessible and inclusive for all.

\n
\n
\n\n\n\n

If you’re unfamiliar with Kim’s story or her invaluable role in the community, we encourage you to read these heartfelt tributes collected from friends and colleagues.

\n
\n\n\n\n
\n
\n
\n\n\n\n

Scholarship Eligibility

\n\n\n\n

This year, a single scholarship will be awarded. To qualify, applicants must:

\n\n\n\n
    \n
  • Identify as a woman
  • \n\n\n\n
  • Be actively involved as a contributor to WordPress
  • \n\n\n\n
  • Have never attended WordCamp US before
  • \n\n\n\n
  • Demonstrate a need for financial support to attend the event
  • \n
\n\n\n\n

If you meet these qualifications, we invite you to apply before the July 25 deadline. All applicants will be notified of the decision by August 7, 2025.

\n\n\n\n

For additional information, visit the Kim Parsell Memorial Scholarship page hosted by the WordPress Foundation.

\n\n\n\n
\n
\n\n\n\n

Ready to Apply?

\n\n\n\n
\n\n\n\n\n\n\n\n
\n
\n\n\n\n
\"\"
\n\n\n\n

Join the Celebration

\n\n\n\n
    \n
  • Tickets for WordCamp US 2025 are now available—secure yours soon!
  • \n\n\n\n
  • Volunteer applications are open until July 11, 2025
  • \n\n\n\n
  • Interested in supporting the event? Explore our sponsorship opportunities
  • \n
\n\n\n\n

Help us spread the word about this opportunity and make WordCamp US 2025 even more special.

\n\n\n\n

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18911\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:63:\"\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:92:\"Introducing WordPress Credits: A New Contribution Internship Program for University Students\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:127:\"https://wordpress.org/news/2025/07/introducing-wordpress-credits-a-new-contribution-internship-program-for-university-students/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 10 Jul 2025 16:56:52 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:3:{i:0;a:5:{s:4:\"data\";s:9:\"Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:9:\"community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:17:\"WordPress Credits\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18913\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:393:\"The WordPress Foundation is proud to launch WordPress Credits, a contribution-focused internship program that brings university students into the heart of the WordPress open source project. While WordPress thrives on contributions from a global volunteer community, many students and newcomers face barriers to entry, such as a lack of structured guidance or real-world experience in […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Isotta Peira\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:4768:\"\n

The WordPress Foundation is proud to launch WordPress Credits, a contribution-focused internship program that brings university students into the heart of the WordPress open source project. While WordPress thrives on contributions from a global volunteer community, many students and newcomers face barriers to entry, such as a lack of structured guidance or real-world experience in open source projects. This new program is designed to bridge that gap, nurturing future contributors and ensuring WordPress remains innovative, inclusive, and sustainable for years to come.

\n\n\n\n

The pilot program, developed in partnership with the University of Pisa, was announced on stage at WordCamp Europe 2025 by Matt Mullenweg and Mary Hubbard. Since then, it has attracted interest from students across various fields of study, including humanities, computer science, and communication. Companies in the WordPress ecosystem have also expressed support and interest in contributing to the project. In response to the growing interest from both community members and academic institutions, we are now inviting more universities to join the initiative.

\n\n\n\n

Open to students from all fields of study, the program blends structured onboarding with a personalized contribution project. Activities are adapted to each student’s degree program and familiarity with WordPress, aiming to develop transferable skills, academic-related competencies, and active participation in the WordPress community. Internship durations may vary depending on the university or educational institution. Some may align with academic semesters (typically 3–4 months), while others, like the University of Pisa, allow students to sign up year-round with a requirement to complete a set number of contribution hours (e.g. 150 hours). Flexible arrangements can be discussed to meet the specific requirements of each institution.

\n\n\n\n

Foundational Training includes:

\n\n\n\n
    \n
  • An introduction to open source principles and the WordPress Foundation
  • \n\n\n\n
  • Getting familiar with community tools (Slack, Make blogs, Learn platform, GitHub)
  • \n\n\n\n
  • Setting up a personal WordPress site and publishing content
  • \n
\n\n\n\n

Each student will choose a contribution area and design their own personal project within that area. Examples of possible projects include:

\n\n\n\n
    \n
  • Translating interfaces or documentation
  • \n\n\n\n
  • Creating multilingual subtitles for educational videos
  • \n\n\n\n
  • Contributing code or performing testing
  • \n\n\n\n
  • Supporting product development or design
  • \n\n\n\n
  • Writing or editing content
  • \n\n\n\n
  • Assisting with community event organization
  • \n\n\n\n
  • Developing training materials for Learn WordPress
  • \n\n\n\n
  • Creating open source tools
  • \n\n\n\n
  • And much more…
  • \n
\n\n\n\n

Interns are guided by an experienced mentor specific to their chosen area and supported by a dedicated WordPress Foundation contact person throughout the program. All student contributions, whether code, translations, documentation, or educational materials, will be publicly visible and integrated into official WordPress projects and resources, directly benefiting the wider community.

\n\n\n\n

Interested universities and educational institutions interested in participating can reach out by filling the interest form.

\n\n\n\n

We also invite companies in the WordPress ecosystem to support this initiative by sponsoring mentors who will guide and empower the next generation of contributors, or by providing tools and resources that help students succeed in their contribution journey. 

\n\n\n\n

If your company is interested in getting involved, please visit the Company Guide to learn more and fill out the form to join the program.

\n\n\n\n

By welcoming students, mentors, sponsors, and volunteers into this initiative, we are building a stronger and more connected WordPress community. Each person who takes part, whether they guide a student, share their experiences, provide sponsorship, or simply help spread the word, helps ensure that open source remains vibrant and accessible for all. Together, we are not just supporting individual contributors; we are shaping the future of WordPress and open source itself.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18913\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:63:\"\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:46:\"WordCamp US 2025: See You in Portland, Oregon!\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:79:\"https://wordpress.org/news/2025/06/wordcamp-us-2025-see-you-in-portland-oregon/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 27 Jun 2025 18:14:33 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:3:{i:0;a:5:{s:4:\"data\";s:6:\"Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"WordCamp\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:4:\"WCUS\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18884\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:383:\"WordCamp US 2025 is heading to vibrant Portland, Oregon, from August 26–29, 2025! Join fellow open source enthusiasts, developers, designers, and WordPress professionals from across the United States and around the world for four days of learning, networking, and collaboration at the Oregon Convention Center. Nestled in the Pacific Northwest, Portland is famous for its […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Brett McSherry\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:8274:\"\n
\"\"
\n\n\n\n

WordCamp US 2025 is heading to vibrant Portland, Oregon, from August 26–29, 2025! Join fellow open source enthusiasts, developers, designers, and WordPress professionals from across the United States and around the world for four days of learning, networking, and collaboration at the Oregon Convention Center.

\n\n\n\n

Nestled in the Pacific Northwest, Portland is famous for its creative spirit, lush green spaces, and riverside trails, making it an inspiring backdrop for this year’s WordCamp. Whether building your first site or leading a digital agency, WordCamp US offers something for everyone, all set against the city’s stunning natural scenery.

\n\n\n\n
\n
\n\n\n\n

\"🎟\" Tickets are limited—secure yours today!

\n\n\n\n
\n\n\n\n\n\n\n\n
\n
\n\n\n\n

What to Expect

\n\n\n\n

Contributor Day: August 26

\n\n\n\n

Kick off your WordCamp US experience by giving back. Contributor Day welcomes all skill levels to collaborate on teams that help make WordPress better, from code to community to documentation. You can make a difference to the project, and build new friendships or rekindle old ones, perhaps even while enjoying views of Portland’s skyline and tree-lined streets.

\n\n\n\n

Main Conference: August 27–29

\n\n\n\n

Showcase Day – August 27

\n\n\n\n

As part of the main conference, day one will give us a look at project showcases, discover innovative uses of WordPress, see how people push the platform’s boundaries, and get inspired to try something new.

\n\n\n\n

Session Days + Expo Hall – August 28-29

\n\n\n\n

Experience another two days filled with inspiring keynotes, practical sessions, and deep dives into the latest trends in web development, design, content, accessibility, and more. Hear from some of the brightest minds in the WordPress ecosystem and explore topics that get to the heart of what makes WordPress unique. Also, take some time to explore the main floors of WCUS, like the Sponsors Hall.

\n\n\n\n

Networking and Community

\n\n\n\n

Meet WordPress friends new and old, exchange ideas with community leaders, and collaborate with people who share your passion for open source. Enjoy daily lunches and a memorable social event, all included with your ticket. Stroll along the Willamette River or explore nearby parks in between sessions.

\n\n\n\n

Venue & Accommodations

\n\n\n\n

This year, we’re gathering at the Oregon Convention Center in the heart of Portland—a city known for its vibrant neighborhoods and abundant green spaces. We’ve secured a special hotel block right across the street at the Hyatt Regency Portland for convenient, comfortable lodging during your stay.

\n\n\n\n
    \n
  • \"🏢\" Oregon Convention Center
    777 NE Martin Luther King Jr Blvd
    Portland, OR 97232
  • \n\n\n\n
  • \"🛏\" Hyatt Regency Portland
    375 NE Holladay Street
    Portland, OR 97232
    Book your room!
  • \n
\n\n\n\n

Registration and Tickets

\n\n\n\n

Registration officially kicked off last month. Secure your spot early; tickets are selling quickly.

\n\n\n\n
\n
\n\n\n\n

\"🎟\" Tickets are limited—secure yours today!

\n\n\n\n
\n\n\n\n\n\n\n\n
\n
\n\n\n\n

Ready to Plan Your WordCamp US Experience?

\n\n\n\n

Keep checking the WordCamp US site for travel tips, to book accommodations, and to watch for the whole event schedule—coming soon! While here, why not plan to take in some of Portland’s scenic hiking trails, bike-friendly streets, or local food scene?

\n\n\n\n

Stay tuned for updates and announcements on WordPress social media channels, and join the conversation.

\n\n\n\n

Help Us Spread the Word!

\n\n\n\n

Whether attending in person or following along online, share your experience and help welcome others to the WordPress community. Use the #WCUS and #WordPress hashtags and tell your story on social!

\n\n\n\n
\"\"
\n\n\n\n

Portland is calling—see you at WordCamp US 2025! \"🌲\"

\n\n\n\n

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18884\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:60:\"\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"Dropping security updates for WordPress versions 4.1 through 4.6\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:100:\"https://wordpress.org/news/2025/06/dropping-security-updates-for-wordpress-versions-4-1-through-4-6/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 19 Jun 2025 15:26:06 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:8:\"Security\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:7:\"Updates\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18872\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:331:\"As of July 2025, the WordPress Security Team will no longer provide security updates for WordPress versions 4.1 through 4.6. These versions were first released nine or more years ago and over 99% of WordPress installations run a more recent version. The chances this will affect your site, or sites, is very small. If you […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:15:\"John Blackbourn\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:3132:\"\n

As of July 2025, the WordPress Security Team will no longer provide security updates for WordPress versions 4.1 through 4.6.

\n\n\n\n

These versions were first released nine or more years ago and over 99% of WordPress installations run a more recent version. The chances this will affect your site, or sites, is very small.

\n\n\n\n

If you are unsure if you are running an up-to-date version of WordPress, please log in to your site’s dashboard. Out of date versions will display a notice that looks like this:

\n\n\n\n
\"Dashboard
\n\n\n\n

The version you are running is displayed in the bottom of the “At a Glance” section of the dashboard.

\n\n\n\n
\"At
\n\n\n\n

As a reminder, the only actively supported version of WordPress is the most recent one. Security updates are only backported to older branches as a courtesy.

\n\n\n\n

The Make WordPress Security blog has further details about the process to end support.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18872\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:63:\"\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"WCEU 2025: A Community Celebration in the Swiss Sun\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"https://wordpress.org/news/2025/06/wceu-2025-a-community-celebration-in-the-swiss-sun/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 07 Jun 2025 19:19:18 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:3:{i:0;a:5:{s:4:\"data\";s:6:\"Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:8:\"WordCamp\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:2;a:5:{s:4:\"data\";s:4:\"WCEU\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18776\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:362:\"Over 1,723 attendees from 84 countries gathered at the Messe and Congress Center Basel in Switzerland, and 20,353 more joined online for WordCamp Europe 2025. I’m personally very excited… There’s so much I want to do. I think there’s a clear pathway to 7.0 and beyond. Matt Mullenweg, WordPress Cofounder The flagship WordPress event kicked […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Brett McSherry\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:61400:\"\n
\"\"
Photo by Nilo Velez
\n\n\n\n

Over 1,723 attendees from 84 countries gathered at the Messe and Congress Center Basel in Switzerland, and 20,353 more joined online for WordCamp Europe 2025.

\n\n\n\n
\n

I’m personally very excited… There’s so much I want to do. I think there’s a clear pathway to 7.0 and beyond.

Matt Mullenweg, WordPress Cofounder
\n
\n\n\n\n

The flagship WordPress event kicked off in Basel, Switzerland, with a dedicated Contributor Day. It was followed by two days of engaging talks, panels, hands-on workshops, and vibrant community connections. WordPress Cofounder Matt Mullenweg and Executive Director Mary Hubbard joined a diverse lineup of speakers and panelists, sharing insights in the heart of one of Europe’s most charming cities.

\n\n\n\n

Set against the backdrop of Basel’s historic streets and Rhine-side views, the sponsor hall buzzed with activity as companies from across the WordPress ecosystem showcased their latest innovations, offered live demos, and connected with attendees. Each day, participants refueled with a range of local and international cuisine — from Swiss specialties to global favorites — making mealtime a lively space for networking, collaboration, and sparking new ideas.

\n\n\n\n

A Global Gathering in Basel

\n\n\n\n

WordCamp Europe has long been one of the most anticipated WordPress events of the year — a space where community, creativity, and collaboration thrive. This year in Basel, the conference delivered an exciting and diverse program that reached every corner of the WordPress ecosystem.

\n\n\n\n

Here’s what attendees experienced:

\n\n\n\n
    \n
  • Engaging Sessions Across Tracks – Across two full days, the conference featured informative talks, captivating keynotes, and dynamic discussions exploring WordPress and the broader web.
  • \n\n\n\n
  • A Global Speaker Lineup – The stage welcomed 52 speakers from 23 countries across five continents, each bringing unique insights and global perspectives.
  • \n\n\n\n
  • Wide-Ranging Topics – The schedule included 45 sessions and four hands-on workshops across three tracks, covering:\n
      \n
    • Accessibility and key policy updates like the European Accessibility Act and the Cyber Resilience Act
    • \n\n\n\n
    • The evolving role of Artificial Intelligence in the open web
    • \n\n\n\n
    • Cutting-edge web design, development best practices, SEO, and content strategy
    • \n\n\n\n
    • Real-world case studies and showcases from across the community
    • \n
    \n
  • \n\n\n\n
  • Hands-On Learning Opportunities – Interactive workshops allowed attendees to roll up their sleeves and develop practical skills in a collaborative setting.
  • \n\n\n\n
  • A Community Built on Collaboration – Whether developer, designer, content creator, or entrepreneur, every attendee found space to connect, learn, and grow within a vibrant and welcoming community.
  • \n
\n\n\n\n

Contributor Day

\n\n\n\n

WordCamp Europe began with a vibrant Contributor Day that brought together 640 contributors—including many first-timers—to collaborate, share knowledge, and support the WordPress project. Guided by 33 dedicated table leads, with 21 teams, attendees of all experience levels came together to exchange ideas, solve real challenges, and make meaningful contributions to open source. From accessibility improvements to theme development and translation efforts, every table played a part in moving WordPress forward.

\n\n\n\n\n\n\n\n

Contributor Day at WordCamp Europe 2025 brought together a mix of first-time and returning contributors across a wide range of teams, from Core and Accessibility to Polyglots, Training, and Community. Attendees tackled everything from onboarding and ticket triage to translating strings, improving documentation, and enhancing tools and workflows. Development-focused teams explored performance and testing improvements and worked through live coding exercises. Meanwhile, accessibility testers, support volunteers, and photo moderators contributed to efforts that directly impact users around the world.

\n\n\n\n

In parallel, teams like Marketing, Meta, Hosting, and Sustainability focused on future-facing initiatives—from promoting WordPress through the Showcase and social media campaigns to refining infrastructure, increasing accessibility, and preparing for long-term project growth. Whether contributing to plugins, themes, documentation, or new contributor experiences, participants reinforced the values that power the WordPress project: collaboration, inclusivity, and openness. The day served as a reminder that WordPress is not just software—it’s a community built by and for everyone.

\n\n\n\n

Tomorrow Starts with WordPress

\n\n\n\n

The first full day of WordCamp Europe 2025 brought the community together to celebrate the power of open source collaboration and innovation. Opening remarks from both global and local event leads reflected on the journey of WordCamp Europe—from its beginnings in 2013 in Leiden, Netherlands, to the vibrant event in Basel today. This full-circle moment underscored the growth of the WordPress community, united by a shared commitment to an open web.

\n\n\n\n

The day launched into an inspiring program with the keynote session, WordPress Without Borders – The Fight for Digital Freedom, delivered by Noel Tock. Drawing from his experiences—including time on the frontlines in Ukraine—Tock illustrated how open source supports global resilience and serves as a digital human right. His message called on contributors to see their work as part of something greater, offering a compelling and forward-looking vision to energize and unify the WordPress community.

\n\n\n\n
\n\n
\n\n\n\n

From there, the program unfolded across multiple tracks—each one sparking new conversations and insights. One standout session highlighted social entrepreneurship in Bulgaria, where WordPress is helping grassroots organizations drive change in education, journalism, and social justice. Petya Raykovska shared how nonprofits like Teenovator and the Bulgarian Fund for Women are using WordPress to amplify their work and strengthen their communities.

\n\n\n\n

Designers and developers explored ways to improve workflows and collaboration. In Bridging Design and Development, attendees learned how Figma Design Systems can connect design and development through shared structures mapped to block themes. Real-world examples, like the Novus Media Newspaper Design System, demonstrated how scalable, consistent design can power multi-brand platforms.

\n\n\n\n

Workshops played a key role throughout the day, including the interactive Block Developer Cookbook: WCEU 2025 Edition, where attendees worked through community-voted code recipes featuring the latest WordPress APIs. Sessions also dove into emerging technologies, such as Automating WordPress Setup with Modern AI Tools, which showcased how WP-CLI, scripting, and AI can accelerate project setup and reduce repetitive tasks.

\n\n\n\n
\"\"
Photo by Marc Wieland
\n\n\n\n

Day Two of WordCamp Europe 2025 opened with a focus on the evolving role of the WordPress community in a rapidly changing digital world. Sessions explored how contributors—from local meetup organizers to global advocates—play a vital part in shaping WordPress’s future. Talks on inclusivity, such as Over the Rainbow, encouraged attendees to consider how individual actions can help build a more welcoming, representative open source ecosystem. Throughout the morning, the spirit of collaboration and shared purpose remained front and center.

\n\n\n\n

As the day progressed, attention turned to the tools and technologies pushing WordPress forward. From sessions on scaling multilingual sites and managing observability to hands-on workshops, developers explored new ways to streamline workflows and enhance performance. Highlights included WordPress Gems for Devs, which introduced the Interactivity API through live coding, and Client-side Web AI Agents, a look at cutting-edge browser-based AI that unlocks new possibilities for web experiences. These talks reflected the platform’s growing capacity to adapt to emerging trends while staying true to its open foundations.

\n\n\n\n

The afternoon brought a blend of practical guidance and inspiring stories across tracks. A case study on accessibility from Switzerland showed how thoughtful design can benefit all users, while a session on brand-building for women entrepreneurs highlighted the creative and economic opportunities WordPress enables. With topics spanning content strategy, business growth, regulatory readiness, and more, the second day of WCEU 2025 affirmed the strength of the WordPress ecosystem—not only as a technology platform, but as a global movement fueled by people, purpose, and possibility.

\n\n\n\n

Fireside Chat

\n\n\n\n

As the final day drew to a close, Matt and Mary shared some thoughts on EU regulation (Open Web Alliance), AI, and the introduction of the WordPress AI team, and then answered questions from the audience.

\n\n\n\n
\n\n
\n\n\n\n

Closing

\n\n\n\n

A heartfelt thank you to the dedicated organizers who brought WordCamp Europe 2025 to life in Basel, the speakers who shared their insights, the attendees who joined us in person, and those who followed along from afar. We hope you leave with fresh ideas, meaningful connections, and renewed energy to help shape the future of the open web.

\n\n\n\n\n\n\n\n

Be sure to mark your calendars for the final major WordPress events in 2025: WordCamp US (Portland, Oregon, USA). Then join us in Kraków, Poland for WordCamp Europe 2026! Also, if you want to get involved with WCEU, the call for organisers is already open for 2026.

\n\n\n\n

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18776\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:57:\"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:49:\"Announcing the Formation of the WordPress AI Team\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"https://wordpress.org/news/2025/05/announcing-the-formation-of-the-wordpress-ai-team/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 27 May 2025 16:28:01 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:7:\"General\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18769\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:397:\"Today, I’m pleased to announce the formation of a new WordPress AI Team, a dedicated group focused on accelerating and coordinating artificial intelligence projects across the WordPress ecosystem. AI is already transforming how people create and manage content online. As this technology evolves, it’s essential that WordPress remains at the forefront, ensuring innovation happens in […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Mary Hubbard\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:2961:\"\n

Today, I’m pleased to announce the formation of a new WordPress AI Team, a dedicated group focused on accelerating and coordinating artificial intelligence projects across the WordPress ecosystem.

\n\n\n\n

AI is already transforming how people create and manage content online. As this technology evolves, it’s essential that WordPress remains at the forefront, ensuring innovation happens in the open, guided by community values, and built to core standards.

\n\n\n\n

Why This Matters

\n\n\n\n
    \n
  • Strategic focus: A unified team stewards AI development thoughtfully, avoids fragmentation, and ensures alignment with the long-term goals of WordPress.
  • \n\n\n\n
  • Shared innovation: Contributors and companies are actively exploring AI across the ecosystem. This team provides a central place to collaborate, share ideas, and build together.
  • \n\n\n\n
  • Rapid iteration: Like the Performance Team, we’ll take a plugin-first approach. Canonical Plugins will allow us to move quickly, gather feedback, and deliver real value without waiting on the Core release cycle.
  • \n
\n\n\n\n

What to Expect

\n\n\n\n

The AI Team will:

\n\n\n\n
    \n
  • Coordinate cross-team efforts to explore AI-powered features responsibly and inclusively.
  • \n\n\n\n
  • Publish and maintain a public roadmap of AI initiatives and Canonical Plugins.
  • \n\n\n\n
  • Collaborate closely with Core, Design, Accessibility, and other teams to ensure strong integration and shared standards.
  • \n
\n\n\n\n

Meet the Team

\n\n\n\n

The WordPress AI Team brings deep experience in open-source, performance, and product development and a strong commitment to building AI features the WordPress way. The team will launch with the following team contributors:

\n\n\n\n
    \n
  • James LePage – Automattic
  • \n\n\n\n
  • Felix Arntz – Google
  • \n\n\n\n
  • Pascal Birchler – Google
  • \n\n\n\n
  • Jeff Paul – 10up
  • \n
\n\n\n\n

To help get things started, James and Felix will serve as the initial Team Reps in supporting team organization, communication, and coordination with other Make WordPress teams.

\n\n\n\n

This is an exciting and important step in WordPress’s evolution. I look forward to seeing what we’ll create together and in the open.

\n\n\n\n

If you’re interested in contributing or following along, please join the conversations in #core-ai and watch for upcoming meeting announcements on https://make.wordpress.org/ai/.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18769\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:60:\"\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"WordPress Campus Connect Expands\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"https://wordpress.org/news/2025/05/wordpress-campus-connect-expands/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 07 May 2025 12:40:19 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:2:{i:0;a:5:{s:4:\"data\";s:9:\"Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}i:1;a:5:{s:4:\"data\";s:6:\"Events\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18726\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:391:\"WordPress Campus Connect, initially launched in October 2024 as a pilot program, has now been formally established as an official event series due to its resounding success. The inaugural program, spearheaded by myself, Anand Upadhyay, garnered immense enthusiasm from 400 Indian students who were eager to engage in hands-on WordPress training. WordPress Campus Connect transcends […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Anand Upadhyay\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:28141:\"\n

WordPress Campus Connect, initially launched in October 2024 as a pilot program, has now been formally established as an official event series due to its resounding success. The inaugural program, spearheaded by myself, Anand Upadhyay, garnered immense enthusiasm from 400 Indian students who were eager to engage in hands-on WordPress training.

\n\n\n\n\n\n\n\n

WordPress Campus Connect transcends the conventional workshop model by fostering a holistic learning community. It couples on-campus event learning with a diverse range of post-event activities, including meetups, website challenges, scholarships, and volunteering opportunities, all geared towards nurturing student development. The program’s efficacy has prompted other organizations in India to express interest in replicating its structure.

\n\n\n\n

Looking ahead, multiple local WordPress communities in India aim to reach more students in India through WordPress Campus Connect events. The curriculum will include beginner content, delve into more advanced WordPress concepts, and feature specialized sessions tailored for students with prior WordPress experience. 

\n\n\n\n
\n
\"\"
\n
\n\n\n\n

The official recognition of WordPress Campus Connect as an event series paves the way for further expansion, giving the series similar support and standing as WordCamps but with a student education-first goal and focus. Future plans include organizing large-scale student events, establishing WordPress clubs on college campuses, and facilitating mentorship connections for students.

\n\n\n\n

To support these ambitious goals, volunteers identified several key next steps:

\n\n\n\n
    \n
  • Volunteer Handbook Development: Creating a comprehensive guidebook to equip volunteers with the necessary resources and information.
  • \n\n\n\n
  • GatherPress Integration: Exploring the feasibility of integrating GatherPress as a tool for student groups.
  • \n\n\n\n
  • Volunteer Recruitment: Actively seeking and onboarding volunteers to support WordPress Campus Connect initiatives through activities such as:\n
      \n
    1. Creating a workflow and guidelines for processing Student Club applications
    2. \n\n\n\n
    3. On-site facilitation or assistance for WordPress Campus Connect events
    4. \n
    \n
  • \n\n\n\n
  • Landing Page Creation: Creating a landing page describing what WordPress Campus Connect is all about
  • \n\n\n\n
  • Student Groups: Drafting a framework for students to create their own groups for hosting WordPress events and activities. 
  • \n
\n\n\n\n

The overwhelming success of WordPress Campus Connect and the enthusiasm it has generated serve as a testament to the transformative power of passion and dedication. As WordPress Campus Connect continues to evolve and expand, it holds the promise of shaping the future of WordPress education and community engagement.

\n\n\n\n

If you’re interested in helping shape the future of education with WordPress, join us in the #campusconnect Make Slack channel today!

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18726\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:57:\"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"WordPress 6.8.1 Maintenance Release\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"https://wordpress.org/news/2025/04/wordpress-6-8-1-maintenance-release/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 30 Apr 2025 17:17:09 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18721\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:371:\"WordPress 6.8.1 is now available! This minor release includes fixes for 15 bugs throughout Core and the Block Editor addressing issues affecting multiple areas of WordPress including the block editor, multisite, and REST API. For a full list of bug fixes, please refer to the release candidate announcement. WordPress 6.8.1 is a short-cycle maintenance release. […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Aaron Jorbin\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:6967:\"\n

WordPress 6.8.1 is now available!

\n\n\n\n

This minor release includes fixes for 15 bugs throughout Core and the Block Editor addressing issues affecting multiple areas of WordPress including the block editor, multisite, and REST API. For a full list of bug fixes, please refer to the release candidate announcement.

\n\n\n\n

WordPress 6.8.1 is a short-cycle maintenance release. More maintenance releases will be made available throughout 2025.

\n\n\n\n

If you have sites that support automatic background updates, the update process will begin automatically.

\n\n\n\n

You can download WordPress 6.8.1 from WordPress.org, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. For more information on this release, please visit the HelpHub site.

\n\n\n\n

Thank you to these WordPress contributors

\n\n\n\n

This release was led by Aaron Jorbin.

\n\n\n\n

WordPress 6.8.1 would not have been possible without the contributions of the following people. Their asynchronous coordination to deliver maintenance fixes into a stable release is a testament to the power and capability of the WordPress community.

\n\n\n\n

Aaron Jorbin, Adam Silverstein, Aki Hamano, Ankit Panchal, bernhard-reiter, Carolina Nymark, Code Amp, Daniel Richards, David Baumwald, David Levine, Dilip Bheda, Dion Hulse, dsawyers, eduwass, Erick Hitter, Estela Rueda, Fabian Kägy, George Mamadashvili, Greg Ziółkowski, H. Kabir, hideishi, Himanshu Pathak, jarekmorawski, Jb Audras, Jeffrey Paul, Jeffro, Jeremy Felt, Joe Dolson, Joe McGill, Joen A., John James Jacoby, Jonathan Desrosiers, Jonny Harris, Joshua Goode, Karthikeya Bethu, Kingsley Felix, Konstantin Obenland, Lena Morita, LilGames, megane9988, Michelle Schulp Hunt, Mitchell Austin, Mukesh Panchal, nickwilmot, Nikunj Hatkar, Pascal Birchler, Paul Biron, Peter Wilson, Pratik Londhe, Presskopp, Sainath Poojary, Scott Kingsley Clark, Scott Reilly, Sergey Biryukov, SirLouen, Sören Wünsch, Sourav Pahwa, Stephen Bernhardt, takuword, Tushar Patel, Weston Ruter, Yogesh Bhutkar

\n\n\n\n

How to contribute

\n\n\n\n

To get involved in WordPress core development, head over to Trac, pick a ticket, and join the conversation in the #core and #6-8-release-leads channels. Need help? Check out the Core Contributor Handbook.

\n\n\n\n

Props to @estelaris and @joedolson for proofreading.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18721\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:57:\"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:4:{s:0:\"\";a:6:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:17:\"WordPress Jubilee\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:43:\"https://wordpress.org/news/2025/04/jubilee/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 22 Apr 2025 02:07:36 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"category\";a:1:{i:0;a:5:{s:4:\"data\";s:7:\"General\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18716\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:11:\"isPermaLink\";s:5:\"false\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:289:\"As I said, we’re dropping all the human blocks. Community guidelines, directory guidelines, and such will need to be followed going forward, but whatever blocks were in place before are now cleared. It may take a few days, but any pre-existing blocks are considered bugs to be fixed.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Matt Mullenweg\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:40:\"http://purl.org/rss/1.0/modules/content/\";a:1:{s:7:\"encoded\";a:1:{i:0;a:5:{s:4:\"data\";s:298:\"\n

As I said, we’re dropping all the human blocks. Community guidelines, directory guidelines, and such will need to be followed going forward, but whatever blocks were in place before are now cleared. It may take a few days, but any pre-existing blocks are considered bugs to be fixed.

\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:7:\"post-id\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"18716\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}s:27:\"http://www.w3.org/2005/Atom\";a:1:{s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:0:\"\";s:7:\"attribs\";a:1:{s:0:\"\";a:3:{s:4:\"href\";s:32:\"https://wordpress.org/news/feed/\";s:3:\"rel\";s:4:\"self\";s:4:\"type\";s:19:\"application/rss+xml\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:44:\"http://purl.org/rss/1.0/modules/syndication/\";a:2:{s:12:\"updatePeriod\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"\n hourly \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:15:\"updateFrequency\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"\n 1 \";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:30:\"com-wordpress:feed-additions:1\";a:1:{s:4:\"site\";a:1:{i:0;a:5:{s:4:\"data\";s:8:\"14607090\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";O:48:\"WpOrg\\Requests\\Utility\\CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:12:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Thu, 31 Jul 2025 21:03:16 GMT\";s:12:\"content-type\";s:34:\"application/rss+xml; charset=UTF-8\";s:4:\"vary\";s:37:\"Accept-Encoding, accept, content-type\";s:25:\"strict-transport-security\";s:12:\"max-age=3600\";s:6:\"x-olaf\";s:3:\"⛄\";s:13:\"last-modified\";s:29:\"Tue, 15 Jul 2025 16:23:52 GMT\";s:4:\"link\";s:63:\"; rel=\"https://api.w.org/\"\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:16:\"content-encoding\";s:2:\"br\";s:7:\"alt-svc\";s:19:\"h3=\":443\"; ma=86400\";s:4:\"x-nc\";s:9:\"HIT ord 1\";}}s:5:\"build\";i:1750198589;s:21:\"cache_expiration_time\";i:1754038996;s:23:\"__cache_expiration_time\";i:1754038996;}','off'), +(205,'_transient_timeout_feed_d117b5738fbd35bd8c0391cda1f2b5d9','1754038997','off'), +(206,'_transient_feed_d117b5738fbd35bd8c0391cda1f2b5d9','a:6:{s:5:\"child\";a:1:{s:0:\"\";a:1:{s:3:\"rss\";a:1:{i:0;a:6:{s:4:\"data\";s:3:\"\n\n\n\";s:7:\"attribs\";a:1:{s:0:\"\";a:1:{s:7:\"version\";s:3:\"2.0\";}}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:1:{s:7:\"channel\";a:1:{i:0;a:6:{s:4:\"data\";s:112:\"\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:1:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:16:\"WordPress Planet\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://planet.wordpress.org/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:8:\"language\";a:1:{i:0;a:5:{s:4:\"data\";s:2:\"en\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:47:\"WordPress Planet - http://planet.wordpress.org/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"item\";a:50:{i:0;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:83:\"Open Channels FM: Learn, Share and Grow with the WordPress Developer Blog Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=104406\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:89:\"https://openchannels.fm/learn-share-and-grow-with-the-wordpress-developer-blog-community/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:175:\"In this episode, Abha Thakor chats with Justin Tadlock and Mary Baum about the WordPress Developer Blog, discussing its value for developers, collaboration, and contributions.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 31 Jul 2025 09:45:39 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:1;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:30:\"Matt: Beeper and Automattic 20\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:23:\"https://ma.tt/?p=145158\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://ma.tt/2025/07/new-beeper/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1060:\"

To announce and celebrate the incredible engineering achievement of the Beeper team launching local bridges and their premium model we hosted a fun event in Automattic’s space in NYC. The app side of Automattic does some amazing work, and the applications themselves are pretty well known and reviewed, but many don’t know they’re part of Automattic, so it was a good opportunity to tell that side of our story a bit. Here’s the video from the event:

\n\n\n\n
\n\n
\n\n\n\n

And if you’ve ever wanted to get better control over your instant messages, regardless of what network they may be on, definitely check out Beeper. I find it especially useful on desktop, like a Superhuman for messaging.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 31 Jul 2025 02:20:37 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:4:\"Matt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:2;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"WPTavern: #179 – Mariya Moeva on the Impact of Google’s SiteKit on WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=197933\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:91:\"https://wptavern.com/podcast/179-mariya-moeva-on-the-impact-of-googles-sitekit-on-wordpress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:43544:\"
Transcript
\n

[00:00:19] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress, the people, the events, the plugins, the blocks, the themes, and in this case, how the Google Site Kit plugin is attempting to simplify their product offering, right inside of WordPress.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea. Featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.

\n\n\n\n

So on the podcast today we have Mariya Moeva. Mariya has more than 15 years of experience in tech across search quality, developer advocacy, community building and outreach, and product management. Currently, she’s the product lead for Site Kit, Google’s official WordPress plugin.

\n\n\n\n

She’s presented at Word Camp Europe in Basel this year and joins us to talk about the journey from studying classical Japanese literature to fighting web spam at Google, and eventually shaping open source tools for the web.

\n\n\n\n

Mariya talks about her passion for the open web, and how years of direct feedback from site owners shaped the vision for Site Kit. Making complex analytics accessible and actionable for everyone, from solo bloggers to agencies and hosting providers.

\n\n\n\n

Site Kit has had impressive growth for a WordPress plugin, currently there are 5 million active installs and a monthly user base of 700,000.

\n\n\n\n

We learn how Site Kit bundles core Google products like Search Console, Analytics, Page Speed Insights, AdSense into a simpler, curated WordPress dashboard, giving actionable insights without the need to trawl through multiple complex interfaces.

\n\n\n\n

Mariya explains how the plugin is intentionally beginner friendly with features like role-based dashboard sharing, integration with WordPress’ author and category systems, and some newer additions like Reader Revenue Manager to help site owners become more sustainable.

\n\n\n\n

She shares Google’s motivations for investing so much in WordPress and the open web, and how her team is committed to active support, trying to respond rapidly on forums and listening closely to feedback.

\n\n\n\n

We discussed Site Kit’s roadmap, from benchmarking and reporting features, to smarter, more personalized recommendations in the future.

\n\n\n\n

If you’ve ever felt overwhelmed by analytics dashboards, or are looking for ways to make data more practical and valuable inside WordPress, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

\n\n\n\n

And so without further delay, I bring you Mariya Moeva.

\n\n\n\n

I’m joined on the podcast by Mariya Moeva. Hello, Mariya. Nice to meet you.

\n\n\n\n

[00:03:35] Mariya Moeva: Nice to be here.

\n\n\n\n

[00:03:36] Nathan Wrigley: Mariya is doing a presentation at WordCamp Europe. That’s where we are at the moment, and we’re going to be talking about the bits and the pieces that she does around Site Kit, the work that she does for Google. Given that you are a Googler, and that we’re going to be talking about a product that you have, will you just give us your bio? I’ve got it written here, you obviously put one on the WordCamp Europe website. But just roughly what is your place in WordPress and Google and Site Kit and all of that?

\n\n\n\n

[00:04:05] Mariya Moeva: Yeah. I mean, I’ve had a very meandering path. When you would look back to what I studied, which was, you know, classical Japanese literature, all these poems about the moon and the cherry blossoms, who would’ve thought at that time that I would end up building open source plugins? But I did have a meandering path and I ended up here because, mostly because of passion for the open web, and for all kinds of weird websites that exist out there. I really love stumbling upon something great.

\n\n\n\n

I started Google on the web spam team, actually looking into the Japanese spam market, because of this classical Japanese literature degree and the Japanese skills. And then after a couple years or so, I basically despaired of humanity because all you look at is spam every day. Bad sites, hacked sites, malicious pages. And I just wanted to do something that makes the web better rather than removing all the bad stuff.

\n\n\n\n

And so I switched over to an advocacy role, and in that role I essentially was traveling, maybe attending 20, 30 conferences every year, talking to a lot of people about their needs, what they have to complain about Google, what requests they have. And I would collect all of this feedback, and then I would go back to the product teams and I would say, hey, this and this is something that people really want. And they would say, thank you for your feedback.

\n\n\n\n

Essentially at one point I said, okay, we’re going to build this thing, and that’s why I switched into product role. And I was able to take all the feedback over the years, that we’ve gotten from developers and site owners, and to try to build something that makes sense for them. So that’s how I ended up in the product role for building Site Kit.

\n\n\n\n

And the idea from the very beginning was to make it beginner friendly and to make it from their perspective to match that feedback, rather than doing something that is like, here’s your stuff from analytics, here’s your stuff from Search Console, figure it out. That’s how we ended up building this and it’s been now five years. And it actually just a month ago entered the top 10 plugins. So clearly people find some value in it.

\n\n\n\n

We have 700,000 people that use it every month. And overall it’s currently at 5 million active installs, meaning that these sites are kind of pinging WordPress so they’re alive and kicking. It’s been very encouraging to see that what we’re doing is helpful to people and we will keep going. There’s a lot to do.

\n\n\n\n

[00:06:29] Nathan Wrigley: I think it’s kind of amazing because in the WordPress space, there are some of the, let’s call them the heavy hitters. You know, the big plugins that we’ve all heard of, the Yoasts of this world that kind of thing. Jetpack, all those kind of things. This, honestly has gone under the radar a bit for me, and yet those numbers are truly huge. Four and a half to 5 million people over a span of five years is really rather incredible.

\n\n\n\n

[00:06:54] Mariya Moeva: It grew very fast, yeah.

\n\n\n\n

[00:06:55] Nathan Wrigley: Yeah. And yet it’s not one that, well, I guess most people are reaching out to plugins to solve a problem, often a business problem. So, you know, there’s this idea of, I install this and there’s an ROI on that. This is not really that, not really ROI, it’s more site improvement. Okay, here’s a site that needs things fixing on it. Here’s some data about what can be fixed. And so maybe for that reason and that reason alone, it’s flown under the radar for me because it doesn’t have that commercial component to it.

\n\n\n\n

[00:07:24] Mariya Moeva: Yeah, for sure. It’s for free and it’s not something that, yeah, sells features or has like a premium model and we don’t market it so much. But I run a little survey in the product where people tell us where they heard from it, and a lot of the responses are either YouTube video, or like blog posts or word of mouth. So it seems to be spreading more that way.

\n\n\n\n

[00:07:46] Nathan Wrigley: Yeah, no kidding. I’ll just say the URL out loud in case you’re at a computer when you’re listening to this. It’s SiteKit, as one word, dot withgoogle.com. I don’t know if that’s the canonical URL, but that’s where I ended up when I did a quick search for it. So sitekit.withgoogle.com. And over there you’ll be able to download well, as it labels itself, Google’s official WordPress plugin.

\n\n\n\n

The first thing that surprises me is, a, Google’s interest in WordPress. That is fascinating to me. I mean, obviously we all know, Google is this giant, this leviathan. Maybe you’ve got interest in other CMSs, maybe not. I don’t really know. But I think that’s curious. But obviously 43% of the web, kind of makes sense to partner with WordPress, doesn’t it? To improve websites.

\n\n\n\n

[00:08:31] Mariya Moeva: Yeah. I work with plenty of CMSs. I work with Wix, with Squarespace, and we essentially what I try to do and what my team tries to do, we are called the Ecosystem Team. So we want to bring the things that we think would be useful to site owners and businesses directly to where they are.

\n\n\n\n

So if you are in your Wix dashboard, you should be able to see the things from Google that are useful. And same if you are in WordPress. And obviously WordPress is, orders of magnitude, a bigger footprint than any of the others. And also it has this special structure where everything is decentralised and people kind of mix and match. So that’s why we went with the plugin model. And using the public APIs, we want to show what’s possible.

\n\n\n\n

Because all the data that we use is public data. There’s no special Google feature that only the Google product gets, right? We are just combining it in interesting ways because I’ve spent so much time talking to people, like what they need. And so we just curate and combine in ways that are actually helping people to make decisions and to kind of clear the clutter.

\n\n\n\n

Because when you go to analytics, it’s like 50 reports and so many menus and it’s like, where do I start? So we try to give a starting point in Site Kit. And we also try to help with other things like make people sustainable. One thing that we recently launched just a month ago is called Reader Revenue Manager. So you can put a little prompt on your site, which asks people to give you like $2 or whatever currency you are in, or even put like a subscription.

\n\n\n\n

And so the idea is you don’t have to have massive traffic in order to generate revenue from your content. If you have your hundred thousand loyal readers, they can help you be more sustainable. So we’re looking at these kind of features, like what can we launch that is more for small and medium sites and would be helpful? And how can we make it as simple as possible? So that people don’t kind of drop off during the setup because it’s too complicated.

\n\n\n\n

[00:10:33] Nathan Wrigley: Would it be fair to summarise the plugin’s initial purpose as kind of binding a bunch of Google products, which otherwise you would have to go and navigate to elsewhere? So for example, I’m looking at the website now, Search Console, Analytics, Page Speed Insights, AdSense, Google Ads, and all of those kind of things. Typically we’d have to go and, you know, set up an account. I guess we’d have to do that with Site Kit anyway. But we’d have to go to the different URLs and do all of that.

\n\n\n\n

The intention of this then is to bind that inside of the WordPress UI, so it’s not just the person who’s the admin of that account. You can open it up so that people who have the right permissions inside of WordPress, they can see, for example, Google Analytics data. And it gets presented on the backend of WordPress rather than having to go to these other URLs. Is that how it all began as a way of sort of surfacing Google product data inside the UI of WordPress?

\n\n\n\n

[00:11:21] Mariya Moeva: Yeah, we wanted to bring the most important things directly to where people are, so they don’t have to bother going to 15 places. And we wanted to drastically decrease and curate the information so that it’s easy to understand, because when you have 15 dashboards in Analytics and 15 dashboards in Search Console, and then you have to figure out what to download and in which spreadsheet to merge and how to compare, then this is. Maybe if you have an agency taken care of, they can help you. But if you don’t, which 70% of our users say that they’re one person operation, so they’re taking care of their business, and on top of that, the website. We wanted to make it simpler to understand how you’re doing, and what you should do next with Google data.

\n\n\n\n

[00:12:02] Nathan Wrigley: So it’s a curated interface. So it’s not, I mean, maybe you can pull in every single thing if you so wish. But the idea is you give a, I don’t know, an easier to understand interface to, for example, Google Analytics.

\n\n\n\n

That was always the thing for me in Google Analytics. I’m sure that if you have the time and the expertise, like you’re an agency that deals with all of that, then all of that data is probably useful and credible. But for me, I just want to know some top level items. I don’t need to dig into the weeds of everything.

\n\n\n\n

And there was menus within menus, within menus, and I would get lost very quickly, and dispirited and essentially give up. So I guess this is an endeavor to get you what you need quickly inside the WordPress admin, so you don’t have to be an expert.

\n\n\n\n

[00:12:43] Mariya Moeva: Yeah. And then it gets more powerful when you are able to combine data from different products. So, for example, we have a feature called Search Funnel in the dashboard, which lets you, it combines data from Search Console on search impressions and search clicks, and then it combines data from Analytics on visitors on the site and conversions. So it kind of helps you map out the entire path, versus having to go over here, having to go over there, having to combine everything yourself. So when you combine things, then it gets also more powerful.

\n\n\n\n

We have another feature which lets you combine data from AdSense and Analytics. So if you have AdSense on your site, you can then see which pages earn you the most revenue. So when you have that, suddenly you can see, okay, so I have now these pages here, what queries are they ranking for? How much time people spend on them? Can I expand my content in that direction? It helps you to be more focused in kind of the strategy that you have for your site.

\n\n\n\n

[00:13:45] Nathan Wrigley: Is it just making, I mean, I say just, is it making API calls backwards and forwards to Google’s Analytics, Search Console, whatever, and then displaying that information, or is it kind of keeping it inside the WordPress database?

\n\n\n\n

[00:13:58] Mariya Moeva: We don’t store anything, well, almost anything. Yeah, we wanted to keep the data as secure as possible, so we created this proxy service, which kind of helps to exchange the credentials. So the person can authenticate with their Google account, and then from there, the data is pulled via API, and we cache the dashboard for one hour. After that we refreshed authentication token. From the data itself, nothing is stored.

\n\n\n\n

[00:14:23] Nathan Wrigley: So it’s just authentication information really that’s stored. Well, that’s kind of a given, I suppose. Otherwise you’ll be logging in every two minutes.

\n\n\n\n

[00:14:29] Mariya Moeva: Right. So that’s the model that we have because we really wanted people to be able to access this data, but also to keep it secure. And because of how the WordPress database is, we didn’t feel like we could save it there.

\n\n\n\n

[00:14:41] Nathan Wrigley: It sounds from what you’ve just said, it’s as if it’s combining things from a variety of different services, kind of linking them up in a structured way so that somebody who’s not particularly experienced can make connections between, I don’t know, ads and analytics. The spend on the ads and the analytics, you know, the ROI if you like.

\n\n\n\n

Does it do things uniquely? Is there something you can get inside of Site Kit which you could not get out of the individual products if you went there? Or is it just more of a, well, we’ve done the hard work for you, we’ve mapped these things together so you don’t have to think about it?

\n\n\n\n

[00:15:10] Mariya Moeva: The one thing that it does that I’m super excited about, and we’ll build on that, but we have the fundamental of it now, is it actually creates data for you. Because in contrast to Search Console or Analytics or all these other, which are kind of Google hosted, they can only tell you like a long help center article, go there on your site, then click this, then paste this code, right? They cannot help you with this, whereas Site Kit is on the website.

\n\n\n\n

So if you agree, which we don’t install anything without people’s consent, like they have to activate the feature, but if you agree, then we can do things on your behalf. So for example, we can track every time someone clicks the signup button and we can generate an analytics event for you, even if that plugin normally doesn’t send analytics events. And that way, suddenly you have your conversion data available.

\n\n\n\n

So very often people look to the top of the funnel, like how many people came to my site? But they don’t look to what these people did beyond kind of, oh, they stayed two minutes. So what does this mean? You want to see, did they buy the thing? Did they sign up for the thing, or subscribe or whatever it is? And we help create this data because we have this unique access to the source code of the site.

\n\n\n\n

So we create, for example, on leads generation or purchases. We also, every time that a specific page is viewed, we will generate an event about the author of the page. So then we can aggregate the data, which authors bring in the most page views. Let’s say you have like a site with five, six, whatever authors. Or which categories are bringing in the most engagement and these kind of things.

\n\n\n\n

[00:16:52] Nathan Wrigley: So it really does get very WordPressy. It’s not just to do with the Google side of things. It is mapping information from Google, so categories, author profiles, that kind of thing, and mapping them into the analytics that you get. Okay, that’s interesting. So it’s a two-way process, not just a one-way process.

\n\n\n\n

[00:17:09] Mariya Moeva: Yeah. It’s very much integrated with WordPress. We have also a lot of other features, like for example, that kind of stretch into other parts of the website. So this Reader Revenue Manager that I mentioned before with the prompts that you can put on your pages. You can go to the individual post and for every post there’s like a little piece of control UI that we’ve added there in the compose screen, where you can say, this is excluded from this prompt, or, you know, you can control from there.

\n\n\n\n

So we try to integrate where it makes sense, like where the person would want to take this action. And again, because it’s on the website, we can kind of spread out beyond just this one dashboard.

\n\n\n\n

[00:17:48] Nathan Wrigley: And would I, as a site admin, would I be able to assign permissions to different user roles within WordPress? So for example, an editor, or a certain user profile, may be able to see a subset of data. You know, for example, I don’t know, you are involved in the spending on AdSense. But you, other user over there, you’ve got nothing to do with that. But you are into the analytics, so you can see that, and you over there you can see that. Is that possible?

\n\n\n\n

[00:18:12] Mariya Moeva: We have something called dashboard sharing. So it has the same, like if you use Google Docs or anything like that, it has this little person with a plus in the corner, icon. And then from there, if you are the admin who set up this particular Google Service, who connected it to Site Kit, then you’re able to say who should be able to see it. So you essentially grant view only access to, let’s say all the editors, or all the contributors or whatever. And then you can choose which Google service’s data they can see.

\n\n\n\n

[00:18:44] Nathan Wrigley: So yes is the answer to that, yeah.

\n\n\n\n

[00:18:46] Mariya Moeva: Yeah, yeah. So they don’t have to set it up, I mean, they have to go through a very simplified setup, and then they basically get a kind of a screenshot. I mean it’s, you can still click on things, but you can’t change anything, so it’s kind of a view-only dashboard.

\n\n\n\n

[00:18:59] Nathan Wrigley: I’m kind of curious about the market that you pitch this to. So sell is the wrong word because it’s a free plugin, but who you’re pitching it at. So obviously if you’ve got that end user, the site owner. Maybe they’ve got a site and they’ve got a small business with a team. Maybe it’s just them, so there’s the whole permissions thing there.

\n\n\n\n

But also I know that Google, there are whole agencies out there who just specialise in Google products, and analysing the data that comes out of Analytics. Can you do that as well as an agency? Could I set this up for my clients and have some, you know, I’ve got my agency dashboard and I want to give this client access to this website, and this website and this website, but not these other ones? Can it be deployed on a sort of agency basis like that?

\n\n\n\n

[00:19:38] Mariya Moeva: You would still have to activate it for every individual site. So in that sense, there’s a bunch of steps that you have to go through. But once it’s activated, you can then share with any kind of client. And actually we have a lot of agencies that can install it for every site that they have.

\n\n\n\n

Just today someone came and after he saw the demo, he was like, okay, I’m going to install it for all my clients. Because what we’ve heard is that it’s exactly the level of information that a client would benefit from. And this means then that they pester the agency less. So we’ve literally heard people saying, you’re saving me a lot of phone calls. So that’s why agencies really like it.

\n\n\n\n

And the next big feature request, which we’re working on right now, is to generate like an email report out of that. So for those who don’t even want to log into WordPress to see, there will be a possibility to get this in their inbox.

\n\n\n\n

[00:20:30] Nathan Wrigley: So you could get it like a weekly summary, whatever it that wish to trigger. And, okay, so that could go anywhere really. And then your clients don’t even need to phone you about that.

\n\n\n\n

[00:20:41] Mariya Moeva: Yeah. So we are trying to really actively reach people where they are, even if that’s their email inbox.

\n\n\n\n

[00:20:49] Nathan Wrigley: And the other question I have is around your relationship with some of the bigger players, maybe hosting companies. Do you have this pre-installed on hosting cPanels and their, you know, whatever it is that they’ve got in their back end?

\n\n\n\n

[00:21:02] Mariya Moeva: Yeah, we have quite a few hosting providers that pre-install it for their WordPress customers. The reason for this is that they see better lifetime value for those customers that have a good idea of how their site is doing. And yeah, Hostinger is one of those. cPanel. Elementor pre-installs it for all of their users. And they see very good feedback because again, it’s super simple to set up and super easy to understand once you have it. So for them it’s kind of like an extra feature that they can offer, extra value to their users for free.

\n\n\n\n

[00:21:32] Nathan Wrigley: We know Google’s a fabulous company, but you don’t do things for nothing. So what’s the return? How does it work in reverse? So we know that presumably there must be an exchange of data. What are we signing up for if we install Site Kit?

\n\n\n\n

[00:21:47] Mariya Moeva: So, at least, I mean, Google is a huge company, right? There’s hundreds of thousands of people working. So I can’t speak for the whole of Google, but I can speak for the Ecosystem Team, which I’m part of, like the web ecosystem.

\n\n\n\n

The main investment here, or the main goal for us is that the open web continues to thrive, because if people don’t put content, interesting, relevant content on the open web, the search results are going to be very poor and that’s not a good product.

\n\n\n\n

So our idea is to support all the people who create content to make sure that they’re found, like if you’re a local business, that people can find you when they need stuff from that particular local business. And what we see is that, especially for smaller and medium sites, they really struggle, first with going online, and then with figuring out what they’re supposed to do. And so a lot of them give up because in comparison to other platforms, it’s a little bit of an upfront investment, right? Like you have to pay for hosting, you have to set up the site, you have to add content.

\n\n\n\n

So we try to help people as much as we can to see the value that the open web brings to them, so that they can continue to create for the open web. So that’s our hidden motivation. I think in that sense, we’re very much aligned with the WordPress community because here everybody cares about the open web and for all kind of small, weird websites to continue flourishing and get their like 100 or 300 or 1,000 readers that they deserve.

\n\n\n\n

So that’s the motivation. I think because it includes other things like AdSense and AdWords, like people can set up a ads campaign directly from Site Kit in a very simplified flow, and the same thing for AdSense. Obviously some money exchanges hands, but this is relatively minor compared to the benefit that we think there is for the web in general.

\n\n\n\n

[00:23:35] Nathan Wrigley: Google really does seem to have a very large presence at WordPress events. I mean, I don’t know about the smaller ones, you know, the regional sort of city based events, but at the, what they call flagship events, so WordCamp Asia and WordCamp Europe and US, there’s the whole sponsor area. And it’s usual to see one of the larger booths being occupied by Google. And I wonder, is it Site Kit that you are talking about when you are here or is it other things as well?

\n\n\n\n

But also it’s curious to me that Google would be here in that presence, because those things are not cheap to maintain. So there must be somebody up in Google somewhere saying, okay, this is something we want to invest in. So is it Site Kit that you are basically at the booth talking about?

\n\n\n\n

[00:24:19] Mariya Moeva: So me, yes, or people on my team. We have like a Site Kit section this year. There’s also Google Trends. There’s also some other people talking about user experience and on search. And this changes depending on which teams within Google want to reach out to the WordPress community.

\n\n\n\n

But with Site Kit, we’ve been pretty consistent for the last six years. We are always part of the booth. But the kind of whole team, like the whole Google booth content has kind of changed over the years as well depending on who’s coming.

\n\n\n\n

[00:24:51] Nathan Wrigley: I know that a lot of work being done is surrounding performance and things like that, and a lot of the Google staff that are in the WordPress space seem to be focused on that kind of thing, talking about the new APIs that are shipping in the browsers and all of those kind of things.

\n\n\n\n

Okay, so on the face of it, a fairly straightforward product to use. But I’m guessing the devil is in the detail. How do you go about supporting this? So for example, if I was to install it and to run into some problems, do you have like a, I don’t know, a documentation area or do you have support, or chat or anything like that? Because I know that with the best will in the world, people are going to run into problems. How do people manage that kind of thing?

\n\n\n\n

[00:25:27] Mariya Moeva: Yeah, this was something that I was super, I felt really strongly about based on my previous experience in the developer advocate world. Because very often I got feedback that it’s super hard to reach Google. And it’s also understandable given the scale of some of the products.

\n\n\n\n

But when I started this project I insisted that we allocate resources for support. So we have two people full-time support. One of them is upstairs, the support lead. He knows the product inside and out. They’re always on the forum, the plugin forum, support forum. And they answer usually within 24 hours. So everybody who has a question gets their question answered.

\n\n\n\n

We’ve also created the very detailed additions. When you have Site Kit, you also get a few additions to the Site Health forum, so you can share that information with them and they see like detailed stuff about the website so they can help debug. And in many, many cases, I’ve seen people coming pretty angry, leave a one star review, then James or Adam who are support people, engage with them, and then it turns into a five star review because they feel like, okay, someone listened to me and helped me figure out what is going on.

\n\n\n\n

We have real people answering questions relatively quickly. And they don’t just go, of course they focus on the WordPress support forum, but they also check Reddit and other places where people like mentioned Site Kit, and they try to help and to direct them to the right place. So for Site Kit, we have very robust support.

\n\n\n\n

Now, when it’s an issue with a product, a Google product that is connected to Site Kit, so it’s not a Site Kit problem, let’s say you got some kind of strange message from AdSense about your account status changing. Then we would have to hand over to the AdSense account manager or support team that they have, because we don’t know everything, like how AdSense makes decisions and stuff like that. But for anything Site Kit related, we are very fast to answer.

\n\n\n\n

[00:27:22] Nathan Wrigley: That’s good to hear because I think you’re right. I think the perception with any giant company is that it kind of becomes a bit impersonal, and Google would be no exception. And having just a forum which never seems to get an answer, you drop something in, six months later, you go back and nobody’s done anything in there except close the thread, kind of slightly annoying. But something like this. So 24 hours, roughly speaking, is the turnaround time.

\n\n\n\n

[00:27:45] Mariya Moeva: Yeah. I mean, not on the weekend, but yeah.

\n\n\n\n

[00:27:46] Nathan Wrigley: Yeah. Still, that’s pretty amazing.

\n\n\n\n

[00:27:47] Mariya Moeva: Yeah, yeah. We are very serious about this because, I mean, also the WordPress community is really strong, right? So you want to show that we care. We want to hear from people. A lot of bugs then also turn into feature requests and get prioritised to be developed. So, yeah, we really value when people come to complain. It’s a good thing.

\n\n\n\n

[00:28:03] Nathan Wrigley: Excellent. Okay, well, we won’t open that as a goal, please send in your complaints. But nevertheless, it’s nice that you take it seriously.

\n\n\n\n

So it sounds like it’s under active development. You sound like this is basically what you’re doing over at Google. Do you have a roadmap? Do you have a sort of laundry list of things that you want to achieve over the next six months? Interesting things that we might want to hear about.

\n\n\n\n

[00:28:21] Mariya Moeva: Sure, yeah. I mean, my ultimate vision, which is not the next six months, I would love to move away as much as possible from just stats. As curated and as kind of structured as it is right now, and get more into like recommendations, and like to-do list. Because what I hear from people again and again, it’s like, I have two hours this month, tell me what should I do with those two hours?

\n\n\n\n

So they’re asking a lot from us. They’re asking essentially to look, analyse everything and to prioritise their tasks, to tell them which one is the most important or most impactful. And this is like several levels of analysis further than where we are now.

\n\n\n\n

So one thing that we are looking to work on is benchmarking, because you cannot know are you growing or not, unless you know how you’re doing on average. And today, people who are a little bit more savvy can do this of course, but a lot of people don’t. And so for us to be able to tell you, not just you got 20 clicks this week, but also this is okay for you, or this is better than last year, this time, or this is better than your competitors. I think that’s a really valuable way to interpret the data and to help people understand what it means.

\n\n\n\n

[00:29:38] Nathan Wrigley: Yeah. And really, Google is one of the only entities that can provide that kind of data.

\n\n\n\n

[00:29:44] Mariya Moeva: Especially for search.

\n\n\n\n

[00:29:45] Nathan Wrigley: Yeah, especially against competitors. That’s really interesting because analysing the data, whilst it’s fun for some people, I feel it’s not that interesting for most people. And so just having spreadsheets of data, charts of data, it’s interesting and you no doubt gain some important knowledge from it. But being told, here’s the outcomes of that data, try doing this thing and try doing that thing, that is much more profound than just demonstrating the data.

\n\n\n\n

And I’m guessing, I could be wrong about this, and I’ve more or less said this in every interview over the last year, I’m guessing there’s an AI component to all of that. Getting AI to sort of analyse the data and give useful feedback.

\n\n\n\n

[00:30:22] Mariya Moeva: I mean, we are investigating how to do all of these things. I think in the case of WordPress, it’s a little bit trickier again, because of the distributed nature, and the fact that all the site information lives on the site and then all the Google information. So we’re not like fully hosted where you can access everything and control everything, something like a Squarespace or a Wix.

\n\n\n\n

But there’s definitely, like AI is a perfect use case for this, right? Like benchmarking, you can bucket sites into relevant groups and then see, are they performing better or worse? That’s like classic machine learning case. And we will see exactly, technically, how we’re going to reach this, but that’s one of the things that we’re working on right now.

\n\n\n\n

Another thing is to expand much more the conversion reporting and to help people understand, are they achieving their goals? Because this is something that surprisingly to me, so many people pay money and invest time in the site, and they cannot articulate what the site is doing. Is it working? Is it doing its job? And they’re like, well, like I got some people visiting. And I’m like, did they buy the thing? So you have to know what to

\n\n\n\n

track, and then also to take action after you see the metrics, like to move them in one direction or another. And so helping people like map out this full funnel is one thing that we’re working on. And the other thing is also this email report.

\n\n\n\n

[00:31:40] Nathan Wrigley: Yeah, that’s amazing. So really under active development. And you sound very impassioned about it. You sound like this has become your mission, you know?

\n\n\n\n

[00:31:47] Mariya Moeva: I think, nobody ever complained that something is easy, right? When you make things simple and easy for people, they appreciate, even if they’re more knowledgeable than if they can do more advanced things themselves.

\n\n\n\n

And I personally really care, like every time that I find a random website with really strange content, but just, someone put their soul into it. I recently found something in Zurich of like tours of Zurich, walking tours, by someone who really cares about history and architecture.

\n\n\n\n

And it’s a terrible website design wise, but the content is amazing. And I was like, okay, this person could use some help, but he’s doing, or she’s doing like a great job at the content part, and then should get the traffic that they deserve for this. So that’s what motivates me also to come here.

\n\n\n\n

One person, two or three WordCamps ago came over and was saying, everything about Google is hard except Site Kit. And I was like, yeah, that’s what we are trying to do. We really want to simplify things for you. So, yeah, being here is also super motivating. To talk to people and to hear feedback and feature requests. And again, we like when people come to complain.

\n\n\n\n

[00:32:54] Nathan Wrigley: Well, I was just speaking to a few people prior to you entering the room and those few people all have Site Kit installed on their site. So you’re doing something right.

\n\n\n\n

[00:33:02] Mariya Moeva: I hope it’s helpful. I hope it answers some questions and saves people some time. That’s what we are trying to do. Yeah, we are in the part of Google that has the ecosystem focus, so we know that ecosystem changes take longer. I mean, still it’s a fast growing plugin. It got to 5 million in 5 years, but still that’s 5 years. And in the context of software companies which move very fast, 5 years is a long time.

\n\n\n\n

Yeah, we will keep going and hopefully more people can benefit from it. But we do have, yeah, still there are many people who come by and they’re like, whoa, what is this? Show me.

\n\n\n\n

[00:33:36] Nathan Wrigley: Well, that’s nice. There’s for growth as well.

\n\n\n\n

[00:33:38] Mariya Moeva: Yeah, yeah. For sure. I mean, for sure there’s always, and more people create new sites. So, again, going back to that hosting provider question of like, can we bring it to them at the moment of creation so that they know this is something I can use?

\n\n\n\n

[00:33:50] Nathan Wrigley: Yeah. So one more time, the URL is sitekit.withgoogle.com. I will place that into the show notes as well.

\n\n\n\n

Mariya, I think that’s everything that I have to ask. Thank you so much for chatting to me about Site Kit.

\n\n\n\n

[00:34:01] Mariya Moeva: Yeah, thank you for the invitation. It’s been a pleasure to talk about the ecosystem. And, yeah, if people have feature requests, they can always write us either on GitHub in the Site Kit repo, or on the support forum, or if they are coming to any WordCamp where we also are, we are also super happy to hear. So we always love to know what people struggle with, so that we can build it for them and make it easy.

\n\n\n\n

[00:34:23] Nathan Wrigley: Thank you very much indeed.

\n
\n\n\n\n

On the podcast today we have Mariya Moeva.

\n\n\n\n

Mariya has more than 15 years of experience in tech across search quality, developer advocacy, community building and outreach, and product management. Currently she’s the product lead for Site Kit, Google’s official WordPress plugin. She’s presented at WordCamp Europe in Basel this year, and joins us to talk about the journey from studying classical Japanese literature to fighting web spam at Google, and eventually shaping open source tools for the web.

\n\n\n\n

Mariya talks about her passion for the open web and how years of direct feedback from site owners shaped the vision for Site Kit, making complex analytics accessible and actionable for everyone, from solo bloggers to agencies and hosting providers.

\n\n\n\n

Site Kit has had impressive growth for a WordPress plugin, currently there are 5 million active installs and a monthly user base of 700,000.

\n\n\n\n

We learn how Site Kit bundles core Google products, like Search Console, Analytics, PageSpeed Insights, AdSense into a simpler, curated WordPress dashboard, giving actionable insights without the need to trawl through multiple complex interfaces.

\n\n\n\n

Mariya explains how the plugin is intentionally beginner-friendly, with features like role-based dashboard sharing, integration with WordPress’ author and category systems, and some newer additions like Reader Revenue Manager to help site owners become more sustainable.

\n\n\n\n

She shares Google’s motivations for investing so much in WordPress and the open web, and how her team is committed to active support, trying to respond rapidly on forums and listening closely to feedback.

\n\n\n\n

We discuss Site Kit’s roadmap, from benchmarking and reporting features to smarter, more personalised recommendations in the future.

\n\n\n\n

If you’ve ever felt overwhelmed by analytics dashboards, or are looking for ways to make data more practical and valuable inside WordPress, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

Site Kit

\n\n\n\n

 Reader Revenue Manager

\n\n\n\n

Google Trends

\n\n\n\n

Site Kit support

\n\n\n\n

Site Kit on GitHub

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 30 Jul 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:3;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:112:\"Open Channels FM: Navigating Rebranding Phase Two with Sunsetting Series and Channel Updates at Open Channels FM\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=104313\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:119:\"https://openchannels.fm/navigating-rebranding-phase-two-with-sunsetting-series-and-channel-updates-at-open-channels-fm/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:180:\"BobWP\'s updating us on the podcast\'s rebranding journey called \"phase two.\" He explains how they\'re changing series, sunsetting some, and keeping the good stuff fresh and relevant.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 30 Jul 2025 09:50:56 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:4;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:54:\"WordCamp Central: Highlights from WordCamp Masaka 2025\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"https://central.wordcamp.org/?p=11380324\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:79:\"https://central.wordcamp.org/news/2025/07/highlights-from-wordcamp-masaka-2025/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:17056:\"
\n
\n

WordCamp Masaka 2025, held from July 18–19 at Equator University of Science and Technology, wrapped up with a strong sense of community, innovation, and shared purpose. The second edition of this dynamic gathering brought together 291 attendees under the theme “Connecting Communities, Inspiring Ideas.” While we were just 9 shy of our 300-participant target, the energy and engagement made the event a resounding success.

\n\n\n\n

Participants from across Uganda and beyond including speakers from South Africa, Kenya, and Ghana—engaged in the two days of insightful talks, practical workshops, and meaningful conversations about the future of WordPress and open-source collaboration.

\n\n\n\n

A heartfelt thank you to our amazing sponsors for their incredible support. This event would not have been possible without your generosity.

\n\n\n\n\n
\n\n\n\n
\n

A Look at the Event

\n\n\n\n

Among the many impactful moments was the panel discussion titled “From Barriers to Belonging: Building Diverse & Inclusive Tech Communities.” This session encouraged meaningful dialogue around representation and inclusion, prompting participants to reflect on how to build more welcoming and equitable environments in tech.

\n\n\n\n
\"Panel
From left: Cerinah N Kasirye (Moderator), Sumaiya Nalukwago, Samuel Osei, and Scovia Akello Emaru — panelists of “From Barriers to Belonging: Building Diverse and Inclusive Tech Communities” at WordCamp Masaka 2025.
\n\n\n\n

The event also featured a vibrant Student Engagement Program, which provided high school, vocational, and university students with an opportunity to explore WordPress. Through hands-on workshops, practical presentations, and networking opportunities with industry professionals, students gained valuable exposure and insights. Notably, several high school representatives expressed strong interest in bringing hands-on WordPress workshops and training sessions to their schools. They also proposed mentorship programs to help students develop real-world projects—highlighting a growing enthusiasm for learning and community involvement.

\n\n\n\n
\n
\n
\"\"
\n
\n\n\n\n
\n
\"\"
\n
\n
\n\n\n\n

The swag from Jetpack was warmly appreciated by attendees, adding a thoughtful and useful touch that made the event even more memorable.

\n\n\n\n
\n
\n
\"Thabotswana,
Thabo Tswana from Jetpack at WordCamp Masaka 2025 sponsor table.
\n
\n\n\n\n
\n
\"Swag
Jetpack swag items on display at WordCamp Masaka 2025 sponsor table.
\n
\n
\n\n\n\n

Key themes explored during the event included:

\n\n\n\n
    \n
  • Community and Career Growth: Sessions offered guidance on personal and professional development within the WordPress ecosystem.
  • \n\n\n\n
  • Security Focus: Attendees gained essential knowledge to protect websites and mitigate threats.
  • \n\n\n\n
  • Design and Development: Practical insights covered modern workflows, full site editing, and block editor techniques.
  • \n\n\n\n
  • Diversity and Inclusion: Sessions highlighted how missing perspectives create an innovation gap that could threaten WordPress’s future, emphasizing the need to build diverse and inclusive communities and empower women in tech.
  • \n\n\n\n
  • Website Management: Strategies for backup, restoration, and site migration were shared.
  • \n\n\n\n
  • Marketing and Innovation: Topics included growth strategies like email marketing, AI and VR applications, and WordPress’s role in sustainable development.
  • \n
\n\n\n\n

Throughout the event, networking breaks and a community photo session provided ample opportunities for attendees to connect, share ideas, and build lasting relationships.

\n\n\n\n
\n
\"\"
\n\n\n\n
\n
\n
\"\"
\n
\n\n\n\n
\n
\"\"
\n
\n
\n\n\n\n
\"\"
\n\n\n\n
\n
\n
\"\"
\n
\n\n\n\n
\n
\"\"
\n
\n
\n\n\n\n
\n
\n
\"\"
\n
\n
\n\n\n\n\n\n\n\n
\n
\n
\n\n\n\n
\n

Impact and Community Spirit

\n\n\n\n

WordCamp Masaka 2025 was a testament to the thriving WordPress community in Uganda. It served as a powerful platform for knowledge exchange, skill enhancement, and fostering a strong sense of camaraderie. The diverse range of topics, from technical deep-dives to discussions on community building and future technologies, ensured there was something for everyone.

\n\n\n\n

The enthusiasm of the speakers, the active participation of attendees, and the invaluable support from sponsors created an unforgettable experience.

\n\n\n\n

During the event, Arthur Kasirye (Community Program Supporter), Ssebuwufu Moses (WordCamp Masaka 2025 Lead Organizer), and Thabo Tswana (Event Supporter) met with Professor Mouhamad Mpezamihigo, Vice Chancellor of Equator University of Science and Technology, to introduce the WordPress Credits Internship Program—an initiative that integrates university students into the WordPress open source community through hands-on contribution projects. Professor Mpezamihigo expressed strong interest in the program and committed to formally submitting the university’s interest form, signaling a promising collaboration to advance student engagement and practical skills development.

\n\n\n\n

The success of this event reinforces the growing potential of WordPress as a tool for digital empowerment and economic development in the region. The connections made and the knowledge shared will undoubtedly contribute to the continued growth and innovation within the Ugandan tech landscape.

\n
\n\n\n\n
\n

Looking Ahead

\n\n\n\n

The community looks forward to building on the momentum generated by WordCamp Masaka 2025 by continuing to collaborate, learn, and contribute to the global WordPress project.

\n\n\n\n
\n

Follow Masaka WordPress Meetup on X and LinkedIn for updates, news, and upcoming events.

\n\n\n\n\n\n\n\n

For more information about WordCamp Masaka 2025, please visit https://masaka.wordcamp.org/2025/.

\n
\n
\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 30 Jul 2025 05:50:19 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:15:\"Ssebuwufu Moses\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:5;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:83:\"HeroPress: A Decade with WordPress: My Journey of Growth, Contribution, and Courage\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://heropress.com/?post_type=heropress-essays&p=8082\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:212:\"https://heropress.com/essays/a-decade-with-wordpress-my-journey-of-growth-contribution-and-courage/#utm_source=rss&utm_medium=rss&utm_campaign=a-decade-with-wordpress-my-journey-of-growth-contribution-and-courage\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:15545:\"\"Pull
\"\"
\n\n\n\n

I never imagined I’d be writing this.

\n\n\n\n

Ten years. A full decade of working in tech, without pause. Of growing, stumbling, learning, and showing up — with WordPress at the center of it all.

\n\n\n\n

When I look back, the journey feels full — full of lessons, full of change, and full of heart.

\n\n\n\n
\n\n\n\n

From India’s City of Lakes to the Heart of Open Source

\n\n\n\n

This year marks a major milestone in my life — 10 years of professional experience in the WordPress ecosystem. As I reflect on this journey, it’s not just a work anniversary. It’s a story woven with personal growth, learning, community, and quiet resilience — a journey that began in a small city in Udaipur, Rajasthan, India, and now reaches across the globe.

\n\n\n\n
\"\"
\n\n\n\n

I was born and raised in Udaipur — a city known for its lakes and history, but not especially for tech companies. After completing my college degree, like many fresh graduates, I faced the uncertainty of landing a job — especially with the added constraint of staying in my hometown. Thankfully, my parents were incredibly supportive. They guided me, encouraged me, and reminded me that ambition has no boundaries — not even geographical ones.

\n\n\n\n
\n\n\n\n

The Unexpected Beginning

\n\n\n\n

Though I had trained in software testing, I didn’t know much about WordPress back then. I stumbled into the WordPress world by joining a local startup in Udaipur. That decision would change the course of my life.

\n\n\n\n

The company, led by Puneet Sahalot, was where my real journey began. Puneet, a close friend and mentor, introduced me to WordPress — its structure, its vastness, and more importantly, its values. He had a gift for seeing potential in people and believed in exploring uncharted paths. Puneet is no longer with us today, but his wisdom and encouragement remain a cornerstone in my journey.

\n\n\n\n

With his influence, I began digging deeper into WordPress. Finding my first bug on the WordPress core was a moment of both confusion and pride. Submitting it felt like stepping into a world where I didn’t just work on projects — I became part of a global movement.

\n\n\n\n
\n

“That one bug wasn’t just a bug — it was a beginning.”

\n
\n\n\n\n

That first bug ignited something within me. I started contributing to various areas — from core testing to translations, organizing local WordCamps, and even speaking at events. It felt empowering to give back to something that gave me so much.

\n\n\n\n\n\n\n\n
\n\n\n\n

Growth Beyond Comfort Zones

\n\n\n\n

Marriage brought a new chapter — I moved to a metro city and joined Brainstorm Force, where I worked on a suite of powerful WordPress products, including the very popular Astra theme.

\n\n\n\n

From a small local team to a larger product-driven organization, the shift was both challenging and fulfilling. I moved from being a tester to becoming a Product Manager, learning to balance leadership, quality assurance, user experience, and team collaboration. I found myself not just testing products — but shaping them.

\n\n\n\n
\n

I was also incredibly grateful to have a life partner who encouraged me to aim higher and supported my ambitions every step of the way.

\n
\n\n\n\n

One of the proudest moments in my journey was being selected to lead the test team for the WordPress 5.6 and 5.7 releases. It was surreal. The appreciation and recognition I received from the global community made me realize how far I had come — from finding my first bug to helping others make WordPress better.

\n\n\n\n\n\n\n\n
\n\n\n\n

A New Rhythm: Work and Motherhood

\n\n\n\n

Life shifted gears again when I joined Caseproof (MemberPress) — a fully remote role that brought with it the flexibility I needed at a very important time in my life.

\n\n\n\n

Working remotely was a new experience but quickly became a blessing. When I became a mother, I embraced both worlds with open arms. I continued to work with the same dedication, sometimes holding my daughter in one arm while debugging with the other. My work never stopped, and my love for WordPress only deepened.

\n\n\n\n

These moments, though challenging, became proof that passion, purpose, and parenthood can co-exist beautifully. Each bug fixed, each feature tested, each call attended — became part of a rhythm that blended professional focus with maternal joy.

\n\n\n\n
\n

“I didn’t take big leaps. I took small steps. But I took them every day. That’s how I got here.”

\n
\n\n\n\n

Some days were messy. Some were magical. But all of them were mine.

\n\n\n\n\n\n\n\n
\n\n\n\n

Beyond the Screen: The Explorer in Me

\n\n\n\n

Outside of my professional life, I’m a passionate foodie and an avid traveler. Exploring new places and trying different cuisines fills me with joy and curiosity. So far, I’ve had the privilege of visiting 30 countries — each one offering a unique flavor, story, and lesson.

\n\n\n\n

Recently, my family and I began a new chapter by relocating to Dubai. It’s a city that’s fast-paced, full of opportunity, and incredibly vibrant — and we’re absolutely loving it so far. This new environment continues to inspire both my personal and professional sides in unexpected ways.

\n\n\n\n\n\n\n\n
\n\n\n\n

Still Learning, Still Contributing

\n\n\n\n

Even after 10 years, I still feel like a student. The tech world evolves fast, and I try to keep pace. Recently, I’ve been diving into modern testing tools like Playwright and Cypress, and experimenting with AI-based automation — which is not just fascinating but necessary in today’s evolving digital landscape.

\n\n\n\n

I’m excited to explore new contribution opportunities in WordPress — mentoring, accessibility testing, performance initiatives, and more. There’s always more to give back, and more to learn.

\n\n\n\n
\n\n\n\n

Final Thoughts

\n\n\n\n

This journey wasn’t built on dramatic turns or overnight success. It was made up of steady progress, genuine passion, and a strong belief in community and consistency.

\n\n\n\n
\n

To those starting out, unsure of their path — your story is waiting. Take that first step.

\n
\n\n\n\n

“You can build a global impact even from a small city. WordPress doesn’t ask where you’re from — it only asks, what will you contribute?”

\n\n\n\n
\n\n\n\n

\"🌊\" Reflections After 10 Years

\n\n\n\n

If I’ve learned anything over these ten years, it’s this:

\n\n\n\n
    \n
  • You don’t need to be loud to be seen.
  • \n\n\n\n
  • You don’t need to do it all at once.
  • \n\n\n\n
  • You just need to keep showing up — honestly, consistently, and with curiosity.
  • \n
\n\n\n\n
\n\n\n\n

Let’s Connect

\n\n\n\n\n\n\n\n

If you ever want to talk about testing, WordPress contributions, remote work, motherhood, or just career growth, feel free to reach out. I’d love to help, share, and learn with you.

\n\n\n\n

\n

The post A Decade with WordPress: My Journey of Growth, Contribution, and Courage appeared first on HeroPress.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 30 Jul 2025 04:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:10:\"Monika Rao\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:6;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"Open Channels FM: Designing for Clients Using Figma Systems and WordPress Block Themes\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=104272\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:93:\"https://openchannels.fm/designing-for-clients-using-figma-systems-and-wordpress-block-themes/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:217:\"In the first episode of Publishing Flow, host Derek and Ash Shaw talk about how Figma transformed their WordPress workflow, enhancing design collaboration, client workflows, and even open-sourcing their design system.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 29 Jul 2025 12:22:11 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:7;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"Carlos Bravo: Enable xdebug on wordpress-develop repo\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://carlosbravo.blog/?p=1222\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:76:\"https://carlosbravo.blog/2025/07/28/enable-xdebug-on-wordpress-develop-repo/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1492:\"

Just adding this for my future self’s health. First, update the PHP config file.

\n\n\n\n
// Enable xdebug.\n\n...\nxdebug.mode=develop,debug\n...
\n\n\n\n

The VSCode launch file:

\n\n\n\n
{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n		{\n			\"name\": \"Listen for XDebug\",\n			\"type\": \"php\",\n			\"request\": \"launch\",\n			\"port\": 9003,\n			\"pathMappings\": {\n				\"/var/www\": \"${workspaceFolder}\",\n			},\n		},\n    ]\n}\n
\n\n\n\n

Do not forget to update your .env file.

\n\n\n\n
...\n\n# Where to run WordPress from. Valid options are \'src\' and \'build\'.\nLOCAL_DIR=src\n\n# The PHP version to use. Valid options are \'latest\', and \'{version}-fpm\'.\nLOCAL_PHP=latest\n\n# Whether or not to enable Xdebug.\nLOCAL_PHP_XDEBUG=true\n\n...
\n\n\n\n

Beware of trying to make it work with AI; you may end up with some hallucinations and tons of files!

\n\n\n\n
\"Screenshot
AI generated and updated files, that are not needed in my case.
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 28 Jul 2025 16:18:59 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Carlos Bravo\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:8;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:109:\"Gutenberg Times: Gutenberg Changelog 119 – WordPress 6.8.2 and 6.9, Gutenberg 21.1, 21.2, and 21.3 Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"https://gutenbergtimes.com/?post_type=podcast&p=40947\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:121:\"https://gutenbergtimes.com/podcast/gutenberg-changelog-119-wordpress-6-8-2-and-6-9-gutenberg-21-1-21-2-and-21-3-releases/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:49786:\"

Birgit Pauli-Haack and guest Tammie Lister discuss the latest WordPress and Gutenberg updates, including WordPress 6.8.2 and 6.9, as well as Gutenberg plugin releases 21.1, 21.2, and 21.3. They highlight the renewed excitement around shipping features, the introduction of a core AI team, and significant developments such as Data Views, advanced admin design planning, and ongoing work on collaborative editing. The episode emphasizes the importance of experimenting with new tools, building muscle memory, and encouraging feedback to help shape the evolution of WordPress and Gutenberg.

\n\n\n\n

Show Notes / Transcript

\n\n\n\n\n\n\n\n

Show Notes

\n\n\n\n

WordPress 6.9 Planning Proposal and Call for Volunteers

\n\n\n\n\n\n\n\n

What’s released

\n\n\n\n\n\n\n\n

What’s in active development or discussed

\n\n\n\n\n\n\n\n

Stay in Touch

\n\n\n\n
\n\n
\n\n\n\n

Transcript

\n\n\n\n

Birgit Pauli-Haack [00:00:12]: Well, welcome to our 119th episode of the Good Merck Changelog podcast. In today’s episode, we’ll talk about WordPress 6.8.2, WordPress 6.9, Gutenberg plugin releases 21.1, 2 and 3. And then we have two couple of things that are still in the works that need your feedback and discussions. I’m your host, Birgit Pauli-Haack, curator at the Gutenberg Times and WordPress developer advocate and core contributor for WordPress. Tammie is joining me today and I’m so happy to be able to catch up with my dear friend. Tammie was the design lead on the Gutenberg Project Phase one and still contributes a ton to the project. She sponsored two days a week by a range of awesome companies and individuals, and she’s also a co-founder of Guildenberg, a company focused on empowering and supporting product makers and also creates products herself. Welcome Tammie to our show. How are you today?

\n\n\n\n

Tammie Lister [00:01:10]: I’m great. How are you?

\n\n\n\n

Birgit Pauli-Haack [00:01:12]: Oh, I’m good, I’m good. Yeah. I’m still on Vacation Brain. It’s my second week back and it’s the first episode so I don’t know if I speak Norwegian, German, English or any other language.

\n\n\n\n

Tammie Lister [00:01:24]: So I think you just need to hold on to that Vacation Brain. It’s important right it for a while.

\n\n\n\n

Birgit Pauli-Haack [00:01:31]: Well, it’s holding on to me actually quite a bit. So when you were last on the show it was January, that’s half a year ago. So a lot has happened since. Anything that stands out for you that you’re excited about, that you’re working on.

\n\n\n\n

Tammie Lister [00:01:48]: And that you, yeah, tiny really not significant thing called the core AI team that been released and also just everyone focusing together for 6.9. I feel the most significant thing I think is just the force that everyone is rejuvenated with working in this in the direction of features and the excitement everyone has about shipping. I don’t know about you, but there’s generally like a, a shipping is in the air. That’s what it feels like at the moment. People want to ship things and make things and then explore the things. And I think we’re going to find as we kind of go through the change log. That’s what caught me as I was, I was reading it, people are using these features and then going oops, I need this. Oops, I need this. And that is what makes everything better as well.

\n\n\n\n

Birgit Pauli-Haack [00:02:37]: Yes, I agree with you. There’s a lot of creativity in the air. There’s a lot of excitement about what’s coming next. With the AI, but also just with how to work with the Gutenberg editor. Now that’s really at a total different level. Yeah, I totally get it. Okay, so let’s get started.

\n\n\n\n

Announcements

\n\n\n\n

WordPress 6.9 well, the good news is there will be a second major release in 2025. Since the end of May, Automattic has said they’re contributing again to the open source project. And so some of the contributors are back, but there are also new ideas in there that are coming. So the core committers met in a quarterly meeting earlier. You’re one of the core committers, so you were at the meeting, but I know Cheltenham rules there.

\n\n\n\n

Tammie Lister [00:03:23]: Yes.

\n\n\n\n

Birgit Pauli-Haack [00:03:24]: And then out came a proposal that Jeff Paul published on the make blog with a planning proposal as well as the call for volunteers. So Beta 1 is scheduled for October 21st. If the release team that comes together kind of follows the plan and then the release candidate, which is very important for a lot of things, is November 11th, and the final release is then December 2nd in 2025. So from what I hear, and please correct me if I’m wrong or add to it what I’m missing, it’s going to be a little bit more improvements on the design tools. It’s the new admin design. At some point we will see something more in the release and there will also be maybe even just in experimental ways in Gutenberg collaborative editing. There’s some explorations, big explorations in the media library, what else.

\n\n\n\n

Tammie Lister [00:04:22]: So I think a lot of it’s being worked out at the moment and the roadmap post is due. So everything you say, I think it’s to be determined the boundaries of a lot of those things. But the best way that I can frame it is 6.9 will lay a lot of the groundwork for 7.0 as well. So for some of these things that we want, we have to do some infrastructure just like we had to do with Gutenberg in the phases we have to do infrastructure before. So just to suddenly go ta da, here’s an admin redesign that would be a little bit a lot for people. So how that happens in what ways, that happens in what areas, that is something that’s. It’s either I use the word sprinkles, that’s a weird word to use. But either some areas more functional could be in 6.9. I think it’s been worked out at the moment where that is the most useful. But at least friction, I think that’s the best way to. You know, it’s one of those Venn diagrams. How can we get the most feedback without causing the least issues at the same time? There’s been lots of different talks about how that could be done. Everyone will have an opinion and I think that’s just going to shape up over the next kind of few weeks and then we will see from there.

\n\n\n\n

Birgit Pauli-Haack [00:05:31]: Yeah, yeah, I, I like that. You know, the, the. All those expirations and aspirations in the air. We’ll see where that all lands and. Yeah. Will you hear it?

\n\n\n\n

Tammie Lister [00:05:40]: You.

\n\n\n\n

Birgit Pauli-Haack [00:05:40]: You will hear it at the Gutenberg Changelog first, because a lot of things will happen in the Gutenberg plugins in the following releases. If my calculations are correct, I think 21.8 will be the plugin release that will make all the features into the 6.9 release. Could be also release candidate 20.9 or something like that. But yeah, something like that. So there are a few. We are at three now, so there are five more Gutenberg releases and we will find out what will make it and what will be still in experiments or just the underlying infrastructure. You mentioned it before. AI is in the air. Around WordCamp Europe there was a new core team announced and we talked about it a month ago with Annabella and Anne McCarthy. Vacation Brain.

\n\n\n\n

Community Contributions

\n\n\n\n

So this week James LePage, one of the team reps, published a post called AI Building Blocks for WordPress. And he outlines first that it’s not going to be primarily in core. It’s more like everything is built as a canonical plugin, like a feature plugin, and to void kind of early login into a space that’s highly not settled and still exploratory, all the standards or something like that. So there are four plugins. One is the PHP AI client SDK. SDK stands for Software Development Kit. So for any that any developer who wants to include AI features can build an appliance for that. Then the Abilities API, you might have heard about it under the name Feature API. That has changed. It’s now Abilities API and that is that you can register features from your plugin that NNI can react on or act on. And then the MCP adapter, that’s Model Content protocol adapter for WordPress. And then the last one is the AI Experiments plugin, which is actually a showcase plugin to reel it all in. Yeah, so that’s kind of that what the post outlines.

\n\n\n\n

Tammie Lister [00:07:57]: Yeah, and I think the Experiments plugin is, as you say, it’s where everyone’s going to come together and use these things and also show people how to use these things and how they could implement them. We’ve had experiments in Gutenberg, we’ve kind of tucked away. We’ve also had experiments in design, we’ve had experiments in theme and I really love this because everyone is trying to work out how on earth they do AI, how on earth they do things where they can be useful in these projects. And one of these things can be maybe you do not know how to very few people do how to do PhPSD or MCP, all these kind of things but you really want to start learning that then being involved in the experiments plugin gives you an opportunity to kind of ride along and start to learn and discover with these teams that are already at that edge and exploring and it’s more on product kind of work in those kind of pieces.

\n\n\n\n

Birgit Pauli-Haack [00:08:56]: Yeah, for sure. So if you also want to kind of Follow along Experience WordPress developers I know that Jon Bossenger has a live stream on Twitch where he kind of explores the new things and figures out a way to actually implement something. So he has used the Abilities API to create courses in Sensei via an AI client. So if you want to see how that’s going to work, go to the YouTube channel of Jon Bossenger. I definitely will share the link in the show notes about that. I also know that Ryan Welcher on his Twitch streams did quite a few experimentations with that lately. He’s doing his block development cookbook but afterwards he’s going to jump into AI again. But the previous editions definitely had some MCP and abilities API explorations there. That might be interesting for you because when you see an experienced developer kind of explore things and kind of also go detours. Yeah. You get a better way of thinking for yourself and your head around things that work.

\n\n\n\n

Tammie Lister [00:09:59]: Many, many of them are also exploring it like it’s a new thing for everybody even if you are an experienced developer. So being able to sit there and as someone who’s talking through and working through it really helps you kind of feel it’s not just you that maybe.

\n\n\n\n

Birgit Pauli-Haack [00:10:14]: Doesn’t understand.

\n\n\n\n

Tammie Lister [00:10:17]: We’re all trying to work out where everything goes and how this new world functions.

\n\n\n\n

Birgit Pauli-Haack [00:10:22]: Yeah. You are not alone.

\n\n\n\n

Tammie Lister [00:10:24]: Yes. Which is what’s also exciting. And one of the things that’s also mentioned in the Roadmap is Gutenberg Phase three. A lot of the pieces in there, from the admin redesign to collaborative editing, all of and the Media Lab, which I’m so excited about. Media is one of my little pet things. But being able to have all of that work be looked at as well, is going to be very exciting.

\n\n\n\n

Birgit Pauli-Haack [00:10:49]: Yeah, yeah. For sure. Absolutely. Yeah. All right.

\n\n\n\n

What’s Released – WordPress 6.8.2

\n\n\n\n

What’s released? Well, just this week came out WordPress 6.8.2 maintenance release with about 15 block editor fixes as well as 20 core tickets. A full list of bugs is in the release candidate announcement. You get from the release post block editor features where some of the bigger problems with the navigation link some fixed the query loop bug that overrode the query inherit attribute. Yeah. So it’s a nice good bug fix maintenance release that makes life a little bit easier and squashes some bugs.

\n\n\n\n

Gutenberg 21.1

\n\n\n\n

And that brings us to Gutenberg 21.1 release. There were a few enhancements in there. Do you want to take it on and kick it off?

\n\n\n\n

Enhancements

\n\n\n\n

Tammie Lister [00:11:40]: Yeah, I’m going to start with the block library, which is always a good place to start. It’s been around for a while, but it still is really good to kind of refine it. And the big pieces here really. Comments pagination had some unwanted block margin. Little things like this though feel like they’re small but they’re really significant for something that you. You go to time and time again having that unwanted margin and there’s little refinements and to me it shows maturity and that little refinement coming through. And then this navigation block. I actually was part of this piece with the sub indicator. This shows sometimes a small thing can feel. So it’s where the flip submenu. So the submenu indicates whether something has a submenu or not. And it wasn’t showing it, it wasn’t visually indicating. And it seems like something would be a very easy commit. It is not because it has a lot more implications in testing. So it shows in collaboration how we should have more extensive testing helps as well.

\n\n\n\n

Birgit Pauli-Haack [00:12:45]: Yeah, yeah, I can see that. And for the bottom margin, if they are unwanted kind of and removed, I can see quite a few theme developers who. Who fixes that on their theme with custom CSS. Now they need to kind of also remove the custom cms.

\n\n\n\n

Tammie Lister [00:13:02]: Yeah.

\n\n\n\n

Birgit Pauli-Haack [00:13:02]: To fix that.

\n\n\n\n

Tammie Lister [00:13:03]: So which is good. But it also shows that if you are making these. So. So one of the things I always suggest is have a kind of hacks file or at least a section so you know that you’ve hacked it. So you know you’ve worked around the system, not just kind of hide it within your theme. And it’s really important to notice these releases and check back if you possibly can with and kind of the last one here in the block Library is remove screencast.com embed block variation. So again, if something isn’t getting used as much, been able to take that away.

\n\n\n\n

Birgit Pauli-Haack [00:13:35]: Yeah, absolutely. And well, they also need to take away the O embed part in Core, not only in Gutenberg there. Yeah, so and then there were some updates on the interactivity API that’s certainly interesting for developers who have actually explored that already. There’s now support for new router regions where you can click on and jump to and it supports also new styles and script models on the client side navigation. And it also starts using TypeScript for some of the helpers and some of the components or things. I call them modules. So you can better test it against and make sure that your code is compliant there. So the next thing is really exciting for me because I’m always. I hear a lot of plugin developers kind of talking about extensibility and now we have one block is actually really easy to extend and allow additional block variations. That’s the social icons block.

\n\n\n\n

Now you can add any other service that is not maintained by Core easily in a block variation easily. And the PR is 70261 if you want to jump on it has some nice instructions on how to do this. I also know that Justin Tadlock is working on a tutorial for the block developer for the developer blog. Not Block, blog. I’m really excited about it because I’m or it came to a good timing for myself. I’m working on a block theme for the good work times and we have the podcast there, and the podcast needs additional things in there like the podcast name and the description is one thing, but you also need additional social icons where you can subscribe to the blog and to the podcast. So I identified seven of them and of course only one of them is in Core and I need to create the other six of them. I did my first trial on it and it was fairly easy to do. It gets a little bit complicated when you have your own styling to it. But if you’re just going to push it into the Gutenberg interface and let the user style it or change color pretty much, then it’s fairly easy to implement.

\n\n\n\n

Bug Fixes

\n\n\n\n

Tammie Lister [00:16:00]: So I guess we move on to bug fixes now and then. Bug fixes. This is one of my favorite sections really because it means we’re just kind of cleaning up a little bit. So calendar block colors do not change between global styles and theme JSON things like that we spoke about like the theme fixing things, things like that, really, really important. Quality of life changes, and then social links allow icon size to be reset and on a theme. Jason Styles. That’s 70380. That is really, really important as well. Again, a Quality of Life. And you were talking about hacks. There probably has been a hack that you had to put in to kind of work around that as well.

\n\n\n\n

Birgit Pauli-Haack [00:16:39]: Yeah. For both of them for the calendar blog as well as for the social links.

\n\n\n\n

Tammie Lister [00:16:42]: Yeah, I can imagine there’s like a not important for the second one.

\n\n\n\n

Birgit Pauli-Haack [00:16:50]: Yeah. Yeah. I also came to accustomed to study the bug fixes because sometimes you run into bugs and say is it still there and. Or is it not? And all of them. Oh, it’s not there anymore. And it’s kind of really.

\n\n\n\n

Tammie Lister [00:17:03]: And then you can just clean up your bug file, right?

\n\n\n\n

Birgit Pauli-Haack [00:17:06]: Yeah. And you can clean up your brain with the workarounds. Not only the theme files but also the memory stuff. Yeah. And that is pretty much what I found interesting in the Gutenberg 21.1 there’s a whole changelog with tooling and documentation updates and the release post actually has all the change log in there. So you can read up about that.

\n\n\n\n

Gutenberg 21.2

\n\n\n\n

And we’re coming to Gutenberg 21.2 and here we see already some changes to the Data Views. It introduces the per page sizes to control the available size of the items per page. So that is something that comes from the admin where you can say it’s kind of getting feature part on the WP admin view you can say okay, I want 50 things on my page. Please do this also on the new Data View. So that’s cool.

\n\n\n\n

Tammie Lister [00:18:04]: Yeah, I love this. This also and the kind of next release shows that Data Views is getting used by people because it shows that we need to improve it. I am someone that has been using Data Views in situations and they are great, but they are quite limiting. And it means the more potential you have, the more easily it is to use for an implement. And it also means more feedback. So that’s what’s happening and how and improvements are happening. So yeah, the more things like this, whenever you see Data Views or API, that’s what gets me very happy. I like the other fixes, but this sets us. It’s moving us forward. And I think sometimes a lot of this can feel hidden because it’s more like the infrastructure in the sense. But Data Views, data Forms and API work, it really just moves us forward.

\n\n\n\n

Birgit Pauli-Haack [00:18:53]: Yeah. So can you share in what kind of situations you use the Data Views?

\n\n\n\n

Tammie Lister [00:18:59]: I’ve been using a lot of experimental, so one of the big things I’ve been doing is anytime I’m creating a plugin that’s pretty much what I use for my interface at the moment. I am trying to not have the normal the interface we use. I’m trying to use the Data Views from now on because it’s the way we’re going. So it feels a lot more natural to do. It’s easy to do it on the front and you can do it on the back. You can choose how much you have a little bit depending on what you want to do. You may have to do wrappers, all those kinds of different things. So. But again through a lot of it’s through experimentation but through doing experimentation you find the limitations. So there was a ticket that there’s been a few people having a conversation. The limitation on settings for example tangent to Data Views you can’t have a two column necessarily under a particular situation but if you want to do that there needs to be bug fixes. So it’s by using and by finding out we need to use them in particular situations. So again this having per pages and the one after this improving inline all of these kind of things allow you to be able to start to implement in different ways.

\n\n\n\n

Birgit Pauli-Haack [00:20:11]: Yeah, yeah. And I can also see that there’s. There’s two effects in there with starting now to use the Data Views. One is you get a lot of experiments and practice in it. So experience is kind of you try to adopt it, see how you fail or the system fails and then you can improve upon it. But the muscle memory that you build that you kind of get into the new API really pushes you forward when things then land in core.

\n\n\n\n

Tammie Lister [00:20:39]: And I was lucky enough, I think it was back in November. Goodness me, at Core Dev Days there was an awesome workshop in it and, and that it feels a long time ago now, but it felt kind of like it wasn’t early with Data Views but it kind of felt that it was earlier and. But that version feels very far away from the version that we’re getting to play with now and the version now it’s a lot less grumpy when you implement it. So I would encourage everyone just if you, if you’re gonna make something and you just want to experiment with it, just start playing with it and see about implementing it. There’s some great stuff on the developer blog about using it which is just easy to follow. I think it’s been recently updated. Unless you would know that I think it’s been updated or recently updated.

\n\n\n\n

Birgit Pauli-Haack [00:21:29]: Yeah, I think one mom did a blog post about this. Yeah, yeah, yeah. The next one is. Do you want to take the next one too?

\n\n\n\n

Tammie Lister [00:21:38]: Yes. So that’s a block library one. So the block library add open in app toggle. That’s like a one those like tongue twisters open in new tab toggle to navigation block sidebar. Okay, so this one, what I like about this is it shows a consistency of interface and actually it shows it even more so if you and I the nerd that I am, I like reading back into tickets and. And actually it shows that. So when it got implemented, one of the last comments is we need to roll this out places to make sure it’s consistent. So it’s adding a consistency but then it needs to be rolled out to make sure it’s consistent in other places. So the interface that we have is great. But if it’s not consistent. So yeah, that. That’s what it does. It puts it in the relevant place for where you need the information at the right time and then it’s rolling it out. So it’s. It’s a small quality of life thing. But these. That’s the type of thing we need to do with the editor interface at the moment.

\n\n\n\n

Birgit Pauli-Haack [00:22:41]: Absolutely. Yes, absolutely. Because you cannot just say oh, I’m in a different context. Why is it not working like that. Yeah, yeah.

\n\n\n\n

Tammie Lister [00:22:49]: And. And thinking we now know where people are looking at the time. Like you can make a best guess. You can be like me kind of. But there is a language that is becoming and the language that is refining and then that means we can take some things away and we can really refine where things go.

\n\n\n\n

Birgit Pauli-Haack [00:23:05]: Yeah, there was. So the next thing is what the format library that improves the inline image replacement workflow. I have not quite figured out what that does, but I’m just recently discovered the inline image. Again. I kind of was at the early on image block fan and not doing anything in line with images. But I like when you do icons in there or cannot because the whole paragraph works differently when you have an image in there and then you have to fiddle with it.

\n\n\n\n

Tammie Lister [00:23:37]: Yeah.

\n\n\n\n

Birgit Pauli-Haack [00:23:37]: And so they. They improve the workflow. I’m not sure if that’s getting there. It’s getting there. Yeah. So if you are using inline images. Yeah. Check it out and see if it really helps you with getting around that.

\n\n\n\n

Tammie Lister [00:23:51]: So in the block editor. So this ticket says allow replacing the post locked modal component 70586 but if you kind of dig into this the too long don’t read is prep for collaborative editing work. So it’s basically providing a filter for that which is such an enticing kind of part of it. So in order to be able to build again like what we were talking about, we want all these things in 6.9 and 7, but we need some infrastructure. We need that extensibility and we need the foundations to be able to do that. You can’t just slap a layer on it and ta da. It just works. So we need all this infrastructure.

\n\n\n\n

Birgit Pauli-Haack [00:24:29]: Yeah. And it’s also a shift in kind of approach of things. We have 20 years was only one person editing a post and now we need to get ready that multiple people adding a post. So all the lock things need to be a little bit moving from a.

\n\n\n\n

Tammie Lister [00:24:44]: Book to an iPad.

\n\n\n\n

Birgit Pauli-Haack [00:24:49]: This was really a book to an iPad. The iPad is still one person using it.

\n\n\n\n

Tammie Lister [00:24:53]: Well, yeah, but it’s multiple layered.

\n\n\n\n

Birgit Pauli-Haack [00:24:55]: Yeah, it definitely gets more complex. Yeah. When multiple people do things and when instead of one.

\n\n\n\n

Tammie Lister [00:25:02]: Yeah, that’s a tin can with a bit of string to a zoom. There you go. That’s a random analogy.

\n\n\n\n

Birgit Pauli-Haack [00:25:12]: Yeah, that’s a good analogy. It’s like, it’s like from the caveman to the. Yeah, the Middle Ages. Yeah. Yeah. We have some changes in the components library and there’s now the date calendar and date range calendar components. They seem to have been missing and now they’re here. So you can use them for your interfaces when you do events, something like that, or scheduling things. So you have more components to work with and you don’t have to build them yourself.

\n\n\n\n

Tammie Lister [00:25:46]: But that’s also part of the design system which we need. Right. So part of it is again the first version. It’s best bet. It’s like we think we know, but it when in phase one, when we were building an editor now we needed all these components and all these pieces because we were building an editor, we were making paragraphs and headings. That’s what we were doing. And it’s not that anymore.

\n\n\n\n

It’s a kit that you can build anything you possibly can think of. So therefore it needs all the pieces of an interface kit to be able to extend so the components. And it’s now a question of that. Does it need everything? No, because that’s a lot to maintain. But it’s certainly if something is used frequently and is going to be like really required by the interface frequently, then it needs to have it. So having our own components or at least having something like native is really, really important.

\n\n\n\n

Birgit Pauli-Haack [00:26:44]: Yeah. Especially now when they get to the. The whole new admin is built on components greater now.

\n\n\n\n

Tammie Lister [00:26:52]: And it also means that product makers can use those components a lot easier.

\n\n\n\n

Birgit Pauli-Haack [00:26:56]: Lovely. Yeah. You don’t have to make decisions about interfaces anymore.

\n\n\n\n

Tammie Lister [00:26:59]: Yes. I was like, I need a calendar, I need it to work, I need an age.

\n\n\n\n

Birgit Pauli-Haack [00:27:04]: What are the attributes?

\n\n\n\n

Tammie Lister [00:27:07]: Yeah. And then I think often people like is. Oh, it’s always going to look. No, you can style it into your heart’s content. It can be pink with sparkles if you really want. Maybe don’t do that. But you. But that’s the thing of a component. You are getting the bones and the structure and the muscle. You aren’t necessarily getting the makeup.

\n\n\n\n

Birgit Pauli-Haack [00:27:29]: But it’s a weird analogy day. Yeah. But it’s good. Yeah. Yeah. For the Interactivity API, maybe we kind of need to think about some of the knowledge is there. But the two additional PRs that came into good 20.1 will prioritize the custom. Click event handlers for full page navigation that’s now enabled and then also Preserve media. Preserve media attributes on the initial style sheet after client side navigation. So it’s a client side navigation. It’s a full page navigation that has been more stable on the. With the interactivity API. So router feature that was started last plugin released and now it’s coming. It came in an additional feature there.

\n\n\n\n

Tammie Lister [00:28:21]: And moving on from that and I’m just going to kind of have a note about API. We likely are going to see more APIs because we should. Because that then shows that you can extend. There’s been talk about should menus have something like that with the templates API we’ve seen with site editor sort post types alphabetically within the add template modal. That’s 70562. Again, all of these things before maybe we would have had something that wasn’t an API. But an API is a far better way of doing this. It’s a far more modern approach of doing this and it’s the proper way to do extensibility.

\n\n\n\n

Birgit Pauli-Haack [00:28:57]: Yeah. And you have to know how you build it first before you can extend this. Yeah. Right.

\n\n\n\n

Tammie Lister [00:29:03]: So you have to.

\n\n\n\n

Birgit Pauli-Haack [00:29:04]: Yeah, you have to know what.

\n\n\n\n

Tammie Lister [00:29:05]: What you’re going to build. And the thing is you can’t particularly to undertake an API because there’s a maintenance burden. And I think this is always something particularly like doing work in extensibility. Yes. You could support everything, but unless you have a time machine, that’s a lot. So really being considerate, particularly once you have an API of just how useful is that? How much of a burden is that going to support is really, really important.

\n\n\n\n

Bug Fixes

\n\n\n\n

Birgit Pauli-Haack [00:29:35]: Yeah, absolutely. And we are in the bug fixes again. I like the first one that I want to point out that it’s the image box it preserves now the line breaks when the caption comes from the media library. So there was a disconnect. Yeah, absolutely. Where you have to do it twice. Why is this losing my. My line breaks and now I have to do it again. Yeah. So now it can do it automatically. It’s smart enough. And the same is fixed now with the RSS block. Some of the. Well, WordPress allows you to put markup into the title, but when the RSS block pulls in the title it displayed the raw coding instead of the. Yeah, now it kind of just strips it out and shows a very consistent title display in your RSS block for from other sites.

\n\n\n\n

Tammie Lister [00:30:33]: So this is in bug fixes, but it’s quite important. It’s enable support for showing individual block variations in style book.

\n\n\n\n

Birgit Pauli-Haack [00:30:41]: Oh yeah, yeah. That’s pretty much my most favorite feature enhancement. I think it’s enhancement but it’s on a bug fix because you were trying to look to click on the style variations and it wouldn’t come so there was expectations enables it in the right.

\n\n\n\n

Tammie Lister [00:31:01]: Section is basically.

\n\n\n\n

Birgit Pauli-Haack [00:31:06]: What happened was when you wanted to style the button block in your site in the styles, you were only able to style the default one. But when you clicked on the outline, you got back to the default one. You couldn’t style the outline. You had to use a theme JSON or some other JSON file for it or plugin for that. I don’t know how hard the fix was, but it’s there. I think that’s it.

\n\n\n\n

Gutenberg 21.3

\n\n\n\n

So we’re coming for Gutenberg 21.3. Do you want to start out again because it’s your favorite pieces.

\n\n\n\n

Tammie Lister [00:31:38]: So the first section is Data views under enhancement. So again this really shows the data views are getting used and that’s too long don’t read. I guess this episode is these features are getting used by people and these feature getting therefore improvements and iterations and people working on them. So there’s two particular things to call out or there’s several things at least there’s add the data field type 70657, and then add group by field support to grid layout. So this is about grouping items by fields and allows you to organize amounts of data and extend layouts such as table layout in the future. So it’s setting that groundwork and allowing grouping and it also supports the data Field type. So it’s again setting up for something that you can do now and allowing you. And also it links in with the new calendar component. So it’s that kind of link in with the new components as well.

\n\n\n\n

Birgit Pauli-Haack [00:32:36]: Yes. So it had a date type field, date time field type. And now there’s also a date field type that’s just a date here. It’s kind of. You need it for the events calendar in the ticket.

\n\n\n\n

Tammie Lister [00:32:49]: Yeah. It says filtering and editing features will be implemented in the future.

\n\n\n\n

Birgit Pauli-Haack [00:32:53]: Yes. Yeah. And then for the block library, the cover block now supports a poster image. So users with large video file or slow Internet connection see still an image in there before the video loads. That’s kind of an enhancement for slower connections. Or if you do it locally and you can’t get the video from another place. Yeah, so that’s pretty cool. And then the post content block has now an add name selector, a tag name selector. That’s kind of the part where you identify semantic ways for the. For the cost. Post content. Is it a main content? It’s a section content. It’s an article kind of semantic thing. Missing words here. Tags, tags. HTML. Semantic HTML tags. I think the. The technical term for that is.

\n\n\n\n

Tammie Lister [00:33:44]: Yeah, there was one we haven’t called out, but I’d like to mention about layout. Adding max limit to row span and column in grid, which is a quality life, which I think is really important as well.

\n\n\n\n

Birgit Pauli-Haack [00:33:55]: Excellent. Yeah. Oh yeah, here I see it. Yes, it’s absolutely. Yeah. And that also shows that there’s a work to be done on the Grid blog. And that might. Might be. It might not come to 6.9, but it’s definitely coming. It’s better. It’s back on people’s task list. Yeah. Under the bug fixing there was nothing really stand out for me.

\n\n\n\n

Bug Fixes

\n\n\n\n

Tammie Lister [00:34:18]: It just looks like a lot of quality of life and.

\n\n\n\n

Birgit Pauli-Haack [00:34:20]: Yeah, well, some blocks good bug.

\n\n\n\n

Tammie Lister [00:34:22]: Fixing to me, which is. There’s been a lot of activity in this release which is really good and there’s a big section of quality and documentation, which always makes me happy.

\n\n\n\n

Birgit Pauli-Haack [00:34:33]: Absolutely. So that was it. There was one. Oh, that’s what I was looking for. Yeah. There’s one that says remove public APIs for getting images. That has to do with the list view. That there are images in the. In the list view to identify some of the blocks. When you have a cover block that you see the image of that there was an implementation for that, but that is still experimental and there was a shift in how experiments are actually implemented in Gutenberg so people are not tempted to use experimental public APIs anymore. Yeah. So if you find that confusing. It definitely is, but it’s also for your own good, so to speak. For the good of the maintenance safety. Absolutely. For future safety. But of course, there’s an acknowledgment that there are plenty of experimental things still in Gutenberg that all have been used in production for many years. Yeah, that was it. That was the Gutenberg release.

\n\n\n\n

What’s in Active Development or Discussed

\n\n\n\n

Now we have what’s in active development or discussed. We can certainly not talk about everything, but we wanted to talk about the update experiment Settings screens to use the data forms. There’s a PR by Fabian who said, okay, so Gutenberg has an experiment screen where you can check the on or off some of the experiments, like for the collaborative editing or for the grid layout for some forms. And he said, well, if we do want other people to use the data views, we probably should rewrite that experiment settings page in a Gutenberg. So I really love that initiative. Yeah.

\n\n\n\n

Tammie Lister [00:36:15]: Experiment should be experimental.

\n\n\n\n

Birgit Pauli-Haack [00:36:19]: Say that again.

\n\n\n\n

Tammie Lister [00:36:21]: The experiment should be experimental.

\n\n\n\n

Birgit Pauli-Haack [00:36:23]: Absolutely, absolutely. Well, a few plugin releases before Anne went through and actually gave some section headers in there. So they were not just added to the list and not kind of clustered together.

\n\n\n\n

Tammie Lister [00:36:37]: And that’s where there was a. Like, under certain circumstances the two column can be worked out. So that’s how we find out the limitations.

\n\n\n\n

Birgit Pauli-Haack [00:36:45]: Right.

\n\n\n\n

Tammie Lister [00:36:45]: Like by using this, all these features again, we have to use them. This is what we’ve learned time and time again. They’re great, they’re amazing, but we need to use them, we need to implement them. Even we can’t put them in a beta and say, oh, just do some usability testing. No, we need to build with them. We need to get our hands dirty and need to see, oh my goodness, you can’t do this. Oh, this doesn’t work with this type of data. That’s what we need to happen. So using it in the plugin makes a lot of sense in a way that doesn’t cause a negative experience. And that page isn’t going to hopefully cause a negative experience.

\n\n\n\n

Birgit Pauli-Haack [00:37:25]: Well, if you want to learn how to do this, yeah, that’s a kind of an interesting page to look at the code to learn from it and kind of say, maybe you can implement it in your own one page settings page.

\n\n\n\n

Tammie Lister [00:37:38]: It looks so much better when you look at it. You look at and no shade. Because at the time the settings pages were amazing in WordPress. But times have changed and looking at the two columns or the new Iterations. Even the single version is night and day. It really is.

\n\n\n\n

Birgit Pauli-Haack [00:37:59]: Yeah. When you see the before and after, you see. Really see the difference. Okay, I want to live there. I don’t want to live there anymore. Yes.

\n\n\n\n

Tammie Lister [00:38:07]: I want to be there in that world. World has white space.

\n\n\n\n

Birgit Pauli-Haack [00:38:14]: Yeah, the road has white space. A couple of days ago I showed my husband, he is also a programmer, but he is a programmer from the early database days. Yeah like a clipper and ebay and all that. And then he sees some of the. And he looked at the screen and said well what’s all the white space there?

\n\n\n\n

Tammie Lister [00:38:43]: That was the thing like back then it costs, it cost bandwidth. Like every line was a cost. I remember when I learned you couldn’t have have large space taken up because it costs. Now it doesn’t. Now I just want all the space because it doesn’t. Well, it does cost, but it doesn’t cost as much now. It almost costs us more to not have it because it costs us like a negative user experience which is weird, wibbly, upside downy world to live in. But that’s what we have. Of course we don’t go too far to the extreme where you can actually implement it or use it because too much white space. Space is weird. But yeah, just be able to breathe in an interface.

\n\n\n\n

Birgit Pauli-Haack [00:39:21]: Yeah. And. But it’s interesting that these visual DNA is still in. In some people’s minds. Right. That’s what that. What I kind of took away from it said go away, go back to your 90s, go back to your terminal.

\n\n\n\n

Tammie Lister [00:39:37]: Go back to your courier terminal.

\n\n\n\n

Birgit Pauli-Haack [00:39:39]: No, he says why are you doing command line? Isn’t that so 80s didn’t we call go away with? Okay. So yeah, it’s interesting discussions in Pauli-Haack’s home. So we have a second thing that we wanted to talk about that’s the PR by Luigio Teschio and he is working on exploring template versioning to preserve active plugin and theme templates instead of letting it be overwritten by database. And I don’t know how that’s going to work. Have you looked at that?

\n\n\n\n

Tammie Lister [00:40:18]: I haven’t really looked at it yet, but I’m really curious to follow it. And I think just exploring different ways of doing things is really interesting as well.

\n\n\n\n

Birgit Pauli-Haack [00:40:28]: Yeah. So I leave that link in the.

\n\n\n\n

Tammie Lister [00:40:31]: Call for feedback and thoughts on it, which is a really interesting perspective. I think real world use cases is something I was trying to think about and that’s the kind of feedback I would like to give and that’s what I’ll be going back to it with trying to add that type of thinking.

\n\n\n\n

Birgit Pauli-Haack [00:40:48]: Excellent. Excellent. So, well, I guess we’re at the end of the show. This is it. And as always, dear listeners, thank you so much for being here. And if you want, you can leave us a review on any of your favorite podcast apps. And if you’re on Spotify, the review is you can also leave comments. So we can have a little conversation there as well, if you want to. But the show notes will be published on Gutenbergtime.com/Podcast. This is episode 119. If you have questions or suggestions or news you want to include us, send them to changelog@gutenbergtimes.com that’s changelog@gutenbergtimes.com so, Tam, is there anything that you want our listeners to take away from it that we haven’t talked about?

\n\n\n\n

Tammie Lister [00:41:35]: I think the big one is if you can start experimenting and exploring things like data views and data forms in your product, because now is the time to do that. And then start giving feedback, because there’s lots to come this year that you’ll be able to end early next year. So being able to, as you mentioned, start that muscle memory and start learning with it is really, really important.

\n\n\n\n

Birgit Pauli-Haack [00:41:57]: Excellent. Yeah, that’s a great way to end this podcast episode. And thank you all for listening. Thank you, Tammie, for being here. And goodbye. And I’ll see you at WordCamp. Yes, thanks for having me. All right, take care.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 26 Jul 2025 15:23:55 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:9;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"Gutenberg Times: WP-Admin Redesign, Block theme adoption — Weekend Edition 335\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://gutenbergtimes.com/?p=40940\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"https://gutenbergtimes.com/wp-admin-redesign-block-theme-adoption-weekend-edition-335/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:18505:\"

Hi,

\n\n\n\n

ICYMI, organizers of WordCamp US (WCUS) announced Danny Sullivan, search liaison at Google, as the keynote speaker. It’s hugely relevant now that sites are dealing with decreasing clicks from search engines. The brilliant Rae Morey of The Repository has the skinny for you about what else is happening at WCUS.

\n\n\n\n

I am really getting excited for WordCamp US. Are you, too? Did you get your ticket yet? I would love to meet you and catch up!

\n\n\n\n

You might have to juggle family plans and necessities, though. You might need to get kids to school or enjoy the last summer camping trip over Labor Day weekend. Or you might be apprehensive about traveling to the US in general. All good reasons. And I will miss you. We can catch up afterward. \"🤗\"

\n\n\n\n

Enjoy this week’s updates.

\n\n\n\n

Yours, \"💕\"
Birgit

\n\n\n
\n\n
\n\n
\n\n\n

Developing Gutenberg and WordPress

\n\n\n\n

First-time release lead Aki Hamano made Gutenberg 21.3 RC available for testing.

\n\n\n\n

Tammie Lister and I included Gutenberg 21.1, 21.2, and 21.3 in our latest Gutenberg Changelog episode recording. We also talked about WordPress 6.9, the AI Team, and more. The episode will drop on your favorite podcast app over the weekend.

\n\n\n\n
\"\"
\n\n\n\n

Admin Redesign, Abilities API, and Routing

\n\n\n\n

Lead architect of Gutenberg Matias Ventura published two issues on GitHub for broad discussion of the next iteration of the Admin Design and tied together concepts of the Command Palette with the Abilities API.

\n\n\n\n

In Admin Materials and Surfaces, Ventura outlines the next iteration of the Admin redesign with screenshots. He breaks it down into three main building blocks. You can think of it like organizing a house:

\n\n\n\n
    \n
  • Materials are like the rooms and spaces (the foundation, main areas, and pop-up spaces)
  • \n\n\n\n
  • Concepts are like the furniture and appliances that go in those rooms (navigation menus, content lists, forms, etc.)
  • \n\n\n\n
  • Screens are like how you arrange everything together for different purposes (living room setup vs. kitchen setup)
  • \n
\n\n\n\n

The goal is to make WordPress’s admin area more flexible so users can customize their workspace, and plugin developers can create interfaces that fit naturally with the rest of the system. The updates need to ensure consistency, flexibility, scalability, and clarity across the entire admin and plugin experience. To learn more details, consult the GitHub post.

\n\n\n\n

In the Abilities & Workflows Overview, Ventura outlines plans to create a unified system for handling keyboard shortcuts, commands, and AI-powered workflows. This would enable creating a “smart assistant” for WordPress that can help users accomplish tasks more efficiently.

\n\n\n\n

The post aims to show how contributors can connect these three things that are currently separate and also creates a shared language to discuss these concepts.

\n\n\n\n
    \n
  1. Abilities—Callable functions with well-defined descriptions, inputs, and outputs schemas that both humans and AI can understand and use
  2. \n\n\n\n
  3. Workflows—Chains of abilities, possibly requiring user interaction via form controls along the way to accomplish complex tasks
  4. \n\n\n\n
  5. Visual Workflow Editor—A drag-and-drop interface where users can create custom workflows without coding
  6. \n
\n\n\n\n

In short, the idea is to make it possible that you instead of manually creating a new page (going to Pages → Add New → entering title → setting up template), you could use a workflow that asks for the page title upfront, automatically creates it, and takes you straight to editing – all triggered by a single command.

\n\n\n\n

In his overview issue, Admin Redesign: A solid routing foundation, Riad Benguella shares insights from the site editor work and discusses plans to improve the admin dashboard’s structure by changing how pages load and connect. Using advancements from the performance team on speculative loading and view transitions, as well as various new libraries, should help the admin page load more quickly and smoothly and improve the developer experience for contributors as well as 3rd-party product builders.

\n\n\n\n

The challenging aspect is ensuring backward compatibility in WordPress so that thousands of plugins continue to function well while creating a new, faster foundation.

\n\n\n\n

All three GitHub issues are ready to be discussed with the larger site builder and developer community. It’s the moment to take part in the next iteration of the admin design by providing feedback and sharing use cases.

\n\n\n\n

In this week’s podcast episode, Tammie Lister makes a case to developers to work with the current iteration of DataViews and Data Form for plugins to become familiar with the approaches, develop muscle memory, and provide feedback on what doesn’t work yet to make sure it’s included in the following iterations of the Admin Design work.

\n\n\n\n
\n

\"🎙\" The latest episode is Gutenberg Changelog 119—WordPress 6.8.2 and 6.9, Gutenberg 21.1, 21.2, and 21.3 Releases with Tammie Lister.

\n\n\n\n
\"Tammie
\n\n\n\n

If you are listening via Spotify, please leave a comment. If you listen via other podcast apps, please leave a review. It’ll help with the distribution.

\n
\n\n\n\n

Plugins, Themes, and Tools for #nocode Site Builders and Owners

\n\n\n\n

Wes Theron, Automattic, published a new video to teach you how to use the Group Block. Besides adding a Group block to your canvas, he covered how you can nest multiple Group blocks and control them via the ListView. He also has tips on styling a group block, organizing your layout, and previewing it on mobile devices or locking it against accidental changes.

\n\n\n\n
\n\n\n\n

Simon Cooke from Human Made put out an interesting piece called Full Site Editing vs. Leading Page Builders: A Strategic Comparison. He explains why going with Full Site Editing can be a game changer—it’s built right into the WordPress core. This means it’s generally faster, more secure, and way easier to manage when things get big. On the flip side, page builders can really bog things down and cause a headache with plugins, especially for larger teams.

\n\n\n\n
\n\n\n\n

The View Transitions plugin by Felix Arntz played the main character in Jamie Marsland’s video This FREE WordPress Plugin Is a Must-Have for Every Website! It makes your WordPress site to feel faster, smoother, and more like a modern app. Marsland feels that anyone’s hardly talking about it.

\n\n\n
\n
\n\n
\n
\n\n\n

Joe Simpson Jr. gave a talk at WordCamp Monclair: A Journey from Page Builders to Blocks in WordPress and it now available on WordPressTV.
If you’re still hanging on to the Classic Editor or those tried-and-true theme methods, you’re not alone—and this session is right up your alley. Simpson takes a leisurely stroll through a real-world site rebuild, sharing the bumps and surprises that come with moving from classic setups or page builders to full site editing with blocks. He’ll talk through how to pick the right tools for your needs, compare the different ways to build a site these days, and help you figure out when it might finally be time to make the switch. Simpson also even looks back at how Gutenberg has evolved over the years. Whether you’re new to WordPress or just a bit slow to embrace the changes, there’s something here for you.

\n\n\n\n

Theme Development for Full Site Editing and Blocks

\n\n\n\n

Cloudways’ Abdul Rehman set out to explain WordPress Hybrid Themes: What They Are, Why They Matter, and How to Build One in 2025. He found
Hybrid WordPress themes are the best of both worlds—they mix old-school classic theme structure with cool new block features. You get more design freedom without ditching your old plugins or custom code. Perfect if you want flexibility but aren’t ready for a full block theme leap.

\n\n\n\n
\n\n\n\n

At WordCamp Montclair, Beth Soderberg—who’s been using blocks since the early days—shared how she builds custom WordPress themes in 2025. She walked us through her current process of building a block theme. She talked about choosing base themes and explained how her tools and workflow have changed. Soderberg also broke down how she decides when to use the editor and when it’s better to dive into code, plus showed how blocks can handle page structure instead of relying on old-school templates. She wrapped up with some tips on setting up the site editor so it’s easy for anyone to manage a block-based site.

\n\n\n
\n

“Keeping up with Gutenberg – Index 2025”
A chronological list of the WordPress Make Blog posts from various teams involved in Gutenberg development: Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. The previous years are also available: 2020 | 2021 | 2022 | 2023 | 2024

\n
\n\n\n

Building Blocks and tools for the block editor

\n\n\n\n

If you found last week’s four-hour Block Development Cookbook video was a little too much to get started, Ryan Welcher began the work of slicing up the cookbook into individual recipes videos. Here is his announcement video and first recipe: Save Time With This Block Binding Trick!

\n\n\n
\n
\n\n
\n
\n\n\n
\n\n\n
\n

Need a plugin .zip from Gutenberg’s master branch?
Gutenberg Times provides daily build for testing and review.

\n\n\n\n

Now also available via WordPress Playground. There is no need for a test site locally or on a server. Have you been using it? Email me with your experience

\n\n\n\n

\"GitHub

\n
\n\n\n

Questions? Suggestions? Ideas?
Don’t hesitate to send them via email or
send me a message on WordPress Slack or Twitter @bph.

\n\n\n\n
\n\n\n\n

For questions to be answered on the Gutenberg Changelog,
send them to changelog@gutenbergtimes.com

\n\n\n\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 25 Jul 2025 23:19:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:10;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:84:\"Open Channels FM: Managing Team Growth and Delegation in WordPress Plugin Businesses\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=103823\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:91:\"https://openchannels.fm/managing-team-growth-and-delegation-in-wordpress-plugin-businesses/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:348:\"In this episode of WP Behind the Builds series, host Mark Westguard chats with Maarten Belmans of Studio Wombat to explore the ins and outs of running a WordPress plugin business. Maarten shares his journey from leaving a cushy IT consulting job to traveling Australia and launching his first WordPress plugin. The conversation covers how […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 24 Jul 2025 13:22:10 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:11;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:102:\"WPTavern: #178 – Adam Silverstein Explores Transformative Browser Features Impacting WordPress Sites\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=197768\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:116:\"https://wptavern.com/podcast/178-adam-silverstein-explores-transformative-browser-features-impacting-wordpress-sites\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:79151:\"
Transcript
\n

[00:00:19] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress. The people, the events, the plugins, the blocks, the themes, and in this case, how new, native browser features, are transforming what’s possible on the web.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast. And you can copy and paste that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox and use the form there.

\n\n\n\n

[00:01:10] Adam Silverstein: So on the podcast today we have Adam Silverstein.

\n\n\n\n

Adam is a WordPress Core committer and works to fix bugs and improve modern web capabilities. He’s also a Developer Relations Engineer on Chrome’s Web Platform team at Google, and there he focuses on making the open web better for everyone.

\n\n\n\n

Adam is here to break down how the rapid evolution of browser technology can supercharge your WordPress sites. We are doing this by referencing his presentation at WordCamp Europe 2025, in which he covered multiple new features of browsers, which can be used by WordPress users to bring a variety of experiences to their websites. In many cases these are browser APIs and features, and are quietly redefining what’s possible on the web. From CSS powered popovers, and scroll driven animations, to speculative loading that speeds up your page transitions. Adam explains how these advancements are changing what’s possible for both developers and end users.

\n\n\n\n

The conversation sheds light on the collaboration between browser vendors, Chrome, Firefox, Safari, and Edge, through initiatives like Interop and Baseline, paving the way for more consistent and robust features across platforms.

\n\n\n\n

Adam also talks about practical topics central to the WordPress community, like how the Popover API and native CSS carousels reduce JavaScript bloat, make sites more accessible, and deliver a better overall user experience.

\n\n\n\n

He shares exciting new frontiers, such as browser-based image processing, powered by WebAssembly, which is paving the way for universal support of modern formats like AVIF and Ultra HDR, and even running AI locally in your browser, no API key or cloud server required.

\n\n\n\n

He provides concrete examples on how these technologies can be leveraged in WordPress via Core updates, canonical plugins, and Gutenberg experiments, with a special focus on how developers can get involved and offer feedback to help shape future web standards. Prepare to look at your browser in a whole new light, truly.

\n\n\n\n

Whether you’re a theme designer, plugin developer, or site owner simply curious about what’s next, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

\n\n\n\n

And so without further delay, I bring you Adam Silverstein.

\n\n\n\n

[00:03:47] Nathan Wrigley: I am joined on the podcast by Adam Silverstein. Hello, Adam.

\n\n\n\n

[00:03:51] Adam Silverstein: Hello.

\n\n\n\n

[00:03:53] Nathan Wrigley: This is our second conversation. We had a conversation, I want to say four years ago, maybe more in San Diego, think. And at that point we talked about images, AVIF, WebP, those kind of things. We might get into that today.

\n\n\n\n

Adam’s been working with Google for many, many years. Making the web a faster place, I think is a fair way to sum up your career. Just tell us a little bit about yourself, just so that, because this is a fairly technical topic and you are honestly going to have to teach me an awful lot as we speak. Let us know what your credentials are, why people should listen to what you have to say.

\n\n\n\n

[00:04:21] Adam Silverstein: Oh, wow. Being a Googler is not good enough, huh? Well, I’ve been doing WordPress for a long, long time. I think I started, first started contributing back in 3.6. So I’m deeply involved in the Core project. I am a Core committer, which is something that I consider an honor, a privilege, and a responsibility. There’s not that many of us in the world, but I’m one of the people that actually commits code to WordPress.

\n\n\n\n

And I used to have my own run, my own agency, tiny me agency, but building sites for clients directly. Then I wound up at 10up. Learned to build enterprise sites, and work with large teams, and do a lot of planning. And then eventually made my way to Google where I’ve been doing developer relations work. I’m trying to educate developers and bring things like all these new APIs that I talked about in this talk, so that people can learn about it.

\n\n\n\n

[00:05:05] Nathan Wrigley: Have you been focused more or less entirely on WordPress, or are you in any way engaged with the Chrome team?

\n\n\n\n

[00:05:11] Adam Silverstein: Yeah. So our team kind of organisationally was under Chrome, like that was kind of where we sit. We worked with other, like I’ve worked with Drupal and TYPO3. So I’ve worked with some of the other CMSs out there, especially like the open source ones. So that’s kind of been in my purview, but I would say primarily focused on WordPress. That’s where I’ve had the most experience and am most comfortable.

\n\n\n\n

[00:05:32] Nathan Wrigley: It’s kind of interesting because on my computer, obviously I have a browser using Chrome, it’s kind of one of the most benign pieces of software that’s there, in that it doesn’t really have a task that’s assigned to it. I have a music editing piece of software, and I go there for that. And I have a video editing piece of software, and on it goes.

\n\n\n\n

[00:05:49] Adam Silverstein: Yes. And you’re running those in your browser.

\n\n\n\n

[00:05:51] Nathan Wrigley: Right. But also the browser is just this open thing, you know, you can basically do anything in it, and so incredibly powerful. And it feels like in the last few years it’s got way more powerful. But most of that is entirely hidden because I open it up and it looks broadly the same today as it did five years ago. You know, the UI may have changed a little bit.

\n\n\n\n

[00:06:13] Adam Silverstein: Right. But what’s changed is what you can do with it, right? So you talked about editing video or editing audio in your browser. Like, that was not something that was possible five or 10 years ago when we had blue links and HTML. And it was basically, we were publishing newspapers on the web. That was the limit of what we could do.

\n\n\n\n

[00:06:29] Nathan Wrigley: I have an app, it’s called Descript. I don’t know if you’ve come across it, but it’s a full audio, video editing suite entirely in the browser.

\n\n\n\n

[00:06:37] Adam Silverstein: And famously Adobe released Photoshop. Runs in the browser. The full Photoshop. Yeah, I mean it’s like mind blowing that that’s even possible.

\n\n\n\n

[00:06:45] Nathan Wrigley: So the capabilities of the browser have dramatically increased. And you’ve just done, or you’re about to do? Just done.

\n\n\n\n

[00:06:54] Adam Silverstein: Yes.

\n\n\n\n

[00:06:55] Nathan Wrigley: Okay. Firstly, how did It go?

\n\n\n\n

[00:06:56] Adam Silverstein: It went great. Packed room. I think people got something out of it. People gave me good feedback.

\n\n\n\n

[00:07:00] Nathan Wrigley: And it was called Modernising WordPress with New Web Platforms. And I’m just going to read a bit of the blurb that went with that. It says, WordPress is a powerful platform for building websites of all shapes and sizes. To truly thrive, WordPress is embracing the latest advancements in web technology. This talk will explore how developers and site owners can leverage cutting edge web platform capabilities to create next generation WordPress experiences. And then there’s a little bit more which mentions web APIs and so on and so forth. So that really is going to be the core of this discussion.

\n\n\n\n

Now, caveat emptor, dear listener, I have nowhere near enough knowledge to ask you these questions. But I’m going to hope that you are going to help me through it.

\n\n\n\n

So first stop then, let’s just go through a whole laundry list of these different APIs. What are some of the fun things that a browser can do now, that it couldn’t do previously?

\n\n\n\n

[00:07:53] Adam Silverstein: So in the talk, I sort of break it into three areas. There are features that help developers do things that maybe we could do, but we struggled or relied on heavy JavaScript libraries to do.

\n\n\n\n

There’s things that help users by creating better experiences on the web than we previously had the ability to do.

\n\n\n\n

And then the third category is things that previously were just impossible. Just things that we can now do, like running Photoshop in the browser, we mentioned that we could not do before.

\n\n\n\n

So I did not explore, this is not, the talk was not like an exhaustive list of all the APIs, but it was rather sort of a selection of ones that I thought were interesting. Most of them are new. They are sometimes available only in one browser, not in all the browsers. So they’re things that are coming to the web platform. Some of them were already on the web platform.

\n\n\n\n

So let’s go through them. I’ll see if I can remember them all. I have my little slide deck here.

\n\n\n\n

So in the category of helping developers, the first one that I talked about is this thing called the Popover API. So popovers are simply like dialogues or elements that you want to hover above the rest of the page content. And in WordPress we use these extensively in the admin. Like for example, the pointers that you get when you install a new plugin. Or if you open a dialogue, or even like mobile menus use a popover.

\n\n\n\n

And we have it in Gutenberg. And so we already have this technology, but it relies on JavaScript, and it’s actually surprisingly complicated to do a popover. You have to pay attention to always being at the highest level. And if there’s another popover, how do you handle that? And you have to make sure it’s accessible, so when the user hits the escape key, the popover closes.

\n\n\n\n

And if it’s a pointer that’s trying to point to a new feature, say in a menu, how do you handle when the user resizes the window and that element moves? These are very complicated things. And in JavaScript that means you’ve got a heavy library that’s running just to do this simple popover thing.

\n\n\n\n

So with this new CSS based popover API, you can create a popover with just a couple of lines in your code, and the browser takes care of all of the complicated parts of actually doing the popover.

\n\n\n\n

[00:09:49] Nathan Wrigley: So just pausing there for a moment. The whole power of CSS, I’m going to say three years, this has been capturing my attention. CSS seems to be able to do a load of programmatic things now that it didn’t used to be able to. So in this case it’s, I don’t know, it’s calculating the height of the viewport and figuring out is there another thing, how much further to move it down? All of this being handled natively in the browser.

\n\n\n\n

[00:10:13] Adam Silverstein: Exactly. And I think like your point is very true, like CSS capabilities have grown tremendously, and the ability to do sophisticated layouts. And all of these kind of feature things that typically might require JavaScript, now we can do directly in CSS, even things like calculations.

\n\n\n\n

So CSS is a programming language just like JavaScript, right? People like to poo poo it and and so forth, but it’s quite powerful. And a lot of these features that I’m talking about are based on CSS.

\n\n\n\n

[00:10:36] Nathan Wrigley: It’s kind of interesting, if the 18-year-old me was beginning again, I think CSS would be the thing that I would do first. I think I would learn that inside and out before ever looking at JavaScript. Because I you’ve got the foundation of modern CSS, and I know there’s a lot of W3C things that are still being decided and what have you, and obviously the browsers have got various different capabilities. But so much that we would’ve relied on for JavaScript is now capable with CSS, but unexplored I think by many.

\n\n\n\n

[00:11:08] Adam Silverstein: Right. So this feature popover is available in all the browsers. It’s in Baseline. So Baseline is the set of features that developers should be looking at for deciding what they can use. Baseline is a somewhat new concept, so people might not be aware of it. But it is basically a way of knowing which features are available on all the major browsers. So if you see a feature that is labeled Baseline, like in the MDN docs, that means it’s available on all the browsers. You can count on it as a developer.

\n\n\n\n

So in my talk, I covered a lot of APIs that are actually not in Baseline yet. They’re still in development. They maybe are available only in Chrome, or Chrome and Edge, or maybe Chrome and Edge and Firefox, but not Safari. As developer, those are the APIs you need to be a little bit wary of, right, because you wanna build something that’s going to work for everyone.

\n\n\n\n

In many cases, the API will gracefully degrade, it just won’t work in the non-supporting browser. But in the case of like a popover, if it is supported in all the browsers, so you’re safe to use it. If it wasn’t, you would need to have that JavaScript as a fallback. So some of these APIs are, you know, new and experimental, but the browser vendors are all planning on adding support for them. So I only choose APIs that actually browser vendors have indicated their support.

\n\n\n\n

[00:12:14] Nathan Wrigley: Can we just pause there a moment because I began my journey with the web, oh, Internet Explorer 5 kind of days. You probably remember the days as well as I do, and it was chaos, you know? I mean, really we had to try and fix a whole bunch of things that Internet Explorer did differently from all the other browsers. The browsers didn’t agree on almost anything. They went off in completely different directions.

\n\n\n\n

That, I’m going to say, over the last five or maybe more, maybe more like eight years, there seems to have been a real confluence of, and I don’t know if that’s done from like a senior management level, but it does seem like Mozilla is talking to Chromium, Chromium is talking to Safari, and a lot of the people seem to attend the same conferences and talk the same language. They may adopt it at different rates, but they’re all trying to get to the same point, the open web.

\n\n\n\n

[00:13:00] Adam Silverstein: Yes. And in fact, they’ve developed an approach to collaborate on this, and that is called Interop. So the Interop effort is sort of a group effort by all of the browsers to agree upon a set of features that they’re going to work on for each calendar year. So there’s Interop 2025, there’ll be one for 2026, and so forth.

\n\n\n\n

And these features are, they come from either the browser’s needs, what they want to build, or from developers. So there’s an open process where they open a GitHub repo each fall and developers can go and submit. And we’ve actually had some from WordPress that made it in and influenced what browsers do.

\n\n\n\n

So as developers are out there working, they’re finding pain points, they’re struggling to do this or struggling to do that, or it doesn’t work well in one browser. It works in one browser, but not the other. Interop is sort of the effort each year to come up with a set that the browsers agree upon working on. And those features hopefully all land in Baseline the following year.

\n\n\n\n

I remember those days very well, and that’s why we have things like jQuery, right? So we had all these libraries that were built with this promise of sort of normalising the capabilities. Now, you’re absolutely right, the browsers have realised this is a problem for developers and they’ve come together to form a standard, and that is the Baseline thing that I mentioned.

\n\n\n\n

So they’re always building new APIs on their own, and some of them will never make it into all the browsers, and they may go away or they may change. But if they make it into Baseline, you can be sure that you can use them. And that’s what’s different, right? We have this set of features that we can rely on.

\n\n\n\n

[00:14:21] Nathan Wrigley: I kind of feel we lost a decade somewhere of real productivity. You know, the browsers could have been capable of a whole lot more than they are now. I mean, we’re happy with where we’ve got, but it does feel like we lost, this proprietary approach to browsers really wasn’t in the best interest of anybody. But you can see how it grew out of Microsoft and all of these other organizations.

\n\n\n\n

I’m guessing that Google with its Chromium browser, Chromium based browser, the fact that that became utterly dominant was probably quite a pivotal point. You know, it was in the sort of eighties and nineties percent, adopted by 80 or 90%. I guess Google was able to push things through a little bit more.

\n\n\n\n

[00:14:59] Adam Silverstein: Perhaps, like they do often lead on features. I mean, I wouldn’t say they’re always the lead on features, sometimes Safari has a great idea and they want to develop it, and with Firefox as well. But they do have a huge effort going into it. And, you know, of course Microsoft famously adopted Chromium as the engine for Edge. And so Microsoft is actively contributing as well to Chromium, which is the core of Chrome.

\n\n\n\n

So yes, I think the dominance did allow them to sort of lead on features and have the other browsers sort of need to follow. If Chrome is going to ship a feature, everyone’s going to use it. But I don’t know if that’s always the case. You know, when you read these, I’ve read some of these proposals, you know, the browser vendors, they talk to each other in the open, right?

\n\n\n\n

So these aren’t like private conversations that are happening in a room somewhere. They are all into open source software. So they’re, you know, there’s a repo where like, for example, Chrome will come in and say, we’re working on this new API, we would like feedback from the teams building Mozilla and Safari about if this is a good feature, are you going to support this? And that’s like typically early in the process where they try to get that feedback so they know whether this is something that is likely to land in the platform.

\n\n\n\n

[00:16:02] Nathan Wrigley: I don’t really know whether it was the best thing for one browser to sort of win out, but it certainly seems now that the dust has settled, it seems that that was a fairly good thing to happen.

\n\n\n\n

[00:16:11] Adam Silverstein: Yeah, I mean, I think if we had only had one browser, that would not be good. I mean, Apple is definitely dominant on mobile in markets where iPhones are very popular.

\n\n\n\n

[00:16:21] Nathan Wrigley: North America, for example.

\n\n\n\n

[00:16:22] Adam Silverstein: Exactly. North America and Europe, I think as well. Although if you look at most of the world, it’s actually Android that is far more dominant. So that’s where Chrome gets a big percentage of its users because Android is the default browser there, just as Safari is the default browser on iOS devices

\n\n\n\n

[00:16:35] Nathan Wrigley: I guess there was the whole Chromebook thing as well with, you know Google trying to promote this idea of a browser computer, for want of a better word.

\n\n\n\n

[00:16:43] Adam Silverstein: Chrome OS.

\n\n\n\n

[00:16:44] Nathan Wrigley: Yeah, Chrome OS exactly. And but the idea that, when it first came out, I remember looking at Chromebooks and thinking, yeah, it’s intriguing. It can do Google Docs, but where’s the video editing? Where’s the audio editing? I’m guessing like a modern Chromebook is a full swap out for a, it just doesn’t have the physical storage memory in some cases.

\n\n\n\n

[00:17:01] Adam Silverstein: It doesn’t have any. It’s, well, I mean, it has some for caching, but basically you log in and that’s your computer. Someone else logs in, it’s their computer. It’s fully in the cloud.

\n\n\n\n

[00:17:09] Nathan Wrigley: It’s pretty amazing.

\n\n\n\n

[00:17:10] Adam Silverstein: Although I will say, I bought a cheap Chromebook, like 150 bucks, refurbished, but I bought it to travel with so that I didn’t have to carry around my eight pound MacBook Pro. And because I’m a developer, I figured out how to do development work on it. You can install Linux on it and run, you know, Docker and all the things that you can do on a desktop machine.

\n\n\n\n

Does take some effort, like that’s not built in. But they are actually full computers, it’s just that the way the operating system is set up is this sort of cloud-based thing.

\n\n\n\n

But it’s quite, I think they’re amazing honestly. And, like I said, very inexpensive and also like bulletproof. You never have problems with them because your whole world is basically the browser.

\n\n\n\n

[00:17:47] Nathan Wrigley: And it kind of boots in half a moment, and it’s so secure.

\n\n\n\n

[00:17:51] Adam Silverstein: Yeah. They’re fantastic, and especially for like schools or corporate settings because it has all that management built in. I think they’re great computers. I would definitely recommend them, especially for people who don’t want to spend all the money that it takes to get, you know, and especially like you’re saying, everything’s in the browser these days. So there’s really, you don’t need a desktop computer to do most things.

\n\n\n\n

[00:18:10] Nathan Wrigley: Yeah. I think we painted a picture of the power of the browser, we’ve done well there. We got kind of hijacked a little bit. So you were talking about popovers, that was the first thing. Let’s return to that. What’s one of the other things mentioned?

\n\n\n\n

[00:18:20] Adam Silverstein: Next on my list is this Scroll Animations API. So this is animations like CSS animations that are either triggered or tied to a scroll event. So you could think about, like Slider Revolution has this feature in it, or you’ve seen it on like Apple’s website where you’re scrolling and as you’re scrolling an image is fading in or something is being revealed. Or another good example is like a reading indicator that Medium has at the top of the page as you scroll down.

\n\n\n\n

So we can do these things today with JavaScript, but it involves paying attention to the user scroll position, and this kind of heavy handed approach to monitoring the user. With CSS scroll driven animations, it’s just a couple of lines of CSS and suddenly you’ve tied an animation to scrolling.

\n\n\n\n

[00:19:01] Nathan Wrigley: So again, all handled by CSS, no need for a JavaScript library. Any impact in, I mean, these JavaScript libraries are famous for sort of bogging things down, tons of bloat and what have you. I’m guessing that because it’s shipping in the browser, that is minimal to say the least, almost non-existent.

\n\n\n\n

[00:19:17] Adam Silverstein: Yes, and the animations are CSS animations, so they’re not happening on the main thread. JavaScript famously has one main thread, and if you have something running on that main thread, it’s going to interfere with other JavaScript. So if you can get rid of some of the JavaScript on your website, that’s freeing up that thread for the other JavaScript that you have, that you want to do to track your analytics or to, whatever else you’re trying to do on your page with JavaScript. This is one less piece of JavaScript you need on your site.

\n\n\n\n

[00:19:42] Nathan Wrigley: The feature that you’ve just mentioned is something that I guess WordPress developers are going to be particularly interested in. They love all that stuff.

\n\n\n\n

[00:19:48] Adam Silverstein: Yes, clients love it. They love animations. And again, this is something that’s very lightweight, right? The argument against these types of animations is they’re typically very heavy.

\n\n\n\n

The other advantages of using CSS based features versus JavaScript is accessibility. Often these features, I mean this isn’t necessarily true with scroll driven, but like with the carousels, it’s got that accessibility built in. It’s got the escaping out of the dialogue.

\n\n\n\n

Again and again we see that, when you build something in JavaScript, I’m going to talk in a minute about CSS carousels. When you build it in JavaScript, if you want to make it accessible, there’s a lot of extra work that goes into doing that well. If the browser builds the feature in as like a fundamental, almost like an HTML component, then the expectation is the browser will take care of that for you. So as a developer, you won’t even have to pay attention to it.

\n\n\n\n

[00:20:36] Nathan Wrigley: I’m guessing that in the case of the one you’ve just described, that’s really easy to map onto this podcast because a WordPress user, they’re using a page builder or something like that. They’re going to have encountered these options, you know, somewhere buried in the settings for this image component is a fade in on scroll.

\n\n\n\n

And I’m guessing that in the future in WordPress, this might be some sort of toggle in a block, an image block or something like that. You’ll just switch it on, assign some characteristics to it like, I don’t know, fade to 50% at halfway through the viewport. And that will just create the CSS, but all done inside of a panel of a block.

\n\n\n\n

[00:21:11] Adam Silverstein: Yeah, I did exactly that as a pull request and have a link to that in my talk. Yeah, that’s a great example. It could be an image, it could be a header block.

\n\n\n\n

I guess one question I have as a Core committer is whether that is actually Core territory. We have this long standing philosophy in WordPress that it’s kind of the 80 20 rule that a feature that we land in Core should benefit 80% of users, otherwise it belongs in plugin territory.

\n\n\n\n

That said, one of the things we’re talking about now is this idea of canonical blocks. So there’s a lot of new blocks being proposed in Gutenberg right now, and the question is like, how many blocks do you actually want to ship with the editor? There’s a zillion different things you could think of building a block for, or a feature like animation, say for images like we’re talking about. But if it’s not valuable for all users, does it really belong in Core? And does it just overload the list of blocks they have to choose from, or the list of features they have to choose from? Why not just let plugins extend it?

\n\n\n\n

The other idea, like I said is this idea of canonical blocks. So you could have a block that’s developed by the Core team, is supported by Core, and is directly installable in the admin, in a like clearly labeled way that this is a Core product. But actually not ship it with WordPress. So it’s something that you could install with one click. I mean, we actually haven’t defined exactly what a canonical block or plugin is, but this is sort of what my idea is. It’s something that’s like, you’re one step away from having it installed.

\n\n\n\n

[00:22:27] Nathan Wrigley: Yeah, it feels like a canonical plugin, at least feels to me like something which has the security guarantee of Core, plus the updating guarantee of Core. Basically if you install it, it’s going to work with the latest version of WordPress, plus the all the backwards compatibility. I kind of like the idea of, like Apple ship with things like iOS, like Core animations. A plugin which just enables the animations in Core blocks.

\n\n\n\n

[00:22:51] Adam Silverstein: Right. Like the capability might already be there. I mean, you know, so one of the other APIs that I talked about in another section is the Speculative Loading API. So this is a good example. And this is actually shipping in WordPress 6.8. And this is the ability for the browser to prefetch the resources for a page that a user is about to navigate to.

\n\n\n\n

And in WordPress, we shipped it in the most conservative mode possible, which essentially is the user needs to click down on the link, and then before they let go of their mouse, so the time between the mouse down and mouse up event is when the browser is prefetching the resources for that link.

\n\n\n\n

So if the user clicks down on the link, we’re very confident that they’re actually going to navigate. Although it is possible to drag away and not navigate. 90% of users are going to follow that link or more. And so the idea is not to waste prefetching for links that users never visit.

\n\n\n\n

However it is possible to configure this API in a more bold manner where it will, for example, prefetch links that you hover over, which is going to give you much more of a head start, but also a lower hit ratio where, you know, some people will hover over links and they never click on them. So it depends on your use case.

\n\n\n\n

So I’ve already seen, so we landed the API in WordPress at the very conservative level. There’s already a plugin out that lets users configure that API for their own site, so they can adjust the default settings.

\n\n\n\n

There’s another setting that’s even more aggressive where it actually pre-renders the page. And in that setting, it’s almost as if you’ve loaded the page you’re about to navigate to in another tab, and when you click the link, it’s like switching tabs. It’s an instantaneous transition. It’s like amazing.

\n\n\n\n

However, you know, if you’re pre-rendering every page a user hovers over, that’s going to be a huge additional load on your server. So there is a trade off there. But maybe you have like a large call to action button on your homepage that 50% of your users are going to click on. Go ahead and prefetch that. They’re going to get a better experience. You’re going to get a better conversion rate if that page loads faster.

\n\n\n\n

[00:24:45] Nathan Wrigley: if memory serves, this is a browser API, Speculation Rules API and everybody’s got it switched on in 6.8 and beyond. But it’s in conservative, and it’s prefetch not pre-render, it’s click. And honestly, the chances of you not wishing to get to that page are pretty, like you say, you could slide away. But yeah, if you were to download the speculation rules, I can’t remember what the name of the plugin is. Anyway, the plugin, the option there is to do things like pre-render, or hover. And then, yeah. You could get into a real mess with the server and, you know, just wasteful.

\n\n\n\n

[00:25:23] Adam Silverstein: Yeah. If you, especially if you’re on like a light end server, but maybe you want that, like the most important. Like, let’s say you have an e-commerce store and you’re really trying to get people to add things to your cart. You know, there’s all kinds of studies that show that if your pages load faster, and it’s even buy like things like a hundred milliseconds, the conversion ratio is much higher. People are quick to abandon slow sites. I mean, there’s all kinds of data on that.

\n\n\n\n

So you may decide it’s worth investing the additional resources and dedicated hosting and caching so that you can prefetch and pre-render and get that faster navigation. This API enables that type of navigation that is, you really can’t get that without this API because it’s basically letting the browser know, it’s okay to like start loading resources before I even visit a page.

\n\n\n\n

[00:26:06] Nathan Wrigley: Yeah, I keep having this thought that at some point Chrome’s going to come up with, it’s going to know a whole year in advance all pages that I wish to visit and just load them all for me.

\n\n\n\n

[00:26:15] Adam Silverstein: Well, I did actually an experiment with AI to see, like ask AI which link is the user most likely to click on? And I tried it both with just literally dropping the HTML of the webpage in the AI, as well as drawing a screenshot. And I tried it on a very simple page, so like a WordPress plugin page. There’s a large blue button that says download. Probably the most likely link that users will click on. But the AI was like very good at identifying that. So in theory you could imagine that the browser could actually predict into some degree what users, based on their behavior, are going to click on, or based on the layout of the site.

\n\n\n\n

[00:26:50] Nathan Wrigley: So this is a, curious new world in which we live, isn’t it? So there could be heuristics about what I’m literally doing with the mouse. So the mouse is, I don’t know, approaching a button. That’s a fairly strong indication. And also, I guess the speed.

\n\n\n\n

[00:27:05] Adam Silverstein: Yeah, if it’s paused over the button.

\n\n\n\n

[00:27:07] Nathan Wrigley: Right, or slowing down, the speed is sort of coming to a terminus. Yeah. This is all really interesting.

\n\n\n\n

The 6.8, the Speculative Loading in 6.8, what I really like about that is that there’s zero configuration. It just works. So it’s using this fabulous new feature of the browser, but also no technical knowledge whatsoever. Absolutely none. And it would hopefully just save you a bunch of, well, your visitors a bunch of time.

\n\n\n\n

[00:27:33] Adam Silverstein: Exactly.

\n\n\n\n

[00:27:34] Nathan Wrigley: Yeah. Fabulous. Okay, that’s another one. Any others?

\n\n\n\n

[00:27:37] Adam Silverstein: Oh my gosh, so many. We did touch briefly on CSS carousels, but let’s just cover that again. So over half of WordPress websites load some sort of slider or JavaScript library.

\n\n\n\n

[00:27:49] Nathan Wrigley: Like them or hate them, they’re there.

\n\n\n\n

[00:27:49] Adam Silverstein: Yes. And even if people don’t use them, they seem to load them because I don’t know if half of sites all have sliders, but in any case, this is a very popular feature for WordPress sites. And of course there’s many plugins out there that do this, and they all rely on a JavaScript library. There are several very popular ones. They’re very full featured libraries. They do all the things that you need for a carousel.

\n\n\n\n

Now we can do that with CSS, so you don’t need the JavaScript library. Now, there may be advanced features that the JavaScript libraries will be able to do that will add some functionality. But the goal of the CSS implementation is to basically be feature parity with what you can do now with JavaScript. So all kinds of carousels

\n\n\n\n

with buttons that you can click, with little indicators as to which slider, which image you’re on. You know, just all the features that you can imagine in a carousel. There’s a great demo site on the chrome.dev site of just like a zillion different carousels.

\n\n\n\n

[00:28:41] Nathan Wrigley: What does the DOM look like for that?

\n\n\n\n

[00:28:43] Adam Silverstein: It’s so simple. It’s like you have the images themselves, and you have a couple of pseudo elements like scroll marker, and there’s some for the scroll arrows. I don’t actually remember all the deals because I haven’t built one. But it’s all done using like CSS selectors essentially to indicate which elements are the control elements, and which elements are the target elements. And you can even do things like grouping them so that like when you hit the right arrow, it’s like a page of things moving back and forth, like several elements.

\n\n\n\n

Like I said, they’ve tried to address all of the features. And again, here you would be able to do a CSS based carousel, that means no JavaScript required, right? You don’t need to load that giant JavaScript library. It’s going to be immediately available, right? So JavaScript takes some time to load. It’s going to work more quickly. And it’s also hopefully going to have accessibility built in. So you don’t have to worry about if your JavaScript library is keeping up with accessibility standards. It’s going to be a standard web component.

\n\n\n\n

[00:29:36] Nathan Wrigley: Okay, okay. Of course. Yeah, if everybody’s implementing the same thing, it’s not this weirdy JavaScript thing that you downloaded from somewhere.

\n\n\n\n

And okay, another question about, just sticking on that one for a moment. Will that be performant in the sense of, I don’t know, if I’ve got a carousel of 15 images, will the 15th one be loading at the moment.

\n\n\n\n

[00:29:56] Adam Silverstein: Lazy loaded?

\n\n\n\n

[00:29:57] Nathan Wrigley: Yeah, exactly.

\n\n\n\n

[00:29:57] Adam Silverstein: You would hope so, yes. I mean, I think in general it will be more performant than a JavaScript implementation. Unless the JavaScript implementation is doing some magic that the browser’s not aware of, like lazy loading. I think that is, will be built in. But you, again, don’t have that JavaScript running on the main thread doing the actual animations. All the animations are CSS animations.

\n\n\n\n

[00:30:16] Nathan Wrigley: It’s kind of curious because that example, I’ve always liked how they look but I’ve always been persuaded that it’s the wrong thing to implement because of the JavaScript bloat, the inaccessibility. So they kind of went into that pariah status for a while. But if done right, there’s absolutely no reason not to implement it.

\n\n\n\n

[00:30:36] Adam Silverstein: Yeah. And I think, you know, like you said, clients love them, they’re very popular. I think one of the arguments that I’ve heard about them is that data shows that most users never navigate beyond like the second image. So there is sort of questionable value there, especially if you’ve got one that say has 30 images in it on your homepage. Maybe that’s not such a great idea.

\n\n\n\n

But maybe if you have three products that you want to feature at the top and you don’t know how to feature them all, a slider is a good way to have three things that the user can see all in the same space. So I think they have their uses, but I think there is the sort of resistance to using them from developers is based on solid data.

\n\n\n\n

[00:31:09] Nathan Wrigley: It’s interesting as well because given, I don’t know the, bad reputation they have, it’s kind curious that that got made.

\n\n\n\n

[00:31:16] Adam Silverstein: Right. So this actually brings us to a good point. Where do the browser vendors come up? Why are they building these things right? So the reason they decided to build CSS Carousel is this is an area that developers have struggled with.

\n\n\n\n

Like I said, there are several libraries that are well established that have built really good sliders, but that’s taken a long time, right? And they still have accessibility challenges.

\n\n\n\n

This is something that a lot of developers want to build, their clients are demanding it, and they’ve typically struggled to actually build something quality. So this is the impetus for a lot of these features that I talked about is places that developers are struggling. And that Interop project that I mentioned earlier, that’s where developers can give their feedback to the browser vendors about which features they feel are lacking.

\n\n\n\n

That was the sort of like the last question of my talk was to developers, what are you struggling, what are you constantly using JavaScript for? What are you finding that’s still incompatible between browsers? Because I think that’s actually really important to get feedback from developers. The browser builders are in a room somewhere, they’re doing their thing. You know, they’re not out here building WordPress websites, so they’re not building Gutenberg. So we as developers have a responsibility to give feedback to the actual browser vendors so they know what we need, what we’re struggling with.

\n\n\n\n

[00:32:27] Nathan Wrigley: You may not know the answer to this question, but does Chrome in a default setup where I install Chrome and then just click yes, yes, yes to everything that I’m asked. Does it provide heuristics back to Google about things like that? There’s millions of people interacting with carousels, for example.

\n\n\n\n

[00:32:44] Adam Silverstein: I’m going to say, well, going to say no because they’re, Chrome does collect data, but you have to opt in. By default, you would not have that box checked.

\n\n\n\n

[00:32:51] Nathan Wrigley: But it is possible.

\n\n\n\n

[00:32:52] Adam Silverstein: Yes. And many people do. Many people do provide that. And most of that data is available publicly. So that data is anonymised and then made available publicly as part of the CrUX, the Chrome user experience data set. And that’s an open public data set that you can query using BigQuery. If you have a website or a product that’s very popular, you can get amazing data about how many sites are using it, about the performance of those sites, about growth over time. There’s all kinds of data out there.

\n\n\n\n

Of course, again, it’s a subset of the web. It’s not every website on the web because there’s a privacy concern about this data. So the only data that’s reported is when the pages or sites have enough visitors that you couldn’t track back to individual users. So it is a limited data set. Small sites with low traffic won’t appear in it. However, it’s incredibly valuable. And if you build a popular plugin, for example, this is a great way for you to gather data about how your plugin is being used, because some of the sites that install it will be in that data set and it’s public data.

\n\n\n\n

[00:33:51] Nathan Wrigley: Yeah. I’ll put a link to that in the show notes. That’s CrUX. CrUX. So that’s interesting. So there’s two routes there. There’s the heuristics provided by the browser if you opt in, but also it sounds to me like there are open channels communicating through people like you, if you’re a developer.

\n\n\n\n

[00:34:04] Adam Silverstein: Like me, or like the Interop process that I mentioned earlier, where they open up a GitHub repo each year and you can just open an issue saying, here are the things that we’re struggling with. And I mentioned like Gutenberg actually did that.

\n\n\n\n

For a couple years I was posting on the WordPress blog, hey, Interop is open, let’s give feedback. We did have one, at least one year where the Gutenberg team went in and made a long list of things that where they found incompatibilities. And some of those made their way into actual interrupt tasks. So it is incredibly valuable to give that feedback. And the browsers want to know, they want to build products that developers like to use.

\n\n\n\n

[00:34:36] Nathan Wrigley: Okay. next, if there is a next.

\n\n\n\n

[00:34:38] Adam Silverstein: Oh yes. Okay, so now we’re getting into, I think I hopped around a little bit, but the next section was about improving user experience. So the first one is actually a really simple one that I think is really cool. It’s customisable select.

\n\n\n\n

[00:34:49] Nathan Wrigley: Oh, so good.

\n\n\n\n

[00:34:50] Adam Silverstein: Yes. So the select element traditionally has been rendered by the operating system. And that means, so if you have a select list, like a dropdown, you’re going to see a bunch of words and you’re going to be able to scroll through those. But if you want to make it more visual, say add some images or icons next to each word, you really couldn’t do that. If you wanted to do that, you’d reach for a JavaScript library that would render the select element graphically, but wasn’t really a select element.

\n\n\n\n

So this is the ability to actually put HTML inside your select elements. So a great example of that is icons and images in the dropdown. So, for example, I gave a lot of different examples of how we can use this in WordPress Core, but one is in the media library where we filter by media type. We can add like nice little icons. So if you’re looking for, you know, the videos, you get a nice little video icon. It just makes it easier for users to find what they’re looking for.

\n\n\n\n

And again, this is still a semantic select element, so it’s going to be accessible just like a regular select element. If the browser doesn’t support this feature, it’s just going to fall back to a regular select element.

\n\n\n\n

It’s also going to autofill correctly, right? So another example I gave was a currency selector that adds flags for the country of the currency. A nice, helpful thing. If your browser knows that you use the Euro, it’s going to select the Euro because autofill is this great technology that helps us select things that we always select. But if it’s a JavaScript do hickey, the browser has no idea what’s going on inside there, so autofill will not work correctly. So it has some real key advantages over traditional, you know, the way we would build these before. Now we can just do full on HTML select elements.

\n\n\n\n

[00:36:21] Nathan Wrigley: It’s the kind of thing that once you’ve seen it, it’s like, why.

\n\n\n\n

[00:36:25] Adam Silverstein: Why didn’t that exist before?

\n\n\n\n

[00:36:27] Nathan Wrigley: Because we just have the OS. It just looks like an OS selector. So on my Mac, it looks like a Mac. On my phone, it looks like Android, whatever that would be. Which leads me to that actually. So on the phone, same experience because it’s not stepping outside of the browser. if I’ve got those flags, for example, or I’ve got coloured backgrounds or rounded corners or whatever it may be, Because it’s not reaching out to the OS to create this select, it’ll work on any device.

\n\n\n\n

[00:36:53] Adam Silverstein: Right.

\n\n\n\n

[00:36:54] Nathan Wrigley: Nice.

\n\n\n\n

[00:36:54] Adam Silverstein: And it’s CSS controlled, right? So you could do a different mobile implementation than your desktop implementation.

\n\n\n\n

[00:36:59] Nathan Wrigley: Yeah. I mean, it’s profoundly brilliant when you see. I’ll put some links to some demos somewhere into the shownotes.

\n\n\n\n

[00:37:06] Adam Silverstein: You know, I’ve got several pull requests open both in Core and in Gutenberg to add these features into the select elements that we already have. It’s kind of a simple enhancement. And again, like if your browser doesn’t support it, you don’t really, there’s no harm, right? You don’t benefit from the feature, but you don’t lose anything either. I love that one. You know, I’m hoping that form plugins in our ecosystem will adopt it.

\n\n\n\n

[00:37:25] Nathan Wrigley: Oh, no doubt. I mean, why wouldn’t you, basically? that’s a brilliant one. Thank you. Next.

\n\n\n\n

[00:37:30] Adam Silverstein: Another one that, this one actually pairs really well with the Speculative Loading API and it’s called, the View Transitions API.

\n\n\n\n

And this one is really cool because it basically turns your static website into a, kind of a fluid app-like experience. And in the slide deck, I have this great demo video of just a classic theme, where the users just clicking through to different pages. So you’re on say, the archive list and you’ve got a list of titles. And you click on a title and it’s going to take you to the single post page. And what happens is the browser actually navigates between those two states. So you see the title that you just clicked on, grow and expand, and it winds up in the position where it will be on the page you’re navigating to.

\n\n\n\n

Same thing like with the featured image. Let’s say you have featured images and those appear in a list and you click on the featured image, the image will grow to where it’s going to be in the final position. So it creates a smooth animation between the different pages of your site, or states of a single page app.

\n\n\n\n

And these are again, CSS animation, so you can control them. It has an auto mode where it picks the animation for you, so you really can do a very, just few lines, and get this effect working, but you can also customise it. So if you want the page to say scroll left when you hit the next button and scroll to the right when you hit the back button, you can implement it that way.

\n\n\n\n

[00:38:45] Nathan Wrigley: So the place I’ve seen this before really is on mobile applications.

\n\n\n\n

[00:38:48] Adam Silverstein: On apps. You see it on apps, right. Because it creates this fluid experience. We are used to on the web this idea of, you click on a link and then there’s kind of like a little bit of a wait. Then boom, there’s a refresh and the next page starts loading. And this kind of bridges that gap. It’s something that changes how users perceive your website. It doesn’t really change what’s loading. It’s the same before and after states. What it’s doing is creating that transition between the two states.

\n\n\n\n

[00:39:12] Nathan Wrigley: It feels more like you’re on a journey as opposed to these little stops along the way to get to the final destination. It just creates this sort of fluid, endless experience. And I believe, I think I saw one of your colleagues, Felix Arntz, I believe he’s got a plugin, like a feature plugin out.

\n\n\n\n

[00:39:30] Adam Silverstein: It is. It just shipped. It’s part of the Performance Lab plugin suite. So that is basically going to add a way for themes to just opt in. So we have a feature in WordPress where you can be, add themes support. And you can say, my theme supports this feature. So if themes opt in, they can just enable this API and just, you instantly get the navigations.

\n\n\n\n

We fortunately benefit in Core from a lot of consistent naming for things. Like the class names on titles tend to be consistent among all the Core themes. And even in the ecosystem, a lot of people have stuck to those standards. And that makes it really straightforward to sort of choose the correct elements for the transitions.

\n\n\n\n

Because part of setting this up is you sort of need to tell the browser, this is the title element. On the previous page, this is the title element on the next page. I want you to navigate between those two. And fortunately, at least for the Core themes, that’s pretty standard to do. So there is a pretty straightforward way to like implement it across all the core themes.

\n\n\n\n

[00:40:23] Nathan Wrigley: I just want to remind the listener that, you may have got lost, we’re not talking about WordPress per se. We’re kind of talking about what the browser enables WordPress to do. So these view transitions, of course they can be implemented by a WordPress website, but it is in effect the browser that’s doing the hard work here.

\n\n\n\n

You don’t have to be tied to WordPress, you could do this in HTML and CSS if you so wish to do it. But it’s easy to imagine that this is some clever JavaScript thing that somebody’s implemented in WordPress. And it’s just not that. This is just happening inside the browser.

\n\n\n\n

[00:40:53] Adam Silverstein: No, these are all browser features and, yeah, the talk is kind of like, how do they apply to WordPress? How WordPress use them?

\n\n\n\n

[00:40:59] Nathan Wrigley: I can imagine a world in the future where this feature in particular will have been massively overused. You know, people will, like scrolling animations for the, you know, this grows and this shrinks, and let’s see how that’ll settle. But the implementations that I’ve seen are just magnificent. They give you that, I don’t know, I’m on my phone, I use a music app, and I go to the next song and somehow the little icon for that song grows in this nice fluid way. Things fade in and fade out. Text becomes bigger, and it’s all happening. And It just encapsulates the screen perfectly. It gives everything the perfect place. And instead of it being a moment where it all just changes, everything slides into place. And it just feels natural, and we’ve got it coming in the browser.

\n\n\n\n

[00:41:39] Adam Silverstein: It is amazing. Yeah. It’s, a pretty cool feature.

\n\n\n\n

[00:41:41] Nathan Wrigley: Yeah. Okay, next.

\n\n\n\n

[00:41:42] Adam Silverstein: Okay. So I did talk about what you mentioned, we talked about modern images before. So I did talk a little bit about modern image formats, just a kind of love of mine. I honed in on. HDR imagery. So we all, most of us have smartphones these days that actually take high dynamic range images, right? Previously we had standard dynamic range, but now all of our phones take multiple exposures and combine those to create an HDR image.

\n\n\n\n

We have long had the ability to save images in HDR with formats like AVIF, WebP supports it. However, the challenge comes when you upload those images to WordPress and then you try to use them on a standard definition monitor, an SDR monitor, right? So you’ve got an HDR image, but suddenly you’re displaying it on a monitor that can’t display HDR, and you have to sort of, re downsize it to that lower bit depth, and that degrades the image greatly.

\n\n\n\n

So there is a new format available that’s ISO standard, and it’s called Ultra HDR. And this is a combination of standard jpeg SDR imagery with a gain map metadata layer. So it’s a single image format that includes both the SDR data as well as the data required to render the HDR version of the image. So it’s a full HDR image when you view it on a monitor that can support it, but on a monitor that doesn’t support it, you can just use the SDR image, you don’t need to do some conversion to try to create that alternate image.

\n\n\n\n

[00:43:09] Nathan Wrigley: I’ve never heard of this, so I’m going to try and parse it in real time. Let’s see how this works. So I’m imagining an image and I’m imagining like a CSS gradient over the top, There’s a bit of metadata which does something. The underlying image is unchanged, but there’s something gone over the top.

\n\n\n\n

[00:43:25] Adam Silverstein: Yes, it’s called a gain map.

\n\n\n\n

[00:43:27] Nathan Wrigley: Right, so gain mapping. And I can put that on, put that off. So it’s metadata transforming the image, but the image is the same.

\n\n\n\n

[00:43:33] Adam Silverstein: Yes.

\n\n\n\n

[00:43:35] Nathan Wrigley: Interesting.

\n\n\n\n

[00:43:35] Adam Silverstein: Yes. So I am a programmer and I deeply know about how WordPress media works, but I am not a photographer. However, there have been some great contributions from photographers who really know this space well. And they’ve come in and helped us on the media team really understand the challenges of handling these types of images and publishing them to the web, right?

\n\n\n\n

So I have a link in the slide to one of those guys and his photography website. He’s a software developer and a photographer. And he’s got like those sliders you can kind of see before and after and see what the difference is between SDR and HDR imagery. And you realise, oh my God, HDR images are amazing. So the point of this feature, or the thing that I’m talking about is to try to let people actually be able to use HDR images on their WordPress websites.

\n\n\n\n

[00:44:17] Nathan Wrigley: That’s fascinating. So a metadata layer living on top of an image, which visibly transforms it, but not just to add, I don’t know, to change the hue or the tint of it, to render a better image of a higher quality. Gosh that’s fascinating.

\n\n\n\n

[00:44:32] Adam Silverstein: Yep. So the challenge we have in WordPress is the ability to process these images. So in WordPress, when you upload an image, it goes to the backend, to the web server, and then we process it, we convert it to various sizes for different display sizes. So you get a different image when you’re browsing the site on a mobile or a desktop or a high definition screen. We have all different sizes, and themes can add sizes.

\n\n\n\n

And all of that image processing happens using a couple of image processing libraries. GD and Imagick are the two that we support natively. Those libraries do not support the latest format, so Ultra HDR was maybe just added to Imagick. It will take years before that library, the new version of the library is actually available to WordPress sites. So even a format like AVIF that’s been around for quite a while now, is only supported by 30% of WordPress servers. So only 30% of WordPress sites can actually upload AVIFs and get the full, you know, various sizes that they need.

\n\n\n\n

So that’s a limitation of the architecture of WordPress. And one of the next features that I talked about is something that will help us leapfrog that limitation. Browser based image processing. Exactly right. So what I’m talking about here is WebAssembly.

\n\n\n\n

So WebAssembly is the ability to run code that was written in another language like C or C++, that targeted a machine language, is meant to be run natively on the hardware. So that, for example, these image processing libraries, and also newer image processing libraries, can be run directly in the browser.

\n\n\n\n

And what this gives us the ability to do is ship the latest version of the image library directly with WordPress. We no longer have to rely on hosts doing the messy and difficult process of upgrading servers, very challenging thing for hosts to do, to get the latest version of the Imagick library. We can just ship that library directly in the browser. And that gives us the ability to make every WordPress site support AVIF, and it also gives us the ability to do things we simply can’t do today on the backend.

\n\n\n\n

A good example of that is converting gif or gifs to movies, right? This is a common performance recommendation. Gifs are very heavy. You convert them to a native video element and they behave just the same for users, but they’re much lighter because the compression is so much smarter. Can’t do that in WordPress right now. Neither of the image libraries support that ability. But there are image processing libraries that handle this, and we can run those directly in the browser.

\n\n\n\n

[00:46:52] Nathan Wrigley: Let me see if I’ve got this right. So in this world of the future, it’ll be possible, let’s say in the block editor, I drag in a, I don’t know, a jpeg or something, but I could convert that on the fly to an AVIF for example.

\n\n\n\n

[00:47:05] Adam Silverstein: Yes. Even if your server didn’t support AVIF.

\n\n\n\n

[00:47:06] Nathan Wrigley: Even if. So it’s literally in the browser.

\n\n\n\n

[00:47:09] Adam Silverstein: Yes

\n\n\n\n

[00:47:09] Nathan Wrigley: Okay. First thing is that quick.

\n\n\n\n

[00:47:11] Adam Silverstein: Well, okay, so it’s not quick on the backend either, right? But it is asynchronous, so you can continue working on your post while it’s happening.

\n\n\n\n

[00:47:18] Nathan Wrigley: Right. So you wouldn’t necessarily see anything.

\n\n\n\n

[00:47:20] Adam Silverstein: Right. You would that it was processing. And of course it would depend on how large your image is, how many subsized images you’re creating. But no, it’s not fast. It’s a slow process, but it’s a one time thing each time you upload an image.

\n\n\n\n

[00:47:31] Nathan Wrigley: That was next question. It’s a one time thing. So the movie thing that you just described, where you got the gif to a movie, again, a one-time thing?

\n\n\n\n

[00:47:38] Adam Silverstein: Yes.

\n\n\n\n

[00:47:39] Nathan Wrigley: So we upload it. In the background, asynchronously, it’s converting it, and then at some point it gets saved, I guess as a .mov file or something like that? inside the media library?

\n\n\n\n

[00:47:50] Adam Silverstein: And this is actually not some future technology you’ll be able to use someday. You can use this today by installing Pascal’s Media Experiments plugin. So my colleague Pascal has swisspidy as his handle, people know him by that. But he’s got the Media Experiments plugin, and that will let you do all these things that I’m talking about today. And it is experimental, so beta software, but, check it out because it really demonstrates what we can do.

\n\n\n\n

There’s also a PR already open in Gutenberg with a whole roadmap for landing this feature. It is already sort of an experimental feature in Gutenberg. So if you install the Gutenberg plugin and you go into experiments, you can actually enable this feature. I don’t think it has all of the things that he has in the plugin, but it has sort of the additional framework for it.

\n\n\n\n

[00:48:28] Nathan Wrigley: If I were, well, I am fairly non-technical, this is the kind of stuff I expect, I think. You just drag an image from any device of any kind into the editor, whatever that editor interface is be it Gutenberg or, you know, whatever. It should just handle that. You know, there shouldn’t be a proclivity for we prefer this thing or we prefer that thing. It should just do it and whatever output I want, I want it as an AVIF, I want it as a WebP. Okay. we’ll just transform it in the background. I know there’s a ton of technological milestones to be achieved and overcome with that, but that is, I think, the expectation. The web should just work like that. Everything should convert and be easy, and drag and droppable and, yeah.

\n\n\n\n

[00:49:10] Adam Silverstein: Yeah, and famously, several years ago, Apple started storing images in the HEIC format, which is a better compression than jpeg. However, it’s not a web safe format. I think Safari is the only browser that supports it. So when we upload HEICs to WordPress now, we do convert them to jpegs for users.

\n\n\n\n

However, that only happens if your server supports HEIC images. Again, we rely on the server libraries, and that statistic is very similar to AVIF. It’s about 30% of sites. Fortunately Apple does automatically convert them if you upload them from your phone. But people do get into this problem where they wind up with HEIC images on their desktop and they’re trying to upload them to their WordPress, and then it will get rejected if your server doesn’t support it.

\n\n\n\n

[00:49:50] Nathan Wrigley: Yeah, this whole thing of, I’ve got images. It’s an image. Well, it’s in the wrong format. It’s an image.

\n\n\n\n

[00:49:55] Adam Silverstein: Right? Why do I have to care?

\n\n\n\n

[00:49:57] Nathan Wrigley: It shouldn’t matter. Yeah, okay. That’s a perfect example. Okay, so images, anything else?

\n\n\n\n

[00:50:02] Adam Silverstein: The other one that I think is really cool that maybe people don’t know about is running AI directly in your browser. So there’s a great library called Transformers.js that lets you run a whole bunch of different models, kind of, it acts as an interface.

\n\n\n\n

So just like the large language models that we have online, like Gemini and ChatGPT. You can actually run smaller versions of those directly in your browser. And some of the advantages of that are the data is private. There’s no API key required, or cost to you to use these. You can ship an AI directly with your product. So imagine you have a software, a plugin that is designed for company bulletin boards. You don’t really want that data going out to some remote API, but you’d like to give users a way to summarise the conversation from yesterday. A language model running in your browser is capable of doing that.

\n\n\n\n

[00:50:49] Nathan Wrigley: Where does it live.

\n\n\n\n

[00:50:50] Adam Silverstein: It runs in the memory of the browser and it gets downloaded in cache. So there is a large download when you first start using it to actually download the model. And then it’s cached, with the browser storage APIs.

\n\n\n\n

[00:51:01] Nathan Wrigley: It’s persistent.

\n\n\n\n

[00:51:03] Adam Silverstein: It’s persistent, yes.

\n\n\n\n

[00:51:03] Nathan Wrigley: Okay. Switch the machine off, switch the machine on.

\n\n\n\n

[00:51:05] Adam Silverstein: Yes. It’ll stay cached in your, browser. Browser has the ability to store files.

\n\n\n\n

[00:51:08] Nathan Wrigley: I’m guessing the constraints around what it can do compared to, I don’t know, ChatGPT 4o or whatever is much more minimal.

\n\n\n\n

[00:51:15] Adam Silverstein: Significant. Right. This is in the browser, you’re probably going to get the performance maybe that you got out of the models a year ago or a year and a half ago. Remember when.

\n\n\n\n

[00:51:24] Nathan Wrigley: Oh not that bad then.

\n\n\n\n

[00:51:25] Adam Silverstein: Yeah. Not that bad, right? And you can imagine that a year or two from now, they’re just going to get better. And there have been dramatic improvements, and even like new approaches to how they’re doing them. So they’re getting quite good. They’ll never be as good as the large language models that are running in the cloud that have abundant resources.

\n\n\n\n

There’s also hybrid models, right, where you use the local version when that’s all you have available, your offline, say, for example. Or you have a more complex query, then it can go to the cloud. There’s different ways of approaching that. But you can build a hybrid system, but the point of, the ability to run it in the browser, is to actually be able to do everything locally, and not rely necessarily on a cloud provider.

\n\n\n\n

[00:52:00] Nathan Wrigley: It really feels at the minute as if Google is in a big pivot towards AI.

\n\n\n\n

[00:52:06] Adam Silverstein: Absolutely.

\n\n\n\n

[00:52:07] Nathan Wrigley: In fact, it kind of feels like if you were to describe it as a race, it feels like Google is kind of nudging ahead at this moment in time. I just watched some of the bits and pieces from Google IO.

\n\n\n\n

[00:52:16] Adam Silverstein: Yes. Really impressive.

\n\n\n\n

[00:52:16] Nathan Wrigley: It was pretty profound in many respects. But also, can you constrain that AI? So for example, could I limit it to one, well, let’s say website? It can only be used and consumed by this thing. I don’t know if there would be a need for that. I’m just wondering, is it available to all the things or can you constrain it?

\n\n\n\n

[00:52:35] Adam Silverstein: I mean, so there are actually aI things being built into the browser where you’ll get AI in the browser itself. But this is not really that, this is more like it’s running inside your app. So it would be constrained. And I see this as something that we’ll start to see like plugins, shipping AI with their plugin, and it doesn’t require you to have ChatGPT or some other service provider, it just has the AI built in.

\n\n\n\n

Maybe it’s identifying objects in an image. Or maybe it’s reviewing comments as to whether they’re spam. So things like that where it’s a pretty straightforward AI capability, it works really well on these smaller models. And so that’s something that I could imagine would just be built into a plugin. You would add this AI feature, but it doesn’t require that you sign up for a ChatGPT account, and get an API key and install it. You know, there’s a lot of barriers, I guess, to using the cloud models.

\n\n\n\n

[00:53:23] Nathan Wrigley: Yeah. I feel like you’ve left the most interest, well, not the most interesting, but the bomb is there. My head is kind of a bit taken by that one because I can really, I mean, everybody’s fascinated by AI, the possibilities of it. But it’s always an API key. It’s always a go off somewhere else. I mean, maybe it hasn’t been for people such as yourself, but I did not know that it was possible in the browser.

\n\n\n\n

And if it’s only a year behind, honestly, the stuff that I want to do with it is give it a corpus of information and filter that a little bit and give me a summary of it. That’s what I’m using it for. I’m imagining that all of that would be possible in the browser at no monetary cost.

\n\n\n\n

[00:53:59] Adam Silverstein: Exactly. Right. Because you’re doing the computing yourself on your own platform.

\n\n\n\n

[00:54:03] Nathan Wrigley: And I would imagine, like I said, Google leaning into this, that’s only going to get more investment from them.

\n\n\n\n

[00:54:10] Adam Silverstein: Yeah. I mean, there is, yes, there’s a lot of investment going on in AI right now, so it’s pretty exciting. Yeah, and I did have, you know, I did talk a little bit about just how AI is going to impact all of our workflows and stuff, but that’s not really in the, it was kind of an expansion because it’s not actually a web capability, per se.

\n\n\n\n

[00:54:25] Nathan Wrigley: Yeah. Well, I think maybe that’s the perfect place to end it. Unless you’ve got some cataclysmic thing which can trump that.

\n\n\n\n

[00:54:30] Adam Silverstein: Nope. That was the end of talk. The last slide was really just asking for feedback from developers. So that would be my last thing to say is just, you know, try to give feedback. I’m always open. My DMs are open on WordPress Core Slack. And like I said, there’s the interop thing where you can actually open up a ticket.

\n\n\n\n

[00:54:45] Nathan Wrigley: So, again, dear listener, just remember all of this, the browser is doing this. It sounds like it’s WordPress doing it, or it sounds like some other third party service. It’s not, it’s all in The browser and it’s fascinating. The browser is definitely more powerful today than it was yesterday. Adam Silverstein, thank you so much for chatting to me.

\n\n\n\n

[00:55:02] Adam Silverstein: Yeah, thank you.

\n
\n\n\n\n

On the podcast today we have Adam Silverstein.

\n\n\n\n

Adam is a WordPress Core committer, and works to fix bugs and improve modern web capabilities. He’s also a Developer Relations Engineer on Chrome’s Web Platform team at Google, and there he focuses on making the open web better for everyone.

\n\n\n\n

Adam is here to break down how the rapid evolution of browser technology can supercharge your WordPress sites. We’re doing this by referencing his presentation at WordCamp Europe 2025, in which he covered multiple new features of browsers, which can be used by WordPress users to bring a variety of experiences to their websites.

\n\n\n\n

In many cases, these are browser APIs and features, and are quietly rdefining what’s possible on the web. From CSS-powered popovers and scroll-driven animations to speculative loading that speeds up your page transitions. Adam explains how these advancements are changing what’s possible for both developers and end-users.

\n\n\n\n

The conversation sheds light on the collaboration between browser vendors, Chrome, Firefox, Safari, and Edge, through initiatives like Interop and Baseline, paving the way for more consistent and robust features across platforms.

\n\n\n\n

Adam also talks about practical topics central to the WordPress community, like how the Popover API and native CSS carousels reduce JavaScript bloat, make sites more accessible, and deliver a better overall user experience.

\n\n\n\n

He shares exciting new frontiers, such as browser-based image processing powered by WebAssembly, which is paving the way for universal support of modern formats like AVIF and Ultra HDR, and even running AI locally in your browser, no API key or cloud server required.

\n\n\n\n

He provides concrete examples on how these technologies can be leveraged in WordPress via Core updates, canonical plugins, and Gutenberg experiments, with a special focus on how developers can get involved and offer feedback to help shape future web standards. Prepare to look at your browser in a whole new light, truly.

\n\n\n\n

Whether you’re a theme designer, plugin developer, or site owner simply curious about what’s next, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

Modernizing WordPress with new Web Platform Features – Adam’s presentation at WordCamp Europe 2025

\n\n\n\n

Drupal

\n\n\n\n

TYPO3

\n\n\n\n

Descript

\n\n\n\n

Popover API

\n\n\n\n

Baseline

\n\n\n\n

MDN docs

\n\n\n\n

Interop

\n\n\n\n

Scroll Animations API

\n\n\n\n

Slider Revolution

\n\n\n\n

Chrome Dev carousel demos

\n\n\n\n

CrUX

\n\n\n\n

BigQuery

\n\n\n\n

Customisable Select demos

\n\n\n\n

 Performance Lab plugin

\n\n\n\n

Ultra HDR

\n\n\n\n

GD

\n\n\n\n

Imagick

\n\n\n\n

WebAssembly

\n\n\n\n

 Pascal Birchler’s Media Experiments plugin

\n\n\n\n

 Transformers.js

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 23 Jul 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:12;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"Weston Ruter: Instant Back/Forward Navigations in WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://weston.ruter.net/?p=35588\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:82:\"https://weston.ruter.net/2025/07/23/instant-back-forward-navigations-in-wordpress/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:36679:\"

The new No-cache BFCache plugin enables instant back/forward navigations, particularly while logged in. See demos below for the impact this has on browsing.

\n\n\n\n

The speed of page navigations in WordPress has seen a big boost in 6.8 with the introduction of Speculative Loading. When paired with the original feature plugin, site visitors can experience instant page navigations thanks to its opt-ins for prerendering and “moderate eagerness”. However, WordPress does not enable such instant navigations by default. WordPress core must take a conservative approach since prerendering may cause compatibility problems, like with analytics or ads. There is also a sustainability concern with moderate prerendering since a user may momentarily hover over a link but not intend to follow it at all; this results in an unused prerender, which can waste a user’s bandwidth (and CPU to a limited extent) as well as increase the load on the web server (which can be problematic on shared hosts without page caching). Furthermore, even when prerendering is enabled, not all visitors may be able to experience instant page loads because:

\n\n\n\n
    \n
  1. Moderate eagerness is limited on mobile devices (where there is no hover heuristic on touch screens).
  2. \n\n\n\n
  3. Speculative Loading is not enabled when a user is logged in. (Updates: See PR which introduces a frontend opt-in, and the Speculative Loading Admin plugin for a backend opt-in.)
  4. \n\n\n\n
  5. The Speculation Rules API is currently only supported in Chromium, leaving Safari and Firefox users out.
  6. \n
\n\n\n\n

Nevertheless, there is a much older web platform technology that enables “prerendering” and which is supported in all browsers: the back/forward cache (bfcache). This instant page navigation involves no network traffic and no CPU load. Previously visited pages are stored in memory as a snapshot with their entire state so that they can be restored instantly. Navigating to pages stored in bfcache is as fast as switching open browser tabs.

\n\n\n\n

Back/forward history navigations are very common, as according to the web.dev article on bfcache:

\n\n\n\n
\n

Chrome usage data shows that 1 in 10 navigations on desktop and 1 in 5 on mobile are either back or forward. With bfcache enabled, browsers could eliminate the data transfer and time spent loading for billions of web pages every single day!

\n
\n\n\n\n

Also learn more via the following video:

\n\n\n\n
\n\n
\n\n\n\n

While Speculative Loading enables prerendering, bfcache involves “previous-rendering”.

\n\n\n\n

The good news is that 84% of WordPress origins in HTTP Archive are already bfcache-eligible (based on this query from Gilberto Cocchi). However, the most frequent user of your site may still not be able to experience instant page navigations via bfcache: you! While browsing around the WP Admin and navigating the frontend of your site, the pages most likely aren’t eligible for bfcache due to various blocking reasons. This sluggish experience extends not only to administrators but also to users of sites which require authentication, including e-commerce (e.g. WooCommerce), social (e.g. BuddyPress), and any membership sites. The 84% metric above doesn’t take into account these types of WordPress sites since HTTP Archive exclusively crawls public URLs without authentication. Users browsing WordPress sites on shared hosts or when on a slow connection will be especially frustrated by slow back/forward navigations. Enabling instant back/forward navigations will not only make your users happier (especially you), but it can also improve your CWV passing rate in CrUX.

\n\n\n\n

I’ve been on a mission to bring back bfcache (or rather to bring it forward).

\n\n\n\n

Stale Content in Page Caches

\n\n\n\n

Before going further, I wanted to call out a potentially negative consequence of navigating cached pages. While instant back/forward navigations can provide a big performance boost to the user experience, they can also be a source of confusion when navigating to a cached page with stale content.

\n\n\n\n

Consider the case of an e-commerce site, where a user is on the shopping cart page. From there, they click a link to a related product, and from that product page they add it to the cart dynamically (e.g. via Ajax). At this point, if they hit the back button to return to the cart page and the cart is restored from a page cache, they may not see the newly added product in the cart. A user can simply reload the page to fix this, but this can also be handled automatically.

\n\n\n\n

As described in the “Update stale or sensitive data after bfcache restore” section of the web.dev post, the pageshow event with the persisted property (further discussed below) indicates when a page was restored from bfcache. This event can be used to update the DOM with the latest shopping cart details. In fact, WooCommerce already implements this for its cart:

\n\n\n
const refreshCachedCartData = ( event: PageTransitionEvent ): void => {\n	if ( event?.persisted || getNavigationType() === \'back_forward\' ) {\n		dispatch( cartStore ).invalidateResolutionForStore();\n	}\n};\n/* ... */\nwindow.addEventListener( \'pageshow\', refreshCachedCartData );
\n\n\n

Simply searching a plugin’s codebase for “pageshow” (e.g. in Woo) should indicate whether bfcache navigations are accounted for.

\n\n\n\n

Note also that stale content is also an issue we’ve faced with Speculative Loading, especially when using non-conservative eagerness.

\n\n\n\n

Breaking Caching to Preserve Privacy

\n\n\n\n

My bfcache work began two years ago when I started collaborating on #55491 to eliminate the use of the deprecated unload event handler in WordPress core. Not only does this event fire unreliably, but it also has the side effect of making a page ineligible for bfcache via the “unload-listener” blocking reason. I had queried HTTP Archive myself at the time, and I found it to be the second most common blocking reason. So in r56809 we eliminated all uses of unload, including from:

\n\n\n\n
    \n
  • Heartbeat API
  • \n\n\n\n
  • Post locking in the classic editor
  • \n\n\n\n
  • Post previews
  • \n
\n\n\n\n

However, even with the use of unload eliminated, I was confused why I wasn’t finding pages to be eligible for bfcache in my testing. (The removal of unload in core likely didn’t make a dent in bfcache eligibility in HTTP Archive since only 0.25% of unauthenticated pages had the Heartbeat API present.) It turns out that several weeks before I started working on this, a commit had landed which intentionally broke browser page caching (both bfcache and HTTP cache): the no-store directive was added to the Cache-Control response header for logged-in users. (Specifically, this was added to the wp_get_nocache_headers() function.) This introduced the “response-cache-control-no-store” bfcache blocking reason, which was actually the most common reason for ineligibility, just above unload in my HTTP Archive query. The reason for adding this is found in #21938 which proposed adding the no-store directive in order to explicitly disable caching so that authenticated pages do not get stored in the browser cache. This was followed up with #61942 to also send no-store on the frontend while a user is logged in. The rationale for this is rooted in privacy, per the commit message:

\n\n\n\n
\n

The intention behind this change is to prevent sensitive data in responses for logged in users being cached and available to others, for example via the browser history after the user logs out.

\n
\n\n\n\n

Consider an administrator who is logged in to WordPress on a shared computer and is working on something sensitive, like managing API keys on an admin screen. A malicious person could navigate back to that admin screen via the back button after the user had logged out. Nevertheless, the “bad guy” will need to act fast because a browser won’t store cached pages indefinitely; Chrome, for example, holds onto pages in bfcache for 10 minutes. (Tip: When using a shared computer, always exit the browser after logging out of all sites when ending work.) So while no-store here does improve privacy, it does so at the expense of the user experience by degrading the performance of back/forward navigations. Even when pages aren’t eligible for bfcache, removing no-store still improves back/forward navigation performance since pages can be served from the browser’s HTTP cache (although the DOM has to be re-built and scripts have to be re-executed).

\n\n\n\n

Surely there must be a way to preserve privacy and promote performance together.

\n\n\n\n

It’s important to note that the no-store directive not only prevents pages from being cached by the browser, but it also preserves privacy by preventing proxies from caching pages, per MDN:

\n\n\n\n
\n

The no-store response directive indicates that any caches of any kind (private or shared) should not store this response.

\n
\n\n\n\n

Keeping authenticated pages out of page caches prevents embarrassing scenarios like serving a user the shopping cart page for another user. Nevertheless, there is a more tailored Cache-Control mechanism for this purpose: the private directive. Again, per MDN:

\n\n\n\n
\n

The private response directive indicates that the response can be stored only in a private cache (e.g., local caches in browsers). ¶ You should add the private directive for user-personalized content, especially for responses received after login and for sessions managed via cookies. ¶ If you forget to add private to a response with personalized content, then that response can be stored in a shared cache and end up being reused for multiple users, which can cause personal information to leak.

\n
\n\n\n\n

This is what was originally requested in #57627, but both private and no-store were added together, with the commit message reasoning:

\n\n\n\n
\n

The private directive complements the no-store directive by specifying that the response contains private information that should not be stored in a public cache. Some proxy caches may ignore the no-store directive but respect the private directive, thus it is included.

\n
\n\n\n\n

So how can the private directive be retained for proxies, while removing the no-store directive so that a user can benefit from browser caching but not at the expense of privacy?

\n\n\n\n

Preserving Privacy while Caching

\n\n\n\n

In order to omit the no-store directive and enable instant back/forward navigations while preserving privacy, a way is needed to evict pages from the browser cache when a user logs out. In my research, there are three mechanisms to do this, with various degrees of browser support.

\n\n\n\n

The Clear-Site-Data Header

\n\n\n\n

The most straightforward mechanism to invalidate pages from bfcache would at first seem to be the Clear-Site-Data HTTP response header. This is supposedly Baseline 2023 Newly Available, but there is an asterisk: “Some parts of this feature may have varying levels of support.” Per MDN, this header “sends a signal to the client that it should remove all browsing data of certain types (cookies, storage, cache) associated with the requesting website.” In fact, the cache directive for this header seems to be exactly what is needed, as it even explicitly calls out bfcache:

\n\n\n\n
\n

The server signals that the client should remove locally cached data (the browser cache, see HTTP caching) for the origin of the response URL. Depending on the browser, this might also clear out things like pre-rendered pages, backwards-forwards cache, script caches, WebGL shader caches, or address bar suggestions.

\n
\n\n\n\n

However, note the word “might”. In my testing, sending this header does currently evict pages from bfcache in Chrome. But, there is an open spec question for whether Clear-Site-Data should clear bfcache; it mentions dropping the cache directive entirely, and it suggests that a different executionContexts directive may be more appropriate (but its browser support is even worse and it may be dropped from the spec). Firefox dropped support for the cache directive but then restored it, although in testing it seems Firefox only evicts pages from the HTTP cache and not from bfcache. Finally, Safari doesn’t seem to evict pages from either the HTTP cache or bfcache when this header is sent.

\n\n\n\n

When/if browser support for this is improved, implementing eviction of pages from browser caches could be as simple as:

\n\n\n
add_action(\n	\'clear_auth_cookie\',\n	function () {\n		header( \'Clear-Site-Data: \"cache\"\' );\n	}\n);
\n\n\n

Ultimately, while this header seems to be tailor-made for evicting pages from browser caches, it cannot be relied on since it is clearly not widely available in Baseline, and not even “newly available” either. There is also a Chromium bug (40233601) where sending this header can greatly delay page response times, possibly causing a logout link to take half a minute to respond. The final mark against Clear-Site-Data is that the header requires a secure context (HTTPS), so the WordPress sites still on HTTP could not evict pages from browser caches using this header (although privacy could be the last of their concerns at this point).

\n\n\n\n

So to preserve privacy, another browser page cache invalidation method is currently needed.

\n\n\n\n

Broadcast Channel

\n\n\n\n

Going back to the aforementioned bfcache blocking reasons, one of them is “broadcastchannel-message”:

\n\n\n\n
\n

While the page was stored in back/forward cache, a BroadcastChannel connection on the page received a message to trigger a message event.

\n
\n\n\n\n

I went down a rabbit hole with this one, thinking I could leverage this blocking reason as a bfcache eviction mechanism. In my discarded implementation, all authenticated pages include a script which listens to a broadcast channel such as “auth_change”. Then, to evict authenticated pages from bfcache upon a successful logout (or logging in as another user), a script can be included on the page which simply broadcasts an arbitrary message to this same “auth_change” broadcast channel. This causes the eviction of any authenticated pages in bfcache which are listening to messages from this broadcast channel.

\n\n\n\n

I was seeing very promising results with this approach, where pages were being successfully evicted from bfcache in Chromium (Chrome/Edge) and Firefox. Nevertheless, eviction was not happening in Safari, which apparently has not yet implemented this blocking reason. However, this approach fell apart once I closed DevTools.

\n\n\n\n

Normally when DevTools is open I have “Disable cache” checked in the Network panel. This disables the HTTP cache, but not the bfcache. What I would see then is if I navigated around the WP Admin and then logged out in a second tab, hitting the back button in the first tab would immediately take me to the login screen. This is exactly what I wanted. However, once I closed DevTools, I started seeing pages served from the browser’s HTTP cache when navigating back/forward. Because the no-store directive is removed, this means the browser may actually serve pages from HTTP cache when navigating back/forward, even when the Cache-Control header has no-cache, must-revalidate, and max-age=0. And here, when the user logged out, they shouldn’t be served from either HTTP cache or bfcache to preserve privacy. So this was not a viable approach in the end.

\n\n\n\n

Just-in-time Page Cache Invalidation

\n\n\n\n

Ultimately, the most reliable solution I’ve found to invalidate pages from both bfcache and the HTTP cache is to do so just-in-time with JavaScript: When a page is restored from a browser cache and it is determined to be stale, the page contents are wiped and the page is reloaded. This approach is also referenced in the aforementioned “Update stale or sensitive data after bfcache restore” section on web.dev, although I’m accounting for pages not only restored from bfcache but also the HTTP cache.

\n\n\n\n

My implementation involves the creation of a new session token when the user authenticates. This session token is served in the HTML with each authenticated page, and it is also set as a wordpress_​bfcache_​session_​{COOKIEHASH} cookie which can be read by JavaScript. When a user logs out, this session token cookie is cleared. Whenever a page is loaded, the session token in the HTML is compared with the current session token in the cookie. When they don’t match, then the page is invalidated. If a page is served from bfcache, then the pageshow event (with persisted true) is used to do this check; if a page is served from the HTTP cache, then the check is done when the script module is executed. If the user had logged out, then reloading the page will take them to the login screen which, after authenticating, will redirect them back to the page they had been on.

\n\n\n\n

As this page cache invalidation mechanism depends on JavaScript, scripting must be enabled to be eligible to omit the no-store directive from the Cache-Control header. This JavaScript detection can be done when the user submits the login form.

\n\n\n\n

This implementation has been made available in a new plugin: No-cache BFCache. It is available on WordPress.org and on GitHub. This is a feature plugin to implement #63636 in WordPress core.

\n\n\n\n
\n\n\n\n

Demos

\n\n\n\n

In the following demos, I have Slow 4G network emulation enabled along with CPU throttling. This is in order to better simulate what an average user may experience when navigating, such as on a mid-range device potentially with a WordPress site on a shared host.

\n\n\n\n

Demo: Navigating the WordPress Admin

\n\n\n\n

After navigating from the Dashboard to the posts list table and then opening a post to edit, you can see the difference in speed navigating back and forth through the browser history:

\n\n\n\n
\n
\n

Without bfcache

\n\n\n\n
\n\n
\n
\n\n\n\n
\n

With bfcache

\n\n\n\n
\n\n
\n
\n
\n\n\n\n

Demo: Navigating the WordPress Frontend

\n\n\n\n

Here you can see me draft a message in a BuddyPress activity update. Then I navigate to another URL, and then I go back and forward:

\n\n\n\n
\n
\n

Without bfcache

\n\n\n\n
\n\n
The drafted BuddyPress activity update is lost when navigating away from the page before submitting. The activity feed and Tweet have to be reconstructed with each back/forward navigation.
\n
\n\n\n\n
\n

With bfcache

\n\n\n\n
\n\n
The drafted BuddyPress activity update is preserved when navigating away from the page without submitting. The activity feed and Tweet do not have to be reconstructed when navigating to previously visited pages via the back/forward buttons.
\n
\n
\n\n\n\n

Appendix

\n\n\n\n

WooCommerce has been serving pages with no-store even for unauthenticated users on its Cart, Checkout, and Account pages. This slowed down navigating a store, even though Woo already implements support for ensuring a cart is up-to-date via the pageshow event, as mentioned above. The lack of bfcache means not only that navigating back to the cart is much slower than it needs to be, but there can also be data loss, for example an entered coupon but accidentally not applied. In PR #58445 the sending of no-store was removed. This is slated to be part of v10.1. See before/after demo videos.

\n\n\n\n

Similarly, in Jetpack certain admin screens are sending no-store which slow down back/forward navigations. In Jetpack 14.9, PR #44322 removes this and greatly speeds up navigating to/from Jetpack admin screens, as seen in the demo videos.

\n\n\n\n

Sometimes the instantaneous navigations enabled by bfcache (and prerendering in Speculative Loading) can be a bit jarring, since pages load faster than expected. So the No-cache BFCache pairs well with the View Transitions plugin which now features an Admin View Transitions opt-in. This helps smooth the overall experience.

\n\n\n\n
\n\n\n\n

Special thanks to Kinsta for sponsoring part of my time contributing to WordPress while I’ve been between full time roles. I also discussed this bfcache project in my “From Cassette Tapes to Core Commits: Weston Ruter’s WordPress Journey” interview with Roger Williams last week.

\n\n\n\n
\n\n\n\n

Where I’ve shared this, if you want to boost:

\n\n\n\n\n\n\n\n

\n

The post Instant Back/Forward Navigations in WordPress appeared first on Weston Ruter.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 23 Jul 2025 07:51:21 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Weston Ruter\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:13;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:82:\"Jonathan Desrosiers: Implementing AI in Open Source Without Losing the Human Touch\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"https://jonathandesrosiers.com/?p=6434\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:101:\"https://jonathandesrosiers.com/2025/07/implementing-ai-in-open-source-without-losing-the-human-touch/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:14043:\"

AI is reshaping how we interact with technology and with each other. In large, collaborative Open Source communities like WordPress, the shift towards AI is exciting, but it brings unique challenges when applied across a global contributor base.

\n\n\n\n

There are extreme stances on both sides of the argument. On one side: “AI everything.” On the other: “AI has no place here.” I am somewhere in the middle. Watching. Listening. Experimenting.

\n\n\n\n

I spend a lot of time thinking about contributor workflows and triage. This post is a reflection on how we might integrate AI into those areas in thoughtful ways, without losing the human qualities that make Open Source great.

\n\n\n\n

AI Is Just the Newest Kind of Automation

\n\n\n\n

Automation is not new. WordPress has embraced automation in many forms over the years: build scripts, linting tools, unit testing, continuous integration workflows, and more. AI is simply another form of automation. It only does what we configure it to do. We haven’t reached any kind of singularity just yet.

\n\n\n\n

But with great power comes great responsibility. Just because we can doesn’t mean we should. Every proposed use of AI should be measured against our core values: putting the users first, backwards compatibility, democratizing publishing, and making WordPress welcoming to contributors of all skill levels.

\n\n\n\n

What Should Always Be Human?

\n\n\n\n

Before we introduce AI into the community, we need to answer one critical question: What must be human? If we first identify those things and declare them sacred, we can then begin to explore how to best surround and support them with AI-related tools.

\n\n\n\n

Related to that is another important question: What do people expect to be human? And where do those expectations align or conflict with perception, or the tasks that actually make us more productive?

\n\n\n\n
\"A
CC0 licensed photo by Nilo Velez from the WordPress Photo Directory.
\n\n\n\n

From personal experience, I hate when I’m forced to interact with AI or a chat bot when I was instead expecting (or hoping for) a human. Rarely am I surprised in a good way. More often I’m frustrated and disappointed by limitations and rigid structure. Expectations matter.

\n\n\n\n

The right approach could be to let each contributor configure the level of AI support they want to meet their needs and expectations.

\n\n\n\n

Some common-sense boundaries might include the following:

\n\n\n\n

The first and last interaction on every ticket should always be human

\n\n\n\n

Creating a ticket in a large project takes courage. A human response is a sign of respect and gratitude. Every reporter is owed at least two human responses. That human interaction sets the tone, builds trust, and encourages continued participation. Tactfully sprinkling AI in the middle is acceptable.

\n\n\n\n

AI should not be used for evaluating ideas or making decisions

\n\n\n\n

Verifying a patch, helping adhere to coding standards, providing suggestions for improvement, or flagging potential issues based on past commit activity are all great opportunities to use AI. But using AI to actually make decisions becomes quite risky.

\n\n\n\n

I think it’s safe to say that the overwhelming majority of contributors expect final decisions to be made by humans. However, AI could support the evaluation of ideas by identifying possible consequences, providing historical context, fact-checking, and validating rationale.

\n\n\n\n

There could also be an option to request deeper AI insight using a keyword, like needs-ai-feedback, when necessary.

\n\n\n\n

AI can break down cultural and language barriers

\n\n\n\n

Global collaboration is a strength of Open Source, but it also introduces communication challenges. Language barriers, social norms, and tone differences can unintentionally create friction. AI has the potential to help us bridge those gaps. It can assist with translating intent, softening language, and suggesting more inclusive phrasing. By helping contributors express themselves clearly and interpret others more generously, AI can promote empathy and reduce misunderstandings.

\n\n\n\n

While there are localized support resources for the WordPress project, it’s generally expected that when contributing you are doing so in English. But what if AI were used to automatically translate any message, allowing someone to contribute in their native tongue? How many more contributors could we activated with something like this?

\n\n\n\n

When used thoughtfully, AI can enhance human conversations across cultures rather than replace them.

\n\n\n\n

AI as a Contributor Onboarding Tool

\n\n\n\n

AI is great for handling beginner-leaning tasks. So how can we use AI to level up contributors that are just getting involved?

\n\n\n\n

This is also tricky because Open Source projects need contributors of all levels to ensure a healthy pipeline. We don’t want to replace them since the novice contributors of today are potentially future maintainers and leaders. Instead, we should focus on how to support and empower them.

\n\n\n\n
\"A
CC0 licensed photo by Tomek Lach from the WordPress Photo Directory.
\n\n\n\n

AI could assist new contributors in a number of ways: explaining the history behind a change, suggesting further reading, answering questions, and setting expectations by describing what usually happens next for similar tickets.

\n\n\n\n

The number one thing I hear from new contributors is that it’s too hard to find something to do. That’s ironic, given how much work there is. Unfortunately, most of it just isn’t easy to find.

\n\n\n\n

With the right prompts, AI could help new contributors by doing things like:

\n\n\n\n
    \n
  • Ask qualifying questions and use its understanding of contributor expectations and process to suggest appropriate tickets.
  • \n\n\n\n
  • Provide detailed descriptions of what needs to be done and why it matters.
  • \n\n\n\n
  • Recommend logical next steps or related tickets based on interest and skill level.
  • \n
\n\n\n\n

These types of interaction could help people get started and build confidence more quickly.

\n\n\n\n

Preserving the Human Voice

\n\n\n\n

Another fun idea: What if we trained AI bots in the style of long-time contributors? That kind of tool could preserve institutional knowledge while making expert guidance more accessible.

\n\n\n\n

Many have joked before: “If only we could clone Sergey.” Maybe AI makes the kind of mentorship our most prolific contributors provide more scalable. With well-documented public contributions, we could build agents trained on a contributor’s feedback patterns (with clear disclaimers that they are approximations, not endorsements, of course).

\n\n\n\n

It could also be component-specific. Perhaps there’s a Jonathan bot that responds to feedback requests on Build/Test Tool tickets. Or perhaps a Jorbin bot that offers a clever pun before sharing deep historical context. These bots wouldn’t replace the people behind them; they could help scale their impact and preserve bandwidth. Of course, we’d need community agreement, ethical safeguards, and consent before simulating the voice of any individual contributor.

\n\n\n\n

Strengthening AI Tools Through Documentation

\n\n\n\n

Cross-team collaboration and documentation could benefit greatly from AI. But AI is only as good as the data it’s trained on. That makes clear, consistent documentation essential, not just helpful.

\n\n\n\n

For AI to be successfully implemented, our processes, workflows, and expectations all need to be clearly documented. Now is the time to take stock of our processes, standards, and documentation gaps. This includes teams like Performance, Accessibility, Internationalization, Design, and AI itself.

\n\n\n\n

There are already areas where automation could be introduced thoughtfully. Trac, for example, uses a set of action and status keywords that are excellent candidates for AI-assisted workflows. A keyword like fixed-major could automatically trigger a pull request backport. Similarly, AI could suggest keywords, help verify whether a keyword is appropriate, or identify when something has been overlooked. But the documentation around these keywords is basic at best.

\n\n\n\n

Building Educational Content

\n\n\n\n

Another promising area is summarizing complex or repetitive concepts. AI excels at distilling large volumes of discussion and activity into summaries, tutorials, or templates. This could be especially useful for the Learn team, where AI might monitor contributor activity and auto-draft course outlines or video scripts for tasks that are frequently repeated.

\n\n\n\n

Creating this content can take a considerable amount of time, and contributors who perform these tasks often don’t have the bandwidth to document them as well.

\n\n\n\n

Closing Thoughts

\n\n\n\n

AI holds enormous potential to make Open Source more welcoming, efficient, and inclusive. But that’s only possible if we use it with intention. We should approach AI the same way we approach any other major change to the project. It should be evaluated like everything else: carefully, collaboratively, and with the long-term health of the community in mind.

\n\n\n\n

How do we avoid creating more work for our future selves?

\n\n\n\n

Let’s not just ask what AI can do. Let’s ask what it should do, what it should never replace, and how we can answer those questions together as humans.

\n\n\n\n

Featured image credit: CC0 licensed photo by Jennifer Bourn from the WordPress Photo Directory.

\n

The post Implementing AI in Open Source Without Losing the Human Touch appeared first on Jonathan Desrosiers.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 22 Jul 2025 18:05:39 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Jonathan Desrosiers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:14;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"Tammie Lister: Optimizing triage with AI starting points\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://binatethoughts.com/?p=2398\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"https://binatethoughts.com/optimizing-triage-with-ai-starting-points/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:7860:\"

Back in June, I wrote about how triage and reviews in WordPress could be optimized with the help of AI. Since then, discussions have taken place, and last week, James LePage released the Trac MCP Server, which is now capable of interacting with Claude and ChatGPT. A demo of the MCP server is available here. With this in mind, I would like to share my perspective on how this can be applied now.

\n\n\n\n

Before I dive in, it’s worth noting that this isn’t a problem that can be solved by one person or one view. It also doesn’t just solve looking at one tool or Trac, GitHub alone. It happens during discussions, when multiple people think about this and then explorations take place. It does, however, need to start, and we can do that without disrupting our existing flows. AI can empower us, and tools like this can improve and boost our flows today.

\n\n\n\n
\n

MCP Servers: Lightweight programs that each expose specific capabilities through the standardized Model Context Protocol

\n\n\n\n

https://modelcontextprotocol.io/introduction

\n
\n\n\n\n

The issue

\n\n\n\n

WordPress has thousands of open tickets spanning many years. Humans are not as good at pattern matching as AI. We do, however, pattern match, and we work well when they are brought to our attention. Whilst closing all tickets via automation would be a friction point, using AI to support, guide and surface what should be worked on makes a lot of sense. Traditional triage is manual, often even though we can use the best reports, which are not as scalable as we would like.

\n\n\n\n

The current reporting tools in Trac are limited to the interface. They are bound by query construction and are not often created using natural language, so their formation is disjointed and frequently problematic for many to access.

\n\n\n\n

Starting with prompts

\n\n\n\n

This is where tools like the Trac MCP Server can be beneficial. For example, Claude allows you to prompt to get an output. If we think of these as ‘reports’ in the loose term, they can be tested in triage sessions.

\n\n\n\n

The Trac MCP Server unlocks the data and could, through Claude or ChatGPT, even surface the project’s health. A key point, though, is not to use it to replicate the tasks that reports do today. It can do more and should do.

\n\n\n\n

Building up fidelity like this is a process we are all familiar with in engineering. You algorithmic work out something, then you build it, then you automate it. If you utilise AI, you can achieve better results, and we all know this. It’s just tempting to skip to the good part of letting AI hallucinate a prompt sometimes.

\n\n\n\n

Not just triage, context

\n\n\n\n

Through this MCP server, access is available to all WordPress development history in Trac. Every bug, enhancement, discussion and decision. This goes beyond triage, so worth noting. Imagine you want, for example, context on decisions. You can do that by querying a ticket. I decided to go on a little journey.

\n\n\n\n

For example, consider the following prompt: “What is happening in WordPress development right now?”

\n\n\n\n
\"\"
\n\n\n\n

Perhaps you’d like to delve a bit deeper into: “What types of tickets are sitting open vs. getting fixed?”

\n\n\n\n
\"\"
\n\n\n\n

I then went a little more into things: “Can I predict which tickets need attention?”. I began thinking about a severity classification framework in collaboration with Claude; by doing this, I could create a report that queried. This would give me an action list to compare against the predictions. This is how to level up this type of data.

\n\n\n\n

The key issue to resolve here is figuring out which classification framework to use and how an agreement is reached. It’s all well and suitable for each of us to use a different one that we vibe with, but there needs to be a standard for the project. This is achievable, though, and it starts with using all we know and use daily in triage. Once we have that, we can have a standard to measure by.

\n\n\n\n

This can be used in a variety of applications, from triage to product management and writing posts to providing context for yourself. Having this type of easy, natural access unlocks the hidden history of WordPress development.

\n\n\n\n

Extra level

\n\n\n\n

If the reports are consistently surfacing correct results, we should add even proposed closings. We only do that once the reports are consistent. An MCP server delivers data, allowing AI to access it, and that’s where the power comes in.

\n\n\n\n

This may not require an interface. At some point, perhaps, but right now, exploring what can be unlocked by prompting is where the true power lies. You can pipe it in and generate something. You can vibe a dashboard (I did for a timebox fun), but that’s a nice-to-have tool, or at least distracts from how useful this can be if the prompting can be refined and data dug into. The more personally I use tools like this, the less I want an interface beyond a prompt, at least to start. I want to work out how they will be helpful.

\n\n\n\n

Considerations

\n\n\n\n

As with anything freshly baked like this, there are considerations and caveats. Trac is just one place where things happen; GitHub is the other, so we do need a way to see a holistic picture to know the entire state. Other things we likely need are an easier way to query based on users, although the reports in Trac are well-suited for that purpose. We need to be continuously mindful that this is not to replicate or replace those, but go beyond and give us something they don’t, not be bound by the reporting tool’s interface.

\n\n\n\n

Access to this meant I used my Claude account, and while many have this, we need to be considerate that not everyone has access to these tools yet at the paid tiers. That was why seeing ChatGPT support added was great. Overall, though, the barrier to entry is low, and I encourage people to explore and see what they can create.

\n\n\n\n

Reflections

\n\n\n\n

The future of open source development isn’t just about better code; it’s about better intelligence on how we build that code. We need that access where we work. One pattern I have noticed with this MCP server is how useful it is to have it exist for me. Simply knowing I can prompt like this means I do. There is a strong case to be made for no interface, but reusable prompting at least while we work out agentic approaches to triage.

\n\n\n\n

I find myself exploring this data because it is accessible to me. I say that as someone who can create reports in Trac. But, there is something much more human about the way we create prompts. This is also the first week of the Trac MCP server. Let’s see what the next iterations bring and where others take this.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 22 Jul 2025 11:22:42 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"binatethoughts.com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:15;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"Open Channels FM: The Indonesia WordPress Community Gets Ready for WordCamp Asia\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=103551\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:87:\"https://openchannels.fm/the-indonesia-wordpress-community-gets-ready-for-wordcamp-asia/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:206:\"In the final WordPress Event Talk, the Indonesian community discussed Indonesia\'s readiness to host WordCamp Asia, emphasizing local strengths, challenges, and the need for a phased approach to preparation.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 22 Jul 2025 05:56:22 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:16;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:87:\"Open Channels FM: The Power (and Profits) of Being a Generalist in WordPress Consulting\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=101221\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:92:\"https://openchannels.fm/the-power-and-profits-of-being-a-generalist-in-wordpress-consulting/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:217:\"Three WordPress veterans argue that generalists are valuable in tech, emphasizing adaptability, effective communication, and problem-solving abilities over narrow specialization for achieving higher consultancy rates.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 21 Jul 2025 12:12:53 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:17;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:120:\"Gutenberg Times: AI Building Blocks, WordCamp US, WordPress 6.9 Planning, Block Developer Cookbook—Weekend Edition 334\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://gutenbergtimes.com/?p=40875\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:126:\"https://gutenbergtimes.com/ai-building-blocks-wordcamp-us-wordpress-6-9-planning-block-developer-cookbook-weekend-edition-334/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:23102:\"

Hi there,

\n\n\n\n

It’s good to be back from vacation! Norway is a great country with a rich history, excellent food, great culture, and huge prices. It is absolutely worth it, though.

\n\n\n\n

While I was away, some great educational programs came online. I am glad Destiny Kanno published How to Talk About and Support the New WordPress Education Initiatives to catch me and you up on all the fabulous opportunities to help young folks get acquainted with WordPress and learn some life skills, too.

\n\n\n\n

For the first time in three years, I will be back at WordCamp US in Portland, OR, August 26 to 29, 2025. Will you be there? I would love to see you again in person. It’s been too long! Get your ticket now. The organizer started announcing speakers.

\n\n\n\n

And now back to regular programming. Enjoy the newsletter.

\n\n\n\n

Yours, \"💕\"
Birgit

\n\n\n
\n\n
\n\n
\n\n\n

Developing Gutenberg and WordPress

\n\n\n\n

WordPress 6.8.2 Maintenance Release came out this week. Release lead Jean Baptist Audras mentioned in his release post that 20 core and 15 block editor fixes were included in this minor release. Update now to benefit from these bug fixes.

\n\n\n\n
\n\n\n\n

Core committer Jeffrey Paul posted the WordPress 6.9 Planning Proposal and Call for Volunteers. The deadline to apply for the release squad is July 25th, 2025. Beta 1 is scheduled for October 21, RC 1 for November 11, and the final release date is December 2, 2025.

\n\n\n\n

Just doing some quick calculations here: It looks like the upcoming release is going to pack in all the goodies from Gutenberg versions 20.5 to 21.9, assuming we keep up that two-week release schedule.

\n\n\n\n
\n\n\n\n

Justin Tadlock published What’s new for Developer (July 2025) and lists phased plugin updates, custom social icons, and more in this summer edition of the monthly WordPress developer roundup.

\n\n\n\n
\n\n\n\n

Speaking of the WordPress Developer Blog, Mary Baum put out a call for writers! If you like writing technical tutorials and sharing your learnings or research with WordPress developers, get the skinny from her post: The Developer Blog needs you!

\n\n\n\n
\n\n\n\n

Hector Prieto just managed the release of Gutenberg 21.2. It brings further refinements to the interface , Dataviews and continued progress on toolspanel implementation. You can read the full release post with details on what’s new in Gutenberg 21.2? (16 July)

\n\n\n\n
\n\n\n\n

James LePage gives you a run down of the AI Building Blocks for WordPress. Each building block is listed with a brief description and a more detailed overview article linked for further reading.

\n\n\n\n\n\n\n\n

The plugins will be worked on as canonical/feature plugins to avoid early lock-in in a space that moves really, really fast at the moment. LePage also gives context to how this work overlaps with the initiatives of Gutenberg Phase 3: new admin design, collaborative editing, and the work on revamping the Media Library.

\n\n\n\n
\n\n\n\n

In this week’s live stream, JuanMa Garrido covered each of the building blocks. You can watch the recording on YouTube: Core projects for AI in WordPress

\n\n\n\n\n\n
\n

\"🎙\" The latest episode is Gutenberg Changelog 119—WordPress 6.8.2 and 6.9, Gutenberg 21.1, 21.2, and 21.3 Releases with Tammie Lister.

\n\n\n\n
\"Tammie
\n\n\n\n

If you are listening via Spotify, please leave a comment. If you listen via other podcast apps, please leave a review. It’ll help with the distribution.

\n
\n\n\n\n

Plugins, Themes, and tools for #nocode site builders and owners

\n\n\n\n

In his latest video, Designing with the Columns block, Wes Theron guides you through how to use the columns block to build various layouts to build sites. He covers how to structure and organize your content. He’ll show you how to add, customize, and design layouts with multiple columns—ideal for displaying text, images, and other blocks side by side.

\n\n\n
\n
\n\n
\n
\n\n\n

New and updated Plugins

\n\n\n\n

Brian Coords, developer advocate at Woo, announced “WooCommerce 10.0 is here!

\n\n\n\n
    \n
  • Major frontend accessibility improvements
  • \n\n\n\n
  • Shareable checkout URLs
  • \n\n\n\n
  • Coupon enhancements
  • \n\n\n\n
  • A better product importer.
  • \n\n\n\n
  • And over 400 commits from 67 contributors!’
  • \n
\n\n\n\n

The release notes have all the details including screenshots and links.

\n\n\n\n
\n\n\n\n

Remote Data Blocks is a WordPress plugin by Automattic’s WordPressVIP team. It lets you fetch and display remote data in Gutenberg using customizable blocks. It’s ideal for flat, consistent data sources like APIs or Google Sheets. You map data to layouts, and the plugin handles fetching, caching, and rendering inside the block editor. Documentation is available on this site. You can test it with Playground.

\n\n\n\n

Stephen Edde blogged about it: Bring Your Content to Life With Remote Data Blocks. He also invites you to the webinar Launched: The Newest Product Solutions from WordPress VIP on August 21, 2025, at 18:00 UTC

\n\n\n\n
\n\n\n\n

Nathan Wrigley and Dan Maby have just rolled out the beta version of their awesome new Podcaster Plus plugin! It makes building podcast websites easy without any coding. It pulls your RSS feed automatically to show episodes and offers customizable blocks and a responsive player which works well on any device. It’s designed for podcasters and agencies managing multiple shows, focusing on quick setup and flexible layouts within WordPress. Or so the promise. You can sign up for the beta version with your email address.

\n\n\n\n
\n\n\n\n

Lesley Sim and Ahmed Fouad are the awesome duo behind Newsletter Glue, and guess what? They just sold it! \"🎉\" Now, they’ve rolled out their new project, EventKoi, which is a super cool events calendar plugin for WordPress fans. Want to know more about what they’re up to? Check out the sneak peek video and hop on that waitlist!

\n\n\n\n
\n\n\n\n

Marco Almeida from Naked Cat Plugins just published a free plugin called Language Attribute for Container Blocks. Once you install it, you can easily add an lang HTML attribute to your Group, Columns, and Cover blocks on your site. It helps accessibility tools and browsers figure out the language of different sections on your page. The readme file mentions that it came to pass as a community collaboration out of WordCamp Europe.

\n\n\n\n
\n\n\n\n

Paul Halfpenny announced PersonalizeWP Pro Is Now Completely Free: Choose Your Perfect Personalization Solution. “WordPress personalization just became accessible to everyone.” It also meant as a contribution to help WordPress stay competitive with other platforms that offer personalization out of the box. Halfpenny explains about the two version, PersonalizeWP Lite and Pro, for different use cases. The plugin helps site owners to provide different content depending on user behavior or make it visible under different conditions, depending on user types. while keeping within privacy guidelines.

\n\n\n\n

Classic vs. Blocks vs. Page Builders

\n\n\n\n

Sagar Sharma, from Lubus, just dropped a post titled Embracing What We Preach: Our Journey Migrating to WordPress Block Editor & Full Site Editing. It’s all about their journey moving the agency’s website from the old-school WordPress setup to the new block editor and block theme. Why? To get more flexibility, speed things up, cut down on plugins, and keep the design consistent. You’ll get the scoop on their rebranding, how they rolled out the FSE migration step by step, and how they’re fine-tuning things along the way. Sharma also shares how they empowered non-tech folks to handle content and how this switch seriously leveled up user experience and SEO scores.

\n\n\n\n
\n\n\n\n

While Lubus works with middle and large clients, Patricia Brun Torre tells a similar story on why she loves the WP block editor, site editor, and the Gutenberg project. She raves about how the WordPress block editor and site editor are super fast, easy to use, work without extra plugins and make teaching clients a breeze. She loves how everything is intuitive, copy-paste just works, and you can design full sites—including headers, footers, and layouts—without touching code.

\n\n\n\n
\n\n\n\n

At WordCamp Krakow, a panel discussion was held around Page Builders. Magdalena Pjoreck, former freelancer and now developer at a hosting company; Raitis Sevelis, owner of WPBakery; and Robert Windisch, owner of Syde, an enterprise agency, all come to the discussion from different angles. The conversation was recorded and is available on WordPressTV.

\n\n\n\n

Theme Development for Full Site Editing and Blocks

\n\n\n\n

Bud Kraus published a new tutorial on how to apply custom styling for WordPress block themes using a child theme. He explains that child themes remain essential for customizing WordPress block themes, allowing safe style overrides and customizations without altering parent theme files. Kraus details how, despite the flexibility of block themes and theme.json, child themes are still crucial for advanced customization in WordPress. He demonstrates creating a child theme for the Twenty Twenty-Five theme, using its own style.css and functions.php to safely override styles, define custom block styles, and set up style variations, ensuring control without modifying parent theme files.

\n\n\n
\n

 “Keeping up with Gutenberg—Index 2025” 
A chronological list of the WordPress Make Blog posts from various teams involved in Gutenberg development: Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. The previous years are also available: 2020 | 2021 | 2022 | 2023 | 2024

\n
\n\n\n

Building Blocks and Tools for the Block editor.

\n\n\n\n

Ryan Welcher has been working on his Block Developer Cookbook for a few years. Hundreds of developers worked through examples at workshops at WordCamp Asia and WordCamp Europe. Now he brought it all to YouTube in one big livestream session. The Block Developer Cookbook: Live Stream Edition. You can use it to learn how to build custom WordPress blocks or freshen up on certain aspects of it. The video is full of real-world block development techniques , including custom blocks, variations, transforms, interactivity, and more.

\n\n\n\n\n\n
\n\n\n\n

In this week’s stream, Jonathan Bossenger covered Feature API updates & building a block with Claude Code. He wrote, “This week, I reviewed the latest update to the Feature API and tested it against my course creation flow. After that, I wanted to see how easy it would be to build a block based on existing HTML/CSS and JS, but only using Claude Code in PhpStorm. The results were pretty impressive, but not perfect, so I decided to try coding it myself. However, I soon discovered that it had been so long since I built a block that I’d forgotten how to do it.”

\n\n\n
\n
\n\n
\n
\n\n
\n

Need a plugin .zip from Gutenberg’s master branch?
Gutenberg Times provides daily builds for testing and review.

\n\n\n\n

Now also available via WordPress Playground. There is no need for a test site locally or on a server. Have you been using it? Email me with your experience

\n\n\n\n

\"GitHub

\n
\n\n\n

Questions? Suggestions? Ideas?
Don’t hesitate to send them via email or
send me a message on WordPress Slack or Twitter @bph.

\n\n\n\n
\n\n\n\n

For questions to be answered on the Gutenberg Changelog,
send them to changelog@gutenbergtimes.com

\n\n\n\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 19 Jul 2025 00:16:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:18;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:76:\"Felix Arntz: How Open Source Contributions Elevate Your Professional Journey\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:30:\"https://felix-arntz.me/?p=2173\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:88:\"https://felix-arntz.me/blog/open-source-contributions-elevate-your-professional-journey/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:9299:\"

In my last post, I shared 10 lessons from 10 years of contributing to WordPress Core. If you’re new to open source, I encourage you to review those insights. But today, I want to talk about something different: Even though you hopefully contribute out of passion and goodwill, giving back to an open source project can also give something significant back to you. Some of it my previous post may hint at, but in this post I’d like to look at it more broadly.

\n\n\n\n

As I mentioned in my previous post, contributing to WordPress Core has changed my career, and indirectly even many other aspects of my life, for the better in so many ways. And while my experience is rooted in WordPress Core, the benefits that OSS contributions can have for your professional development largely apply to almost any sizable open source project.

\n\n\n\n\n\n\n\n

One of the most profound advantages of contributing to a popular open source project is the unparalleled experience of working on software with a massive and diverse user base. Imagine a project used by hundreds of thousands, or in WordPress’s case, millions of sites globally. This kind of scale exposes you to a multitude of edge cases, performance considerations, and accessibility challenges that are rarely encountered in smaller, internal projects. Outside of open source projects, this hands-on experience is often only accessible through roles at large tech corporations or highly successful startups with popular products, with complex eligibility requirements. That barrier of entry is wildly different for open source: Established project contributors are typically more welcoming to contributors, as support is almost always needed and appreciated.

\n\n\n\n

An open source project doesn’t demand five years of professional experience, a specific degree, or a list of impressive previous projects. You can simply show up and demonstrate your capabilities through initiative, passion, dedication, understanding, and persistence. As long as you are interested in supporting the project and maintain a curious and kind mindset, you can learn and grow simply by contributing to the project itself.

\n\n\n\n

The experience you gain from working on something large that impacts countless people globally, while distinct from a corporate product, can be immensely beneficial for your general professional development. This experience can even be a significant asset in landing a job at one of those larger tech companies, if that’s something you’re interested in.

\n\n\n\n

The more involved you become in an open source project, especially one relevant to the broader tech industry, the more you start to build a reputation. This reputation could be for being a reliable, efficient, nuanced, or benevolent contributor, or a combination of these traits. You’ll find people who appreciate your work, potentially even individuals you’ve long looked up to. While there might occasionally be disagreements or condescending voices, the positive feedback and support will almost certainly be the majority.

\n\n\n\n

As you consistently show up to contribute and do the work, it can also significantly help you build relationships with peers from whom you can learn, and perhaps even forge lasting friendships. For contractors, it can lead to more interesting gigs, and in some cases, companies might even reach out to you directly rather than you having to pursue them. And, with time, dedication, and a bit of luck, even those bigger job opportunities may find you.

\n\n\n\n

My Personal Journey: From Imposter Syndrome to Google

\n\n\n\n

Let me share a bit of my own story and how contributing to WordPress has shaped my career. When I first started contributing to WordPress Core in 2015, I battled a strong case of imposter syndrome. It took several months for me to truly grasp that I, too, could make substantial contributions, just like others, all while continuing to learn – after all, everyone has their unique strengths. Eventually, I found myself leading the development of new features that would land directly in WordPress Core, something I couldn’t have imagined when I started. A special shoutout goes to Jeremy Felt, who welcomed me into the WordPress Multisite team and empowered me as a contributor. I also want to thank Sven Wagener for trusting me early on with exciting open source freelancing work.

\n\n\n\n

The contributions I made, coupled with actively participating in community events like WordCamps, meeting new people, and nurturing my curiosity are a huge part of where I am today. Sometimes, I want to say that being a little bold also helped – but then again, as I’m writing this I wonder whether I only thought of some of my actions as bold because I was feeling like an imposter, and maybe those were just little moments where I overcame it.

\n\n\n\n

During my time as a freelancer, I saw a significant increase in interesting contracts as my reputation as a contributor grew and I became more recognized within the WordPress community. I ended up contracting for some of the largest companies in the ecosystem, and often, these collaborations simply arose from casual conversations at events.

\n\n\n\n

I always loved being a freelancer. Something that only some friends know about me is that I used to say, “I’m never going to quit freelancing, except maybe for Google.” To be clear, I mostly said that to emphasize how much I enjoyed freelancing. While I always thought working for Google would be incredible, I never in my wildest dreams believed it would become a realistic option for me.

\n\n\n\n

However, what transpired in 2018 completely blew me away. At that time, I had read a blog post by a Googler named Alberto Medina, announcing that Google was hiring for a new team focused on the WordPress ecosystem. Even though I had already achieved certain things as a contributor that made me proud, I found myself battling imposter syndrome again. “Sure, things are going well, but Google? Don’t these companies hire the most talented engineers in the world? That’s not me.” This was early 2018. Fast forward to WordCamp Europe 2018, I was exploring the Google booth when my friend Weston Ruter introduced me to Alberto Medina – yes, the same Alberto who worked at Google and wrote the post I mentioned earlier. One of the first things that emerged in our conversation was that Alberto already knew who I was. OMG! I kept my cool externally, but I was completely taken aback! Over the course of the WordCamp, we continued our conversations about the opportunity at Google. Eventually, I applied for a role on the new team. With Alberto’s continued support throughout the application process and a lot of preparation on my part, I went through the interviews and ultimately received a job offer. And to make the deal even sweeter, I learned I would be working alongside a few other WordPress folks whom I already considered friends. This is how I started working for Google, and I’m still here today.

\n\n\n\n

Please forgive the detour, but this is my personal prime example of how contributing to open source, specifically WordPress, significantly propelled my professional career. Selfishly, I also love to reminisce about this exciting time – it completely turned my life upside down, in so many positive ways.

\n\n\n\n

Explore Open Source – It Might Be a Game Changer for Your Career

\n\n\n\n

Contributing to open source can be a huge lever for your career. If you haven’t yet worked on the massively impactful projects that many job openings seem to demand, or if you’re fresh out of college, I strongly encourage you to explore open source. Heck, take some time to look into it even if you’re in college. For me, that was a time where I had less financial responsibility, which allowed me to put in several hours contributing to WordPress Core each week, alongside the freelancing I was doing at the same time.

\n\n\n\n

But at the end of the day, don’t contribute to OSS solely for professional gain, but do it for your passion. Find an open source project that genuinely interests you and that you can get excited about. That could be any relatively popular open source project – or it could be WordPress. I would certainly love to welcome you as a WordPress Core contributor.

\n

The post How Open Source Contributions Elevate Your Professional Journey appeared first on felix-arntz.me.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 17 Jul 2025 16:27:03 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"Felix\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:19;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"Open Channels FM: Democratizing Publishing Beyond Business Content\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=100681\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"https://openchannels.fm/democratizing-publishing-beyond-business-content/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:183:\"The future of online publishing is all about personal expression, not just business stuff. WordPress needs to embrace short videos and everyday moments to stay relevant and inclusive.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 17 Jul 2025 11:13:03 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:20;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"Akismet: Version 5.5 of the Akismet WordPress plugin is available now\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:28:\"http://akismet.com/?p=284578\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:37:\"https://akismet.com/blog/akismet-5-5/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1133:\"

Version 5.5 of the Akismet plugin for WordPress is now available. This update contains the following improvements:

\n\n\n
  • We’ve enabled webhooks for all users. Webhooks allow the Akismet servers to do extra processing for certain comments without making your site wait for a response. If a comment is determined to be spam, the Akismet server will notify your site once the extra processing is done. This should reduce spam without affecting performance, and that’s a Good Thing.
  • \n\n
  • We’ve ensured that the CSS for the Akismet widget is only included when the widget is included. And that’s a Good Thing.
  • \n\n
  • We’ve improved the color contrast on certain buttons for better accessibility. And that’s a Good Thing.
\n\n\n

To upgrade, visit the Updates page of your WordPress dashboard and follow the instructions. If you need to download the plugin zip file directly, links to all versions are available in the WordPress plugins directory.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 16 Jul 2025 18:25:06 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:17:\"Christopher Finke\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:21;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"WPTavern: #177 – Charlotte Bax on Reducing Your Website’s Carbon Footprint\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=197651\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:89:\"https://wptavern.com/podcast/177-charlotte-bax-on-reducing-your-websites-carbon-footprint\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:46635:\"
Transcript
\n

[00:00:19] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress, the people, the events, the plugins, the blocks, the themes, and in this case, reducing your WordPress website’s carbon footprint.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast. And you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.

\n\n\n\n

So on the podcast today we have Charlotte Bax. Charlotte is a sustainable web designer with a background in both environmentally conscious living and technology. Beginning her journey as a sustainable lifestyle blogger, she soon merged her passion for sustainability with her skills in web design, rebranding herself as Digihobbit.

\n\n\n\n

For several years now, Charlotte has been focused on building websites that prioritize low carbon footprints, and she is also the founder of the climate tech startup ENNOR Toolbox for Online Sustainability, which helps measure the CO2 emissions of websites and web applications.

\n\n\n\n

When we made this recording, Charlotte had just finished presenting at WordCamp Europe on the topic of how to make your website more sustainable, and her presentation is the topic of the podcast today.

\n\n\n\n

We talk about digital environmental impact, the hidden pollution our websites create through their energy use and infrastructure. Charlotte explains some striking facts about the carbon footprint of ICT, noting that if the internet were a country, it would be the seventh largest polluter globally.

\n\n\n\n

She shares a wide array of practical steps for web professionals to reduce the environmental impact of their sites. You’ll hear about the benefits of green web hosting, using modern image formats like WebP and AVIF, optimizing architecture and UX to minimize unnecessary page loads, the crucial role of caching, as well as some new innovations like grid aware websites, which adapt themselves based on the renewable energy mix available to users in real time.

\n\n\n\n

The conversation also touches on Charlotte’s involvement in WordPress sustainability initiatives. The importance of multiplying small improvements across high traffic sites, and the moral imperative web creators have to help shape a greener internet.

\n\n\n\n

If you’ve ever wondered how digital choices impact the planet, and what steps you can take to help, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

\n\n\n\n

And so. Without further delay, I bring you Charlotte Bax.

\n\n\n\n

I am joined on the podcast by Charlotte Bax. Hello Charlotte.

\n\n\n\n

[00:03:29] Charlotte Bax: Hello Nathan, and thank you for having me.

\n\n\n\n

[00:03:31] Nathan Wrigley: You are very welcome. Charlotte and I are having a conversation at WordCamp Europe. We’re in Basel, and we’re going to be talking today about the environmental impact of your website, whether that be WordPress, or any other platform that you might be using.

\n\n\n\n

In order to establish your credential, Charlotte, would you just for maybe a minute or something like that, just tell us a little bit about you, your relationship with technology. And I guess if you lean into your sustainability credentials, what you’ve been doing in the past, that would be helpful too.

\n\n\n\n

[00:03:59] Charlotte Bax: Yes. Well, I started out as a sustainable lifestyle blogger, really, like in 2000 and something. And I didn’t really feel like I was at the right place in my work at that time. I was doing a job at the service center for ICT. It was really overwhelming. So I decided to make my hobby into my work and I chose the web design side. And after only a year, I think I stumbled upon a sustainable website challenge by some Dutch guys, that I got to know them. And that was the missing link between my sustainable lifestyle and my work as a web designer.

\n\n\n\n

So I really went down that digital sustainability rabbit hole, and I sort of rebranded myself as a sustainable web designer in the name of Digihobbit. Well, so I’m building sustainable websites for quite some years now.

\n\n\n\n

Two years ago, I really wanted a tool to make estimating the CO2 emissions of websites easier because, for example, Website Carbon by Whole Grain Digital, I love that tool. And there’s also some other tools I really loved, but you have to copy paste every single page of a website in there.

\n\n\n\n

So I wanted a tool to do that in bulk. So I asked a friend to build me a tool to do that really easily, and he did. And that sort of escalated into a full blown startup. So since August, 2024, I also have a climate tech startup called ENNOR Toolbox for Online Sustainability, in which we build software to measure the CO2 emissions of websites and web applications.

\n\n\n\n

[00:05:37] Nathan Wrigley: Wow, that’s fascinating. You’re the first person that I’ve spoken to who’s actually finished their talk at WordCamp Europe. Your presentation was, I’m sure you know, how to make your website more sustainable. So very quickly, how did it go?

\n\n\n\n

[00:05:49] Charlotte Bax: It was amazing. Like the room was so full. It was such an amazing experience, and it went so good. And yeah, I’m just still riding that high.

\n\n\n\n

[00:05:59] Nathan Wrigley: Do you feel, I mean, obviously there’s tons of topics on here and there’s many, many tracks, and the fact that you filled yours up, do you sense that sustainability is a thing which web developers are latching onto, that they find important, that they’re curious about?

\n\n\n\n

[00:06:14] Charlotte Bax: Yes, I think so. Especially the curiosity part. I’ve done presentations in the Netherlands also for some government entities, and there were some senior developers. They talked to me afterwards and they said like, I have never thought of this before. Just, yeah, like spreading that awareness, planting those seeds. I think really nice to do that.

\n\n\n\n

[00:06:34] Nathan Wrigley: Yeah, I think that it’s a topic which many people will not even have given any thought to. Because, we were talking just before we hit record about how clean and sterile our technology feels in our lives. You know, I’m staring at a laptop, and I’ve got a microphone in my hand, I’ve got a phone over to my side here, and none of it emits anything by itself.

\n\n\n\n

You know, it’s clean. If I hold it in my hand, I’m not going to breathe any toxic fumes in from it. And yet all of the technology that we’re surrounded by in some way, shape, or form will have been produced, there’ll be some pollution that’s associated with that. But also particularly around ICT, the mere fact that it’s switched on and is consuming electricity, well, that electricity has to be generated in some way.

\n\n\n\n

And you put a really interesting statistic on the blurb for your presentation, which says that 8 to 10% of all energy, and I think I’m saying that right, yeah, all energy that’s produced globally, 8 to 10% is related to ICT. I would never have suspected it because it’s completely divorced. I switch my computer on, there’s no pollution in my house because of that. It’s happening elsewhere.

\n\n\n\n

So how does ICT rate? If it’s 8 to 10%, where does it sort of slot into all the other industries?

\n\n\n\n

[00:07:57] Charlotte Bax: Well, it’s more than aviation. There’s this book, Sustainable Web Design by Tom Greenwood. There is this graph somewhere, quite in the beginning, that puts the internet, if it were a country, it would be the seventh biggest polluter in the world. So that’s really, really big. And you don’t see it because all the pollution happens elsewhere. Like, you don’t have a data center, or an energy plant, in your backyard. It’s all hidden away. Or there’s those big boxes next to the highway, you know? You don’t see it. And in Dutch we call it far from your bed show. And that is a really nice comparison I think.

\n\n\n\n

[00:08:36] Nathan Wrigley: Yeah, I think if I was to ask you to stand behind my car and I rev the engine, so I use the car, you are going to be really reluctant to stand behind my car because you know that out of the back of the car is coming a lot of terrible gases that you don’t wish to consume. And yet my computer, in a remote destination that I am not standing anywhere near, is doing basically the same thing.

\n\n\n\n

[00:09:05] Charlotte Bax: More or less.

\n\n\n\n

[00:09:06] Nathan Wrigley: Yeah, I mean it may not be the same gases or what have you, but there is a pollution component to that.

\n\n\n\n

[00:09:10] Charlotte Bax: Yes, there’s a pollution component indeed.

\n\n\n\n

[00:09:11] Nathan Wrigley: But every bit of technology that I own, I sense none of that. And so that’s a really interesting disconnect. And I guess that promotes us, well, not promotes us, I guess it allows us to ignore the problem because we do not see it.

\n\n\n\n

[00:09:28] Charlotte Bax: Yes. That is exactly the right wording for that. It allows us to ignore it because we do not see it. It’s not just like there’s this energy usage, for example, data centers and routers and your own devices, of course. But there’s also so much more. There’s this embodied carbon from producing all that hardware. And that’s not just the machines that we see around us, your laptop, my laptop, your phone. It’s also like the data centres, the servers, the wifi box, the routers, satellites, et cetera, cables.

\n\n\n\n

Producing electronics is really dirty. It takes up a lot of resources and energy. Data centers, they use up a lot of water for cooling. And at the end of the day, most of those things, they become e-waste, because electronics don’t get recycled that much yet.

\n\n\n\n

[00:10:21] Nathan Wrigley: Yeah, I guess given the nature of this podcast, we probably won’t focus on all of the different bits and pieces that are involved in all of that. You know, we can’t talk so much about how a phone ought to be recycled. Well, we could, but we are going to talk about websites.

\n\n\n\n

And again, the disconnect is so profound. I go to a website, any website, there is no connection in my head between browsing that website and the consequences to the environment. Essentially, in my head, and probably the heads of many people listening to this podcast, it’s entirely benign. I’m doing no harm whatsoever. Of course, on some level, intellectually, if I apply thought to it, of course I know that I am, but it’s way easier for me to ignore that.

\n\n\n\n

So then that leads to the question, what on earth can people like you, like me, like the people listening to this podcast who create websites, what on earth can they do? What are the little things that they can pick out that they can change about their website in order to make them less polluting, more sustainable, whichever term you’d like to use?

\n\n\n\n

[00:11:26] Charlotte Bax: Oh boy. I don’t think we have enough time in this podcast to touch on all of that. But in my talk I sort of, yeah, I had a list of certain areas where you could make sustainable choices, and they also arrange really widely. For example, your web hosting, choose a green web host. It makes such a difference. Renewable energy. Not all web hosts are hosting on green energy. And there is this really nice organisation, the Green Web Foundation, they have this database of web hosting providers that are using renewable energy.

\n\n\n\n

And they have a tool, you can put in your website and see if your website runs on renewables. And if you are a web hosting provider, you can send evidence to the Green Web Foundation that your data centers are running on renewables, so they can add you to that database, which is also very good for your reputation as a web host.

\n\n\n\n

[00:12:23] Nathan Wrigley: Right, okay. So as you say the things that you mentioned in your talk, I’ll throw them back at you just so that we’re absolutely certain what we’re talking about.

\n\n\n\n

So every website obviously, well, most of them need some kind of hosting environment. And what you’re saying is go out and be proactive. Look for this badge, this Green Web Foundation badge. They’ve done the hard work, if you like. You can be certain that if there’s a Green Web Foundation sticker on there, there has been an exchange, to and fro, between the host and the Green Web Foundation, and they classify that as sustainable. What does that mean? Does it mean that, like, is it 80% of their energy consumption is renewable or a hundred percent or do you know?

\n\n\n\n

[00:12:59] Charlotte Bax: I don’t know that exactly. You should ask Chris Adams. But they’re also, yeah, I learned that also from that book from Tom Greenwood. You can make a difference between certain ways of using renewable energy, such as like actually producing your own renewable energy by having solar panels on the data center, for example.

\n\n\n\n

You can invest in green energy. You can buy it from a green energy supplier.

\n\n\n\n

And there’s a fourth thing, and it is that you buy certificates from other countries and that, yeah, I think that’s greenwashing.

\n\n\n\n

But as far as I know, they don’t show that yet in the Green Web Foundation database. I have contacted them like months, maybe more than a year ago about it, whether they would do that. And they were open to the idea. I think someone was even working on it. But it just takes a long time because they are not a commercial party of course. They also just run on subsidies and they have just so many resources.

\n\n\n\n

[00:14:02] Nathan Wrigley: Okay, so there’s the first piece. There’s one thing that you can do. That’s a really easy concrete thing to do. We all need the hosting. So when you go, go and look and have some trust in the Green Web Foundation’s badge, if you like. You trust that they’ve done the due diligence and that that is in some way superior, in the way that that energy is captured or what have you.

\n\n\n\n

[00:14:24] Charlotte Bax: Yes, yes. But I have a little disclaimer. Not all green web hosting providers are in the database yet, and not all of them show the badge. But it’s really easy just to check your own website through the tool on their home page.

\n\n\n\n

[00:14:39] Nathan Wrigley: Okay. Thank you. Okay, what was next? What did you have next on your list?

\n\n\n\n

[00:14:43] Charlotte Bax: Well, you can make sustainable choices in your architecture and your UX design. Just make it very easy for your visitors to find things on your website, so they don’t have to go here and there to search for stuff and produce lots of unnecessary page views. Because that’s all data traffic and that’s all CO2 emissions. That’s a thing you can do. Just think really good about that website architecture.

\n\n\n\n

[00:15:12] Nathan Wrigley: So the idea there is that every time we produce a page, the server at some point is having to do some work. That work requires electricity. If we can cut 10 visits down to 5 visits, there’s an, obviously a 50% reduction in the amount of pages that are loaded. And again, it’s so hard in my head to encapsulate what that is doing because it just, I’m just thinking, okay, i’ve saved time. But obviously, you know, now that we’re having this chat, I’m now beginning to think more, okay, not only am I saving time, I’m actually saving electricity and therefore it’s more sustainable.

\n\n\n\n

So that has a knock on consequence of course, in that nobody wants to go to 10 pages if you could go to five pages anyway. So figuring all that stuff out from the start is a good idea. Okay, lovely. Next one.

\n\n\n\n

[00:15:58] Charlotte Bax: Next one is design and content creation. Yeah, what your website looks like. There’s lots of sustainable choices you can make in the assets that are shown on the front end, such as images, video, audio, the fonts that you use, the CSS styling, et cetera. We could do a whole podcast on that alone. So things I talked about previously this morning is scaling your images. Be very picky in your images.

\n\n\n\n

Also sometimes I see websites that have so many pictures on it. I think people are afraid to be boring or something. But use the images that are actually valuable to your content, to tell a story instead of just putting a thousand pictures on there just because. Because images, they tell more than a thousand words, but also images are very, very heavy compared to just plain text.

\n\n\n\n

[00:16:52] Nathan Wrigley: So I guess it’s, couple of things there. The first thing is use images when necessary. So that there’s not unnecessary images being loaded. But also I’m imagining that we’re probably trying to lean into newer image formats. So not only reducing the scale of the image so that it’s the correct dimensions and it’s not, you know, this giant image which is being shrunk in the browser, needlessly downloading a four megabyte image that really is like 150 kilobytes.

\n\n\n\n

[00:17:19] Charlotte Bax: I saw this like on a government website that I tested and there was this, a really small icon, it was like 36 pixels wide or something. And there was an image like 6,000 by 8,000 pixels loaded for that. And I was, my heart bleeded.

\n\n\n\n

[00:17:36] Nathan Wrigley: Yeah, this should have been about 3K and it was probably more in the sort of four or five megabyte territory.

\n\n\n\n

[00:17:41] Charlotte Bax: Yes, yes. I don’t know the exact numbers, but terrible.

\n\n\n\n

[00:17:44] Nathan Wrigley: But image formats are changing as well, aren’t they? You know, in the past we were, everybody familiar with PNGs and JPEGs and things like that. And now we’ve got things like WebP and AVIF images as well. My understanding is that they are significantly reduced in their scale, with no measurable difference in the way that you can see them. They look basically identical.

\n\n\n\n

[00:18:06] Charlotte Bax: Yes, yes. That’s really nice. WebP and AVIF, they are web friendly formats for your images and they are really lightweight. They also, they support transparent background and animation, so they are also really good alternatives to PNG and GIF, not only to JPEG.

\n\n\n\n

And what I also like is that you can change the image quality when exporting to that format. Just like with JPEG, you can say, I want quality of 90, or image quality of 80% or even less. And when you’re choosing something between 80 and 90%, usually you don’t really see the difference. You can just play around with that on your computer. But it’s significantly reduces the file size.

\n\n\n\n

[00:18:53] Nathan Wrigley: Yeah, I was playing around with something the other day and I was converting a JPEG image to a WebP image. And I went to a service, which enabled me to do that, and at 80% I genuinely couldn’t see any, I was really staring hard and I could not see a single pixel that was different.

\n\n\n\n

I think, you know, maybe if it was some incredibly detailed picture of some medical procedure or something like that, maybe. But in most cases it’s not necessary. But also if it’s going to represent a tiny icon on the website, upload an image which is a tiny icon in size. Don’t upload the big one and the browser handle that.

\n\n\n\n

[00:19:28] Charlotte Bax: Yeah, but also for icons, you can much better choose like a vector image, like SVG, because vector images when done right, I have seen it done wrong, which is terrible, but when done right, they are really lightweight and they are scalable without limits and without any loss of quality. And that’s really suitable for logos, for icons, for certain illustration styles. You can also use SVG really well.

\n\n\n\n

[00:19:56] Nathan Wrigley: Yeah, so that’s a really good point. So for what you might call like a bitmap image, you’ve got AVIF and WebP, they seem to be the ones that are out in the front at the moment. And then for things like logos, then some kind of vector based image, like an SVG where essentially it’s data, you know, it’s bezier curves and things like that. So it can really scale up, and it will still look just as good if it’s gigantic.

\n\n\n\n

So definitely listener, if you’re hearing this, go and explore those, it’s well worth it. I would say that WordPress, by default won’t allow you to upload an SVG image. You might need to get a plugin to help you out with that.

\n\n\n\n

[00:20:28] Charlotte Bax: My favorite for that is Safe SVG. I just put it on there as soon as I start a new website and then just put all the SVGs on there.

\n\n\n\n

[00:20:36] Nathan Wrigley: Yeah, it’s curious. It’s because it’s not truly an image. It’s kind of like a file format and so it potentially could contain some code which might be harmful to your website. But those plugins strip out all of that. That’s my understanding anyway.

\n\n\n\n

[00:20:47] Charlotte Bax: Yes. So indeed, if you use plugins like that, you are at less risk of malfunctioning code, not malfunction, maleficent code.

\n\n\n\n

[00:20:56] Nathan Wrigley: Yeah, like malware. You know, security problems, things like that.

\n\n\n\n

[00:20:59] Charlotte Bax: Yeah, but if you make your SVGs yourself, well, then you have control over that. You know there’s no malware in that, unless you put it there yourself.

\n\n\n\n

[00:21:06] Nathan Wrigley: I don’t know if you have an answer to this, but obviously video is really important on the web. You know, certain types of things that people are doing online, maybe not quite so much websites but, you know, things like Instagram and TikTok and things like that, it’s really, really popular.

\n\n\n\n

Do you know if there’s any similar thing happening like WebP and AVIF with movie formats? Is there anybody trying to compress those in a way that WebP and AVIF have been?

\n\n\n\n

[00:21:29] Charlotte Bax: I haven’t dived into that that much, but I know there is WebM I think. But also, MPEG and or MP4. They are really good compression techniques and as lightweight as you can make it.

\n\n\n\n

[00:21:45] Nathan Wrigley: I guess the same rules apply for images as for video though. You don’t needlessly put video on the website. And certainly it’s possible to deploy video in a way that it’s not as environmentally profound. You know, for example, auto play switched off.

\n\n\n\n

[00:22:00] Charlotte Bax: I really hate those websites with this automatically playing background video. I must admit, when I started out as a web designer, some of my first clients, they really wanted that, so I did it. But I had an opinion on that and I explained, I didn’t know anything about the sustainability part yet by then, but I explained that it is a big file that gets loaded automatically. It really slows down your website also, so it’s a bad user experience. So I recommend that they didn’t do it, but they really wanted to.

\n\n\n\n

But I really hate how some websites shove like an enormous amount of megabytes down your throat as a visitor by those autoplay background videos.

\n\n\n\n

[00:22:43] Nathan Wrigley: Yeah, and also I think there’s a move to make it so that, and I don’t know if the block editor, the video block automatically does this, I could be wrong about that. The idea of having an image placeholder instead of the video itself, because the mere putting the iframe onto the page, there’s some communication between, let’s say YouTube, if you’re embedding something from YouTube. Whereas really, you don’t need to engage YouTube until somebody’s actually clicked the play button. So having some placeholder there, click the button, click the image, and then the video begins to load. I guess there’s something there. That’s a good idea.

\n\n\n\n

[00:23:18] Charlotte Bax: I have a trick for that. When you embed a YouTube video or a Vimeo, they do the preload is none thing really good, which is nice, so you don’t shove that many megabytes through someone’s throat. But what YouTube does, and Vimeo also but less, is they put a lot of tracking scripts in that embed.

\n\n\n\n

So what I like to do is, so something I did for one of my latest websites for the Rotterdam Metal Band, Ann My Dice, they have this show reel of their newest songs on top of their homepage. And I put an image thumbnail there. And when you click that, it opens a modal. So the video and all those tracking scripts, they are loaded only when you click on a thumbnail to open the modal. That’s a nice little trick to work around that.

\n\n\n\n

[00:24:04] Nathan Wrigley: Yeah, so video and images, that’s a really easy win. There’s loads of things that you can do.

\n\n\n\n

There’s lots of services out there, both on your computer, but online where you can compress the images. And obviously we’ve talked about the different formats and not necessarily loading video.

\n\n\n\n

Okay, should we move on? Is there anything else on there?

\n\n\n\n

[00:24:21] Charlotte Bax: Yeah, yeah. There is caching of course, which can make a huge difference. WordPress is based on a database. So in theory, every time someone visits a page on your website, the server has to calculate the webpage and then send it over to your visitor.

\n\n\n\n

But if you use, for example, server side caching, you can do that once and send the generated page to all your visitors. So that saves a lot of computing energy server side. But there’s also browser caching, which means that certain assets that you can reuse, for example, your CSS style sheets, and your fonts, you can retain in a browser. So they don’t need to get loaded on every page your visitor goes to.

\n\n\n\n

[00:25:06] Nathan Wrigley: There’s so many different ways of tackling this, isn’t there? Whether that’s through your web host or a collection of plugins that you might use. But yeah, caching, the idea being that it’s stored somewhere, kind of ready to go. It’s already been created. Somebody just comes along and if you like, just picks it up.

\n\n\n\n

Whereas in the typical WordPress way, there’s this whole crunching of data. There’s all this PHP being rendered in the background. And the database is being called to construct the page. And really, if the page isn’t being changed from minute to minute, there’s no need for all of that. You can just have a cached version. And increasingly, you know, you don’t even have to make that cached version travel across the globe, because you can put it at the edge in different countries and so on and so forth. So there’s a whole load of interesting stuff. But caching enforce that where possible.

\n\n\n\n

[00:25:54] Charlotte Bax: If you have a, I always recommend people to look at their target audience for choosing their hosting. For example, I live in the Netherlands and my target audience is mostly Dutch companies and Dutch governments. So it makes sense for me to host my website in the Netherlands. But if your target audience is all over the world, I really recommend using a CDN to distribute all your cached web pages. It makes it more sustainable and it also makes it a lot quicker.

\n\n\n\n

[00:26:23] Nathan Wrigley: It’s curious that one, isn’t it? Because in many ways, using a CDN, you are creating a bigger footprint because there’s more, you know, instead of it being cached in one place, it’s now cached in multiple places. So there’s more caching happening. But the people who are absorbing that cache, using that cache, there’s a net benefit there because they have to travel less distance.

\n\n\n\n

So for example, if there’s a cache data center in Sydney, and some Australian user is using that, it doesn’t have to come all the way, for example, to London and then back again. So even though you are storing multiple versions of the cache around the world, the traffic that’s going backwards and forwards from that cache often will make up for that.

\n\n\n\n

[00:27:01] Charlotte Bax: Yeah, it’s really dependent on the situation and the size of your target audience because obviously if you only have like one visitor from Australia every month, it’s not worth it. So it’s also sort of, look at your own situation and make choices based on that.

\n\n\n\n

I always think about, like sustainability is not something like what you can and cannot do, but I like to view it as more as inspiring people and giving them the tools to actually make conscious choices instead of just doing what the masses do and what is easy.

\n\n\n\n

[00:27:37] Nathan Wrigley: Yeah, there’s no destination, is there, probably? It’s more of a journey. You’re kind of trying to do little bits, and chisel away the bits that you can. Okay, so caching is a whole other topic. You can no doubt go down that rabbit hole and spend the rest of your life there.

\n\n\n\n

[00:27:49] Charlotte Bax: Yes, yes. If you want to know more about caching, I think Ramon Fincken from Halvar knows more about that.

\n\n\n\n

[00:27:56] Nathan Wrigley: Okay, thank you. Okay, so there’s another one we’ve ticked off. Anything else on your list?

\n\n\n\n

[00:28:00] Charlotte Bax: Yes. There’s visitor management, because obviously the page weight is not the only factor of a website, but also you have to multiply that with all the page visits to get your total CO2 emissions over time.

\n\n\n\n

So if you have a lot of visitors, and that’s not only the human visitors, but also the bots of course, then that’s a lot of CO2 emissions. And that can be up to hundreds of times more than you actually realise.

\n\n\n\n

Joost de Valk had a really great talk about that a few years ago, 2022 at WordCamp Netherlands. I wasn’t there myself, but I have seen a YouTube video and I really, really recommend people checking that out because he can explain that really well.

\n\n\n\n

[00:28:44] Nathan Wrigley: So this is to do with the amount of traffic that you are getting.

\n\n\n\n

[00:28:47] Charlotte Bax: Yes, yes. The amount of traffic. So page weight times traffic is CO2 emissions basically.

\n\n\n\n

[00:28:53] Nathan Wrigley: Okay, interesting.

\n\n\n\n

[00:28:54] Charlotte Bax: Yes.

\n\n\n\n

[00:28:54] Nathan Wrigley: Okay. Next one.

\n\n\n\n

[00:28:56] Charlotte Bax: That’s the last one in my list. And that is sort of the cherry on top. And that is to make your website grid aware. I don’t know if you’re familiar with Fershad Irani. No. He is one of the pioneers in website sustainability. He does a lot of projects for the Green Web Foundation. And currently he is working on grid aware websites toolkits to make your website responsive to the energy mix on the local energy grid from your visitor. And he does that with Cloudflare CDN workers. I hope I explained that right because that’s an area that I’m less familiar with.

\n\n\n\n

But what it does, for example, if your website visitor is in an area where the energy grid is mostly running on fossil fuel energy, then it shows a more minimal experience of your website to the visitor. And when they are in an area where the grid is a big percentage renewable energy, then it shows a more rich experience of your website.

\n\n\n\n

[00:30:01] Nathan Wrigley: Gosh, that’s fascinating. So it’s like progressive enhancement, but for sustainability.

\n\n\n\n

[00:30:07] Charlotte Bax: Yes.

\n\n\n\n

[00:30:07] Nathan Wrigley: So I might see an entirely different page with, let’s say, I don’t know, a greater number of images on it or something like that, given the awareness that the website has of where I’m viewing it, or where it is being hosted? I wasn’t sure about that bit. Is it more about the visitor or more about the location of the hosting of that?

\n\n\n\n

[00:30:26] Charlotte Bax: It’s about the visitor in this case, yeah. And I think he does that in a really, really smart way. There’s also sort of a version of the toolkit that does it browser based. I don’t know enough about that to explain that right I think.

\n\n\n\n

[00:30:39] Nathan Wrigley: Genuinely, that’s fascinating. That really feels like he’s pushing the boundaries. What I’ll do is I’ll try to find a link to something.

\n\n\n\n

[00:30:46] Charlotte Bax: There is a page on the website of the Green Web Foundation, and if you contact Fershad through LinkedIn or Mastodon, or I’m happy to link you with him. He is currently working on it and he is looking for people and websites to experiment with it. I think it’s a really nice experiment to see how much effect this can have. I’m really curious.

\n\n\n\n

[00:31:07] Nathan Wrigley: It kind feels like a technology which is going to be very difficult to pull off, but very profound if it is pulled off. You can imagine high traffic websites, and I’m thinking of news organisations, for example, the BBC or something like that, that just have millions of views every few minutes, I would’ve thought, and could really benefit from something like that. You know, showing a different website. I’d never heard of that. That’s fascinating.

\n\n\n\n

[00:31:29] Charlotte Bax: Yeah, it’s a really new project. He’s still developing the toolkit right now. I think it’s a really amazing project and that could be really impactful for, yeah, those really high traffic websites. I have seen, earlier this week I had a video call with Fershad, and he showed me a demo version on, oh, I don’t know the name, I can’t recall it, but it was like an online magazine.

\n\n\n\n

There was this menu, there was just this dropdown in the menu bar with four items, live low, medium, and high. So you could choose the settings yourself, or you just could go with the live thing, based on your own energy grid where you were localised.

\n\n\n\n

[00:32:08] Nathan Wrigley: So like a demo, and you can pick how you would like to see it in four different versions. Okay.

\n\n\n\n

[00:32:12] Charlotte Bax: Yeah, yeah. The live version is like how it is shown based on your energy grid. But as a visitor, you can also choose your own way if you want to see the more rich version or the more minimised version. And the information on the website, it just stays the same of course, but it shows less images and that kind of stuff. But if you view it in the, like the minimalist version, you can still opt to see images if you want to by just clicking on it. It’s a really smart way he does that.

\n\n\n\n

[00:32:43] Nathan Wrigley: Yeah, it’s fascinating. So in my email client, for example, I have it set up, the default is do not show me images, and I just click a button, display images, and they all come in. I can’t pick which images, they all just come. But there’s a decision there, you know, it is like I’ve decided not to see all the images off the bat. Click a button and in they come.

\n\n\n\n

That is really interesting. So I presume the text would stay the same, because that’s the core of what the website is probably offering, text. But, you know, do you want a heavy experience in terms of data? Well, there it is. There’s all the images and the videos. Yeah, okay, I will follow that up. That sounds fascinating.

\n\n\n\n

So we’re at we WordCamp EU. This is all about WordPress. How do you feel WordPress, by default, so ignoring any plugins, if I just chuck a default version of WordPress, a vanilla version of WordPress out there, how does it do in terms of sustainability compared to other things in the environment?

\n\n\n\n

[00:33:33] Charlotte Bax: Oh, that’s really funny because I haven’t really done any research into that. What I have done is I made, it’s some time ago, but I checked some of the WordPress vanilla themes against some of my favorite themes, just making a staging website with only lorem ipsum paragraph, and just the vanilla theme, and then checking how much page weight it is, and how much CO2 emissions on first load. But that’s ages ago. And I, maybe you just sort of started a new project in my head.

\n\n\n\n

[00:34:05] Nathan Wrigley: Ah, nice.

\n\n\n\n

[00:34:07] Charlotte Bax: Measure the CO2 emissions of WordPress themes and vanilla WordPress. I think that’s a good idea.

\n\n\n\n

[00:34:12] Nathan Wrigley: Yeah, because it feels to me, especially if you’re using a WordPress default theme, they do seem to be quite light, you know, there’s a lot of text and very, I mean, some of the themes that we’ve had in the past, I can’t remember, I’m just trying to conjure it up, it might have been 2021 or something like that. It was basically all text. And I just wondered if WordPress itself could be proud of its sustainability over time, or whether it was something that, you know, compared to other CMSs but, you know, if you don’t have that data, that’s okay.

\n\n\n\n

[00:34:40] Charlotte Bax: I don’t have the data, but I do think that maybe WordPress could be more of a front runner in terms of sustainability. For example, I learned that Drupal already has like a sustainability policy and they’re doing certain things on that. But unfortunately, our own sustainability team got canceled.

\n\n\n\n

But yesterday, during Contributor Day, there were like 10 people or something, they really wanted to do a sustainability table, so we just impromptu did that. The table cards, they were there. So we just did it and we formed a new team. Still unofficial. I have no idea how it happened, but apparently I’m a team rep now. There are some of the old sustainability team members that also want to continue their work. So we sort of started an impromptu petition to get the sustainability team their official status back, so it can become a core value of WordPress.

\n\n\n\n

And I think that it would really help WordPress to be a front runner, especially in Europe where sustainability is, as far as I know, sustainability is a bigger thing in Europe than in America or Asia. That’s how I feel it. And I think if we don’t jump on that sustainability bandwagon, we could really lose market share.

\n\n\n\n

[00:35:58] Nathan Wrigley: Yeah, I think you’re right. I’m curious about the sustainability team. So you are talking about Contrib Day yesterday?

\n\n\n\n

[00:36:03] Charlotte Bax: Yes.

\n\n\n\n

[00:36:05] Nathan Wrigley: An impromptu sustainability team sort of set itself up and just carried on as if nothing had happened. So that’s interesting.

\n\n\n\n

[00:36:11] Charlotte Bax: Yes. Not really as if nothing had happened. Most of the time we spent on like strategising how to get this back on the road again, and how to continue because the previous team, they did really great work and I just latched on a few weeks before they got closed down and I think it’s really sad.

\n\n\n\n

[00:36:29] Nathan Wrigley: Well, you’ve given us loads of really interesting tips. Hopefully the listeners to this have gathered some useful information. Realised that it’s a profoundly important and moral topic to be involved in.

\n\n\n\n

Should anybody wish to contact you and get into a conversation about how they could become involved, or just some tips or what have you, where do we find you, Charlotte?

\n\n\n\n

[00:36:48] Charlotte Bax: You can find me on LinkedIn. You can find Digihobbit on LinkedIn, and you can also find Digihobbit on Mastodon. I’m not really on like the regular social media channels, but that’s a whole different topic to discuss. I also have a personal LinkedIn profile, but if you want to link with me personally, just add a message to it so I sort of know the context.

\n\n\n\n

[00:37:08] Nathan Wrigley: Okay. So dear listener, I will put everything that we’ve talked about today, all of the Green Web Foundation’s, and other varied links into the show notes. Head to wptavern.com and search for the episode with Charlotte Bax.

\n\n\n\n

So Charlotte Bax, thank you very much for chatting to me today. I really appreciate it.

\n\n\n\n

[00:37:22] Charlotte Bax: Thank you very much, Nathan, for having me.

\n\n\n\n

[00:37:24] Nathan Wrigley: You’re most welcome.

\n
\n\n\n\n

On the podcast today we have Charlotte Bax.

\n\n\n\n

Charlotte is a sustainable web designer with a background in both environmentally conscious living and technology. Beginning her journey as a sustainable lifestyle blogger, she soon merged her passion for sustainability with her skills in web design, rebranding herself as Digihobbit. For several years now, Charlotte has been focused on building websites that prioritise low carbon footprints, and she is also the founder of the climate tech startup ENNOR Toolbox for Online Sustainability, which helps measure the CO2 emissions of websites and web applications.

\n\n\n\n

When we made this recording, Charlotte had just finished presenting at WordCamp Europe on the topic of how to make your website more sustainable, and her presentation is the topic of the podcast today.

\n\n\n\n

We talk about digital environmental impact, the hidden pollution our websites create through their energy use and infrastructure. Charlotte explains some striking facts about the carbon footprint of ICT, noting that if the internet were a country, it would be the seventh largest polluter globally.

\n\n\n\n

She shares a wide array of practical steps for web professionals to reduce the environmental impact of their sites. You’ll hear about the benefits of green web hosting, using modern image formats like WebP and AVIF, optimising architecture and UX to minimise unnecessary page loads, the crucial role of caching, as well as some new innovations like grid-aware websites which adapt themselves based on the renewable energy mix available to users in real time.

\n\n\n\n

The conversation also touches on Charlotte’s involvement in WordPress sustainability initiatives, the importance of multiplying small improvements across high-traffic sites, and the moral imperative web creators have to help shape a greener internet.

\n\n\n\n

If you’ve ever wondered how digital choices impact the planet, and what steps you can take today to help, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

Charlotte’s Digihobbit website

\n\n\n\n

Charlotte on LinkedIn

\n\n\n\n

Charlotte on Mastodon

\n\n\n\n

 Website Carbon calculator by Whole Grain Digital

\n\n\n\n

 ENNOR Toolbox for Online Sustainability

\n\n\n\n

 Sustainable Web Design by Tom Greenwood

\n\n\n\n

 Green Web Foundation

\n\n\n\n

 Safe SVG plugin

\n\n\n\n

Charlotte’s website for the band Ann My Dice

\n\n\n\n

Ramon Fincken on LinkedIn

\n\n\n\n

Improve the environment. Start with your website! Joost de Valk’s talk at WordCamp Nederland 2022

\n\n\n\n

Fershad Irani’s website

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 16 Jul 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:22;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"Open Channels FM: Fresh Series, New Names, and the Power of Repurposed Content\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=102900\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:83:\"https://openchannels.fm/fresh-series-new-names-and-the-power-of-repurposed-content/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:181:\"BobWP shares insights on the podcast’s rebrand, focusing on evolving content, elevating community voices, and repurposing past episodes, plus series changes aimed at storytelling.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 16 Jul 2025 10:19:02 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:23;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"Open Channels FM: Open Source Projects Can Benefit From Cross-pollination\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=100598\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"https://openchannels.fm/open-source-projects-can-benefit-from-cross-pollination/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:354:\"In open source communities, it’s easy to focus on just one platform. Whether you’re deep into WordPress, Drupal, or another CMS, it’s tempting to stay within your comfort zone. But stepping outside your usual ecosystem can offer valuable insights not just about other tools but about your own. One theme that emerged in a conversation […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 16 Jul 2025 09:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:24;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"HeroPress: The Journey Of Pratik Bhatt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://heropress.com/?post_type=heropress-essays&p=8064\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:128:\"https://heropress.com/essays/the-journey-of-pratik-bhatt/#utm_source=rss&utm_medium=rss&utm_campaign=the-journey-of-pratik-bhatt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:10481:\"\"Pull

Hello! I’m Pratik Bhatt — a WordPress developer, community contributor, a small-town dreamer, an open-heart surgery survivor, a gamer and someone who found meaning in life through code, community, and courage. My journey is one of resilience, gratitude and purpose — and I hope it inspires even one person who reads it.

\n\n\n\n

Early Life in Bhavnagar: Born for Battles

\n\n\n\n

I was born in a humble neighborhood of Bhavnagar, a small but vibrant coastal town in Gujarat. Life gave me my first challenge almost immediately. At the age of 3.5 years, I underwent open-heart surgery — a life-saving procedure that left its mark not only on my chest but on my soul. Even before I could understand what pain meant I had survived it.

\n\n\n\n
\n

Just two years later, I lost my father. I was only five.

\n
\n\n\n\n

That loss could have broken me, but instead it introduced me to a hero — my mother. She worked tirelessly, day and night, playing both roles with fierce love and unimaginable strength. Her sacrifices were quiet, constant and invisible to the world, but they were the scaffolding on which my entire future was built. I owe everything I am today to her.

\n\n\n\n

Teenage Years: Games, Chess, and Growth

\n\n\n\n

In my teens, I gravitated toward strategy games and problem-solving — perhaps a subconscious expression of navigating a complex life so early. I participated in Open Bhavnagar chess tournaments, developing a love for logic and structured thinking. That same mindset later translated perfectly into coding.

\n\n\n\n

Computers were rare, internet slower than a whisper and resources limited. Yet, I spent hours in cyber cafés, exploring the world behind the screen. Each click was a step toward a new identity — not as a survivor but as a builder.

\n\n\n\n

College at Pacific University, Udaipur: Discovery and Identity

\n\n\n\n

I went on to pursue my Bachelor of Engineering at Pacific University in Udaipur, where I found more than just an education — I found my voice and versatility.

\n\n\n\n

I earned a strong reputation in quiz contests, debates, and elocution competitions. I enjoyed the thrill of standing on stage, thinking fast and expressing clearly — a skill that would later shape my professional communication and leadership.

\n\n\n\n

I was also a dedicated gamer and proudly won a Need for Speed: Most Wanted tournament during college. That rush of speed and control mirrored how I wanted to approach life — with confidence and calculated risk. I also ranked 3rd in the college chess championship, keeping my connection to strategic thinking alive.

\n\n\n\n

WordPress: My Lifeline, My Living

\n\n\n\n

As I entered the professional world, I was introduced to WordPress — and everything changed.

\n\n\n\n

I still remember the moment I activated my first theme. The way an idea turned into a visual reality — with structure, responsiveness and purpose — was nothing sort of magic to me. That moment, I knew: this is what I want to do for the rest of my life.

\n\n\n\n

Over the time, WordPress became my bread and butter — quite literally. It provided me with the skills, opportunities and financial independence to build a life I never thought possible.

\n\n\n\n
\n

But more than money, WordPress showed me the path to life.

\n
\n\n\n\n

It empowered me to give businesses a voice, bring local shops online, connect NGOs to donors and allow countless creators to share their passion. Every site I built wasn’t just a project; it was a platform for someone’s dream.

\n\n\n\n

12+ Years of Development & Dedication

\n\n\n\n

Today, with over 12 years of experience in the WordPress ecosystem, I have worked with global clients, built plugins and custom themes, contributed to enterprise sites and created solutions that matter. I have helped startups launch, helped NGOs amplify their causes, and empowered entrepreneurs from Tier-2 and Tier-3 cities to reach the world.

\n\n\n\n

Whether I’m architecting a complex WooCommerce store, writing a custom plugin, improving performance, or debugging client pain points, my goal is simple: to build things that are fast, reliable, and human-focused.

\n\n\n\n

The Power of Community: Meetups, WordCamps & More

\n\n\n\n

While code gave me a career, it was the WordPress community that gave me connection, energy, and growth. I love attending local meetups and WordCamps, where ideas flow freely, support is abundant, and friendships are formed over coffee and code.

\n\n\n\n

In 2023, I was honored to be part of the organizing team for WordCamp Ahmedabad, one of the biggest community events in India.

\n\n\n\n
\n

Seeing hundreds of attendees come together to learn and celebrate open-source was a proud and emotional moment for me — especially knowing how far I had come from Bhavnagar to that stage.

\n
\n\n\n\n

I also had the privilege of being a volunteer at WordCamp Asia, the flagship WordPress event for the entire continent. It was humbling to support an event of such magnitude, and heartening to see how diverse and inclusive the global WordPress family truly is. Being part of such efforts is not just service — it’s gratitude in action.

\n\n\n\n

For me, meetups and WordCamps aren’t just events — they’re where I recharge my soul, share my knowledge, and feel deeply connected to a global family.

\n\n\n\n

Hobbies Beyond the Keyboard

\n\n\n\n

When I’m not writing code, I embrace life through small joys and soulful moments.

\n\n\n\n

I’m a nature lover and plant enthusiast. Gardening gives me peace, patience, and a quiet form of discipline.

\n\n\n\n

I’m a cricket fan — I love playing as much as watching, especially when Team India is in action. The game reflects my life: unpredictable, strategic, and driven by passion.

\n\n\n\n

I enjoy driving — especially night drives when the roads are empty and music flows freely.

\n\n\n\n

I’m also someone who loves being around animals. I find their presence grounding and healing. At home, I have a pet rabbit, who is more than a companion — he’s a part of my family and a source of daily joy.

\n\n\n\n

Speaking of joy, music is my biggest hobby. Whether I’m coding or relaxing, there’s always a soundtrack playing in the background. Songs help me express what words can’t.

\n\n\n\n

Giving Back & Building Others

\n\n\n\n

Having come from a small town with limited resources, I’m deeply passionate about helping others rise. I actively mentor young developers, especially those from underprivileged or non-metro backgrounds. I want them to know that success is possible — regardless of where you start.

\n\n\n\n

My dream is to one day launch a tech training program in Bhavnagar — to teach local youth about WordPress, freelancing and digital skills.

\n\n\n\n
\n

If WordPress could change my life, it can certainly change theirs.

\n
\n\n\n\n

I also regularly contribute to forums, help organize events, speak at community meetups and make time to guide freshers through their first steps in this amazing ecosystem.

\n\n\n\n

What Life Has Taught Me

\n\n\n\n

Here are some core beliefs that guide me every day:

\n\n\n\n

Heartbeats are precious — I don’t take a single one for granted.

\n\n\n\n

Struggle isn’t a setback — it’s a setup for something greater.

\n\n\n\n

Community is strength — whether in a family, a WordCamp or a GitHub issue thread.

\n\n\n\n

You can come from anywhere — what matters is where you’re going and how many you uplift on the way.

\n\n\n\n

Technology can heal, empower and connect — if used with empathy.

\n\n\n\n

Looking Forward: The Journey Ahead

\n\n\n\n

I’m excited about the future of WordPress — especially AI, full-site editing, headless architecture and performance innovations. I aim to stay at the forefront of these changes, continuing to build solutions that empower users and delight clients.

\n\n\n\n

I also plan to write a book one day — part memoir, part manual — about how open source, open hearts and open minds can transform even the most limited beginnings.

\n\n\n\n

In Closing

\n\n\n\n

If I could go back and speak to the younger version of myself — lying on a hospital bed at 3.5 years old or watching my mother’s struggle silently or feeling like the world was too big for a boy from Bhavnagar — I’d say:

\n\n\n\n

“You’re going to make it. You’re going to build not just websites but a life that helps others build theirs too.”

\n\n\n\n

I don’t just develop WordPress sites.

\n\n\n\n

I develop opportunities, relationships and meaningful digital footprints.

\n\n\n\n

And every time I hit “Activate Theme” or push a release, I think of the journey it took to get here — and the journey still ahead.

\n\n\n\n

If you’re someone who believes in purpose, people and potential — let’s connect. Let’s build. Let’s inspire

\n

The post The Journey Of Pratik Bhatt appeared first on HeroPress.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 16 Jul 2025 03:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Pratik Bhatt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:25;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"WordPress.org blog: WordPress 6.8.2 Maintenance Release\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18903\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"https://wordpress.org/news/2025/07/wordpress-6-8-2-maintenance-release/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:10703:\"

WordPress 6.8.2 is now available!

\n\n\n\n

This minor release includes fixes for 20 Core tickets and 15 Block Editor issues. For a full list of bug fixes, please refer to the release candidate announcement.

\n\n\n\n

WordPress 6.8.2 is a short-cycle maintenance release. More maintenance releases may be made available throughout 2025.

\n\n\n\n

If you have sites that support automatic background updates, the update process will begin automatically.

\n\n\n\n

You can download WordPress 6.8.2 from WordPress.org, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. For more information on this release, please visit the HelpHub version page.

\n\n\n\n

Dropping security updates for WordPress versions 4.1 through 4.6

\n\n\n\n

This is not directly related to the 6.8.2 maintenance release, but branches 4.1 to 4.6 had their final release today. These branches won’t receive any security update anymore.

\n\n\n\n

Thank you to these WordPress contributors

\n\n\n\n

WordPress 6.8.2 was led by Jb Audras, Estela Rueda and Zunaid Amin.

\n\n\n\n

Special thanks to @davidbaumwald, @sergeybiryukov, @mamaduka, @wildworks and @jorbin for their help on specific release tasks.

\n\n\n\n

WordPress 6.8.2 would not have been possible without the contributions of the following 96 people. Their asynchronous coordination to deliver maintenance fixes into a stable release is a testament to the power and capability of the WordPress community.

\n\n\n\n

Aaron Jorbin, Adam Silverstein, Adam Zieliński, Aki Hamano, Alex Stine, Anatol Broder, Andrea Fercia, Andrew Nacin, Ankit Kumar Shah, annezazu, Azhar Deraiya, Benjamin Gosset, Brandon Hubbard, Brandon Kraft, brhodes, Carolina Nymark, Chris Zarate, Courtney Robertson, Daniel Richards, Darshit Rajyaguru, David Baumwald, Dennis Snell, Dhruvang21, Dilip Bheda, Dion Hulse, divinenephron, dustintechsmith, Eric Andrew Lewis, Eshaan Dabasiya, Estela Rueda, Evan Herman, Fabian Kägy, Faisal Ahammad, Felix Arntz, Gary Pendergast, Gaurang Dabhi, George Mamadashvili, gernberg, Greg Ziółkowski, Harsh Gajipara, HelgaTheViking, Himanshu Pathak, Jb Audras, Jeffrey Paul, Jenny Dupuy, Jessica Lyschik, Jigar Panchal, Joe Dolson, Joe McGill, John Blackbourn, John Parris, Jon Surrell, Jonathan Desrosiers, Jonny Harris, Kausar Alam, Kishan Jasani, Marin Atanasov, Matt Mullenweg, Matthias Pfefferle, megane9988, Moses Cursor Ssebunya, Mukesh Panchal, mwillman1991, Nazar Hotsa, nidhidhandhukiya, Nikunj Hatkar, oferlaor, Olga Gleckler, Pascal Birchler, paulstanos, Peter Wilson, puggan, Ravi Gadhiya, Riad Benguella, Rolly Bueno, room34, Sainath Poojary, Sajjad Hossain Sagor, sam_a, Sandeep Dahiya, Sergey Biryukov, Shane Muirhead, siliconforks, SirLouen, Stephen Bernhardt, Sukhendu Sekhar Guria, Tammie Lister, Tobias Bäthge, Travis Smith, Ugyen Dorji, uxl, Weston Ruter, whaze, Yash B, Yogesh Bhutkar, and Zunaid Amin

\n\n\n\n

How to contribute

\n\n\n\n

To get involved in WordPress core development, head over to Trac, pick a ticket, and join the conversation on Slack, in the #core and #6-8-release-leads channels. Need help? Check out the Core Contributor Handbook.

\n\n\n\n

Thanks to @estelaris and @zunaid321 for proofreading.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 15 Jul 2025 15:41:50 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:9:\"Jb Audras\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:26;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:76:\"Open Channels FM: Rethinking Global Remote Work Opportunities in Open Source\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=100594\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:83:\"https://openchannels.fm/rethinking-global-remote-work-opportunities-in-open-source/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:383:\"Remote work has been a defining feature of tech culture for years, but it has become especially prominent in open source communities. As more professionals build careers within globally distributed teams, the conversation around cross-border employment has grown more relevant than ever. One insight that stands out is the potential for developers and digital professionals […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 15 Jul 2025 09:48:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:27;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:91:\"WordPress.org blog: Celebrating Kim Parsell: 2025 WordCamp US Scholarship Applications Open\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18911\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:87:\"https://wordpress.org/news/2025/07/kim-parsell-2025-wcus-scholarship-applications-open/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:4936:\"

The WordPress Foundation is pleased to announce the return of the Kim Parsell Memorial Scholarship for WordCamp US 2025. Applications are being accepted until July 25, 2025.

\n\n\n\n
\"\"
\n\n\n\n
\n
\n
\n\n\n\n
\n

Remembering Kim Parsell

\n\n\n\n
\n
\n
\"\"
\n
\n\n\n\n
\n

Kim Parsell was a dedicated contributor and a beloved member of the WordPress community. Her passion for open source and her welcoming spirit inspired many, both online and in person. Each year at WordCamp US, the WordPress Foundation celebrates Kim’s legacy by supporting contributors who share her commitment and enthusiasm. The Kim Parsell Memorial Scholarship aims to make it easier for deserving community members to attend WordCamp US, reflecting Kim’s belief in making WordPress accessible and inclusive for all.

\n
\n
\n\n\n\n

If you’re unfamiliar with Kim’s story or her invaluable role in the community, we encourage you to read these heartfelt tributes collected from friends and colleagues.

\n
\n\n\n\n
\n
\n
\n\n\n\n

Scholarship Eligibility

\n\n\n\n

This year, a single scholarship will be awarded. To qualify, applicants must:

\n\n\n\n
    \n
  • Identify as a woman
  • \n\n\n\n
  • Be actively involved as a contributor to WordPress
  • \n\n\n\n
  • Have never attended WordCamp US before
  • \n\n\n\n
  • Demonstrate a need for financial support to attend the event
  • \n
\n\n\n\n

If you meet these qualifications, we invite you to apply before the July 25 deadline. All applicants will be notified of the decision by August 7, 2025.

\n\n\n\n

For additional information, visit the Kim Parsell Memorial Scholarship page hosted by the WordPress Foundation.

\n\n\n\n
\n
\n\n\n\n

Ready to Apply?

\n\n\n\n
\n\n\n\n\n\n\n\n
\n
\n\n\n\n
\"\"
\n\n\n\n

Join the Celebration

\n\n\n\n
    \n
  • Tickets for WordCamp US 2025 are now available—secure yours soon!
  • \n\n\n\n
  • Volunteer applications are open until July 11, 2025
  • \n\n\n\n
  • Interested in supporting the event? Explore our sponsorship opportunities
  • \n
\n\n\n\n

Help us spread the word about this opportunity and make WordCamp US 2025 even more special.

\n\n\n\n

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 14 Jul 2025 18:57:47 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Brett McSherry\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:28;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:99:\"Open Channels FM: What Investors Really Want: Funding Insights for Digital and Open Source Founders\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=100588\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:105:\"https://openchannels.fm/what-investors-really-want-funding-insights-for-digital-and-open-source-founders/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:234:\"In the evolving digital commerce landscape, successful funding requires strong founder-investor relationships, clear problem-solving focus, and ethical considerations, emphasizing collaborative growth and effective product strategies.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Mon, 14 Jul 2025 09:38:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:29;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:68:\"Gravatar: What is Federated Identity Management and How Does it Work\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=3371\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:67:\"https://blog.gravatar.com/2025/07/11/federated-identity-management/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:15494:\"

You know that moment when you breeze into a new app by clicking “Sign in with Google”? That’s not magic. It’s federated identity management (FIM).

\n\n\n\n

It lets you hop between apps and services using just one login, no password juggling required.

\n\n\n\n

You’ve likely got usernames and passwords scattered across what feels like half the internet. It’s a mess for users, and an even bigger migraine for developers trying to build secure login systems from scratch.

\n\n\n\n

FIM solves this core problem of digital identity management by creating trusted links between different platforms. So instead of managing dozens of accounts, you just maintain one primary identity that does the heavy lifting across multiple services.

\n\n\n\n

In this article, we’ll unpack:

\n\n\n\n
    \n
  • How identity providers and service providers team up to make login friction-free.
  • \n\n\n\n
  • The protocols behind the magic – SAML, OAuth, OpenID Connect.
  • \n\n\n\n
  • Why FIM systems are more secure and more user-friendly than the old-school alternatives.
  • \n\n\n\n
  • How tools like Gravatar bring federated identity to the everyday user, not just the enterprise crowd.
  • \n
\n\n\n\n

So, let’s dig into how federated identity is rewriting the rules of online access.

\n\n\n\n

What is federated identity management?

\n\n\n\n

Federated identity management lets users log into multiple services with just one set of credentials – even if those services belong to entirely different organizations or live in separate security realms.

\n\n\n\n

In short: One login, many doors.

\n\n\n\n

The clever part? While users enjoy the simplicity of a single sign-in, each organization still keeps tight control over its own systems and data. Everyone wins – convenience for users, boundaries for businesses.

\n\n\n\n

At its heart, FIM solves a very modern dilemma: Too many passwords, not enough patience. By reducing login clutter whilst safeguarding security, it keeps systems streamlined and users sane.

\n\n\n\n

For example:

\n\n\n\n
    \n
  • A university student signs into their campus portal with their regular uni login.
  • \n\n\n\n
  • From there, they can hop into a Google Workspace to submit assignments, dive into academic databases, or access publishing platforms with no additional accounts.
  • \n\n\n\n
  • Their university identity just… goes with them.
  • \n
\n\n\n\n

This all works thanks to behind-the-scenes handshake deals called federated identity agreements. The university acts as the identity provider, backing the student’s identity. Services like Google Workspace act as service providers, trusting that endorsement and granting access accordingly.

\n\n\n\n

It all works through carefully coordinated authentication protocols working behind the scenes. These standards let systems talk to each other securely. Only the essentials get shared, passwords never stray from their home base, and users keep control of their data.

\n\n\n\n

Now, let’s dig into how those protocols do their thing.

\n\n\n\n

Key protocols and standards: SAML, OAuth, and OpenID Connect

\n\n\n\n

Federated identity might sound like something dreamt up in a sci-fi novel, but it’s really just about helping different services trust each other enough to vouch for you.

\n\n\n\n

That way, you’re not logging in twelve times before breakfast. Instead, a handful of protocols quietly do the work to keep things smooth, secure, and repeat-login free.

\n\n\n\n

Here are the big three making that happen:

\n\n\n\n

SAML (Security Assertion Markup Language)

\n\n\n\n

SAML is basically the corporate go-to when it comes to easy sign-ins. It’s what lets employees hop between internal tools (HR systems, dashboards, intranets etc.) without juggling five passwords and a daily identity crisis.

\n\n\n\n

Here’s the gist:

\n\n\n\n
    \n
  • You try to access a service (say, the company HR portal).
  • \n\n\n\n
  • You’re bounced over to the company’s identity provider.
  • \n\n\n\n
  • You log in with your usual details.
  • \n\n\n\n
  • The service gets a SAML assertion – a signed digital nod that says, “Yep, this person checks out”.
  • \n
\n\n\n\n

It’s especially handy in enterprise and B2B settings, where you need airtight security and rich user data. If you’re into technical deep dives, the OASIS SAML Technical Committee has the specs.

\n\n\n\n

OAuth 2.0

\n\n\n\n

OAuth isn’t really about proving who you are; it’s about saying what an app can do on your behalf.

\n\n\n\n

That moment when you “Sign in with Google”, OAuth is just passing a temporary access token that tells the app, “This person’s cool with you looking at their calendar (but hands off their emails).” It’s identity permission management, not identity confirmation.

\n\n\n\n

It’s like handing out a key that only opens one room in the house, and only for a short time. You can learn more about it on the OAuth 2.0 site.

\n\n\n\n

OpenID Connect

\n\n\n\n

OpenID Connect builds on OAuth 2.0 by enabling proper ID verification. It’s what makes one-click logins like “Sign in with Apple” or “Sign in with Google” actually log you in, not just hand out permissions.

\n\n\n\n

It works by adding an identity token that securely shares who you are with the service. So now, it’s not just “this person said yes,” it’s “this person is Alice, email verified, and here’s the proof.”

\n\n\n\n

Want to build with it? The OpenID Connect specs are the go-to guide for implementation.

\n\n\n\n
\"Federated
\n\n\n\n

Identity providers vs. service providers: Roles in the FIM ecosystem

\n\n\n\n

In federated identity management (FIM), two main players run the show: The identity provider (IdP) and the service provider (SP). Knowing what each does is key to understanding how FIM works.

\n\n\n\n

Identity providers handle the login. They verify who you are; whether that’s Google, Microsoft, your university, or your company’s system. The IdP stores your credentials and confirms your identity to other services.

\n\n\n\n

Service providers are the apps and platforms you want to access using that login, like Zoom, Dropbox, or academic databases.

\n\n\n\n

Here’s what happens when you click “Sign in with Google”:

\n\n\n\n
    \n
  • Google (the IdP) checks your credentials.
  • \n\n\n\n
  • It tells the service provider you’re authenticated.
  • \n\n\n\n
  • The service provider grants access without ever seeing your password.
  • \n
\n\n\n\n

This split keeps things secure. Your passwords stay with trusted IdPs, so you’re not juggling new logins for every service. And if a service provider is breached, your credentials are still safe.

\n\n\n\n

For organizations, it simplifies access control. IT teams can grant or revoke access from the IdP side, managing all connected services in one go when people join or leave.

\n\n\n\n

FIM vs. single sign-on: Key differences explained

\n\n\n\n

Single sign-on (SSO) is the big crowd-pleaser: One login, and you’re in. Email, HR tools, task boards, wiki rabbit holes – it’s all yours, no repeated password dance required.

\n\n\n\n

The catch is it all lives within the borders of your organization. Handy, yes. But fenced in.

\n\n\n\n

Federated identity management (FIM) takes things a step further. Same single login magic, but this time the credentials can travel. Across platforms. Across orgs. Across ecosystems. It’s SSO with a passport.

\n\n\n\n

Here’s how that plays out:

\n\n\n\n
    \n
  • With SSO, a university student signs in once and gets access to campus email, class materials, and the meal plan portal.
  • \n\n\n\n
  • With FIM, that same login gets them into external research libraries, academic collaboration tools, and third-party cloud drives, all run by different providers.
  • \n
\n\n\n\n

Both SSO and FIM save you from juggling five logins and twenty browser tabs. Both boost security by keeping authentication centralised. The difference? FIM doesn’t stop at the edge of your organization, it builds trust between systems that aren’t under the same roof.

\n\n\n\n

To make this work, FIM needs a little extra backend choreography. To work smoothly across domains, it relies on protocols like SAML, OAuth, or OpenID Connect (the same ones we unpacked earlier).

\n\n\n\n

SSO inside a single org skips the extra tech since everything’s already playing on the same team.

\n\n\n\n

So: SSO keeps things simple within your four walls. FIM gets you past the gates.

\n\n\n\n

Gravatar’s profiles-as-a-service: A simplified approach to federated identity

\n\n\n\n

Gravatar makes federated identity feel less like an enterprise buzzword and more like something regular people can actually use. It takes the big, often baffling ideas behind FIM and packages them into something simple, familiar, and weirdly elegant.

\n\n\n\n

Let’s start with the magic trick: Update once, sync everywhere.

\n\n\n\n

Change your photo or bio on Gravatar and – ta-da – it updates across every platform that supports it, from WordPress comment sections to your GitHub commits. No faff. No repeat uploads. Just instant consistency, quietly flexing the whole “federated identity” concept in real life.

\n\n\n\n
\"Gravatar
\n\n\n\n

What really makes it click, though, is how Gravatar ties your identity to your email address instead of your name. That lets you switch gears effortlessly:

\n\n\n\n
    \n
  • One email for your work persona.
  • \n\n\n\n
  • Another for hobby projects.
  • \n\n\n\n
  • A third for your incognito forum life.
  • \n
\n\n\n\n

Each one becomes its own lightweight identity provider. And because Gravatar plays nicely with WordPress, GitHub, Slack, OpenAI (and plenty more), your profile travels with you like a loyal companion.

\n\n\n\n

Gravatar skips the corporate complexity in favor of something far more accessible, especially for solo operators and smaller teams.

\n\n\n\n

Best of all? It’s free. And since it’s backed by Automattic, Gravatar takes ideas that used to live inside enterprise IT departments and hands them over to the rest of us.

\n\n\n\n

How developers can leverage Gravatar’s API for cross-domain identity

\n\n\n\n

If you’re a developer staring down the barrel of yet another user profile system, take a breath. Gravatar’s got your back. Our API is basically a plug-and-play shortcut to “profiles-as-a-service,” and integrating it is almost suspiciously easy.

\n\n\n\n

Instead of wrestling with databases, uploads, and custom logic, you can hook into Gravatar’s infrastructure with just a few lines of code. Here’s what you get:

\n\n\n\n
    \n
  • Avatars in all the sizes you’ll need.
  • \n\n\n\n
  • Verified social links.
  • \n\n\n\n
  • User bios and display names.
  • \n\n\n\n
  • Professional details, neatly packaged.
  • \n
\n\n\n\n
\"Avatar
\n\n\n\n

It’s a clean fix for the mess of cross-domain identity. One Gravatar profile works across every platform that supports the API. No more begging users to upload the same photo (again). No more duplicated effort.

\n\n\n\n

And here’s what makes things even better: the docs are actually helpful. Whether you’re calling our REST API or grabbing an SDK, our Gravatar tutorials walk you through everything from basic avatar fetching to pulling in full profiles.

\n\n\n\n

Building your own profile system could eat up weeks or months. With Gravatar, you’ll be done before your coffee goes cold. Plus, you skip the long-term headaches: Maintenance, security patches, user complaints – all gone.

\n\n\n\n

If you’re working on a comment thread, a full-blown app, or anything in between, Gravatar delivers a clean, federated identity solution minus the enterprise bloat.

\n\n\n\n

Create your digital passport today

\n\n\n\n

Gravatar makes federated identity simple and available to everyone, whether you’re a solo creator or a full-stack developer.

\n\n\n\n

One profile, thousands of platforms: WordPress, GitHub, Slack, OpenAI… all covered.

\n\n\n\n

You simply update your profile once, and it syncs everywhere. No more hunting down forgotten logins just to swap out a profile pic or tweak a bio.

\n\n\n\n

For developers, it’s a breeze: Just a few lines of code, and your users get a polished, cross-platform experience without the headache of building your own identity infrastructure.

\n\n\n\n

Gravatar’s been trusted by millions for over a decade, and it’s backed by Automattic, the same folks behind WordPress.com and a whole suite of web heavyweights.

\n\n\n\n

It’s free, privacy-conscious, and puts you firmly in control.

\n\n\n\n

Ready to streamline your online presence? Set up your free Gravatar and make profile chaos a thing of the past.

\n\n\n\n
\"\"
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 11 Jul 2025 18:30:51 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:30;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"Jonathan Desrosiers: The Ghosts of Unactivated Contributors\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"https://jonathandesrosiers.com/?p=5954\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"https://jonathandesrosiers.com/2025/07/the-ghosts-of-unactivated-contributors/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:15053:\"

I’m so glad Tammie was (partially) inspired to reflect on the beginning of her contribution journey after reading my 12 year first contribution anniversary post. I love reading these stories! They really ignite a meditative mindset.

\n\n\n\n

I’m currently up in the White Mountains on a family vacation. I read her post with my morning coffee before my wife and I set out to hike Mount Willard as part of our attempt to tackle the 52 With A View. I know, I should be better about disconnecting, but her reflections had me thinking on the trail.

\n\n\n\n

Everyone is just “figuring it out” (whatever that means)

\n\n\n\n

It’s interesting how the contributors you looked up to when getting started that you assumed were well established were actually still finding their way.

\n\n\n\n

Tammie is a great example of this. I remember looking at comments she made and thinking they were insightful and based on lots of experience. They were and still are, but her experience was not what I had assumed. Her experience at the time was just not yet from contributing to WordPress. She too was wandering around looking for the path that looked just right at the same time as me.

\n\n\n\n

“Figuring it out” also means something different to everyone. And “it” can also change over time. The best path today will likely not be a good fit in 10 years, 5 years, or even 6 months.

\n\n\n\n
\"\"
An increasingly foggy part of the trail on Mount Willard in the White Mountain National Forest.
\n\n\n\n

Activating Observers

\n\n\n\n
\n

“A simple code review or “great job” can be the difference between a one-time contributor and a future maintainer. You never know what someone needs to hear, so be generous with feedback.”

\n
\n\n\n\n

This is something I included in my essay for the Maintaine.rs book. In Tammie’s post, she interestingly had a sentence that struck me as the exact opposite of that statement.

\n\n\n\n
\n

“Our projects are full of the ghosts of contributors we never activated, and that fuels me to see potential in every person who gives up their time.”

\n
\n\n\n\n

What happens when we don’t put our best forward, if it wasn’t enough, or wasn’t what someone needed to hear? Obviously we can’t (and shouldn’t) attract or keep everyone who passes by the communities we care for to join in our efforts. But what about those who were good fits but just weren’t engaged with in the right way?

\n\n\n\n

Maybe documentation was lacking. Maybe expectations were unclear. Or maybe they sensed a maintainer was being territorial towards an area of the project they look after. This excerpt from Producing Open Source Software is relevant here:

\n\n\n\n
\n

Watch out for participants who try to stake out exclusive ownership of certain areas of the project, and who seem to want to do all the work in those areas, to the extent of aggressively taking over work that others start. Such behavior may even seem healthy at first. After all, on the surface it looks like the person is taking on more responsibility, and showing increased activity within a given area. But in the long run, it is destructive. When people sense a “no trespassing” sign, they stay away. This results in reduced review in that area, and greater fragility, because the lone developer becomes a single point of failure. Worse, it fractures the cooperative, egalitarian spirit of the project.

\n\n\n\n

Karl Fogel. Producing Open Source Software. Chapter 8: Preventing Territoriality

\n
\n\n\n\n

Sometimes letting people find their way means not engaging at all. Not every contributor requires an eager welcome or hand-holding. Over-engaging can also be a bad thing. Knowing how to gauge the appropriate level of interaction is a skill that comes with time.

\n\n\n\n

Different Paths For Different People

\n\n\n\n

On our hike, I noticed that the route my wife took was almost never the same as the one I took on the same exact path. I wasn’t intentionally avoiding her footprints, I was just subconsciously choosing what looked best to me.

\n\n\n\n

The same is true in a large community. Instead of rigid groupings with strict criteria that must be met, establish decision-making frameworks that encourage flexibility guided in foundational principles.

\n\n\n\n

I sometimes observe new contributors trying to make sense of activity by forcing everything into specific categories, paths, or types. While it makes a lot of sense as a first step, that can quickly lead to frustration and burn out because it just doesn’t work like that at scale.

\n\n\n\n

Paths also manifest to individuals differently. Sometimes they’re rocky and sometimes not. Sometimes it’s rocky but one giant smooth rock instead of many little ones, and occasionally the surface is just a little slippery. Everyone proceeds at their own pace. If you believe in the mission and have purpose, continue on despite the form the path takes in front of you.

\n\n\n\n

Avoid Congregating At The Top

\n\n\n\n

Two Summers ago while also in New Hampshire, we took the Mount Washington Auto Road to the top of the 6,288 foot highest point in New England. When we reached the summit, the weather was drastically different (30-40MPH gusts, cloudy, and 35°F) than at the base (high 80°s F, calm, clear and sunny).

\n\n\n\n

Besides the weather, something else stood out. There was a line ~100 people long waiting for a chance to take a photo in front of the summit sign.

\n\n\n\n
\"A
The line at the top of Mount Washington.
\n\n\n\n

When everyone crowds toward the “top,” we risk losing the balance and continuity that healthy communities need. It’s not about reaching the summit. Rather, it’s about ensuring the entire path is well-traveled, well-marked, and connected.

\n\n\n\n

Don’t Meet At The Top

\n\n\n\n

We never truly make it to the “top” because it’s not a static thing. This is especially true in technology where everything is constantly changing and evolving. Thus, “getting to the top” is the wrong goal. Instead, our goal should be to connect with as many people as we can at the many points paths intersect along the way. Put differently, we should be building connections between as many paths as possible.

\n\n\n\n
\"A
The view from the peak of Mount Willard at 2,865 feet.
\n\n\n\n

Those Who Predate Us

\n\n\n\n

There was a very old stone wall covered in moss on the hike and I found myself thinking: how many others had used the same path before me? How many people lived on this mountain before the trail existed? There’s no true way to know, especially if everyone is respecting the carry in, carry out mindset. Instead, the signs will be very subtle and require an astute eye.

\n\n\n\n

Footprints, paths worn down from traffic, and in more obvious cases, others actually passing you on your way. While each path is unique, where your path takes you is rarely untraveled. Learn to spot the differences and adjust accordingly.

\n\n\n\n

Many Small Trickles Fill A Basin

\n\n\n\n

When you drink from the fire hose of a large Open Source project like WordPress, it’s easy to lose sight of the cumulative efforts that are required to create such a strong and steady flow. But like basins and streams, it takes many small trickles to fill them.

\n\n\n\n\n\n\n\n

Our work isn’t measured only by the splash of large contributions, but by the steady trickle of small acts that feed a thriving ecosystem. If we want future contributors to drink from the same basin, we need to show them how every small drop matters.

\n\n\n\n

Judging Effectiveness By Noise

\n\n\n\n

As we got close to the end of the hike, we started hearing cars on the highway again. The trail we took was an out and back loop. In this situation, it meant we were in the right place. But when we started the hike, the opposite was true.

\n\n\n\n

When participating in a community, the level of “noise” can be used to gauge whether your work is on target.

\n\n\n\n

When beginning to work on a foundational task that only a few people can advise on, that often means you’re in the right space. But once you’ve shared that idea with the wider community, silence could mean you’ve missed the mark.

\n\n\n\n

Still, silence isn’t always failure. Sometimes it’s just the sound of others listening, considering, and preparing to walk their own part of the trail that you’ve created.

\n\n\n\n

Featured image credit: CC0 licensed photo by soycelycruz from the WordPress Photo Directory.

\n

The post The Ghosts of Unactivated Contributors appeared first on Jonathan Desrosiers.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 11 Jul 2025 01:55:36 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Jonathan Desrosiers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:31;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:112:\"WordPress.org blog: Introducing WordPress Credits: A New Contribution Internship Program for University Students\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18913\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:127:\"https://wordpress.org/news/2025/07/introducing-wordpress-credits-a-new-contribution-internship-program-for-university-students/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:4768:\"

The WordPress Foundation is proud to launch WordPress Credits, a contribution-focused internship program that brings university students into the heart of the WordPress open source project. While WordPress thrives on contributions from a global volunteer community, many students and newcomers face barriers to entry, such as a lack of structured guidance or real-world experience in open source projects. This new program is designed to bridge that gap, nurturing future contributors and ensuring WordPress remains innovative, inclusive, and sustainable for years to come.

\n\n\n\n

The pilot program, developed in partnership with the University of Pisa, was announced on stage at WordCamp Europe 2025 by Matt Mullenweg and Mary Hubbard. Since then, it has attracted interest from students across various fields of study, including humanities, computer science, and communication. Companies in the WordPress ecosystem have also expressed support and interest in contributing to the project. In response to the growing interest from both community members and academic institutions, we are now inviting more universities to join the initiative.

\n\n\n\n

Open to students from all fields of study, the program blends structured onboarding with a personalized contribution project. Activities are adapted to each student’s degree program and familiarity with WordPress, aiming to develop transferable skills, academic-related competencies, and active participation in the WordPress community. Internship durations may vary depending on the university or educational institution. Some may align with academic semesters (typically 3–4 months), while others, like the University of Pisa, allow students to sign up year-round with a requirement to complete a set number of contribution hours (e.g. 150 hours). Flexible arrangements can be discussed to meet the specific requirements of each institution.

\n\n\n\n

Foundational Training includes:

\n\n\n\n
    \n
  • An introduction to open source principles and the WordPress Foundation
  • \n\n\n\n
  • Getting familiar with community tools (Slack, Make blogs, Learn platform, GitHub)
  • \n\n\n\n
  • Setting up a personal WordPress site and publishing content
  • \n
\n\n\n\n

Each student will choose a contribution area and design their own personal project within that area. Examples of possible projects include:

\n\n\n\n
    \n
  • Translating interfaces or documentation
  • \n\n\n\n
  • Creating multilingual subtitles for educational videos
  • \n\n\n\n
  • Contributing code or performing testing
  • \n\n\n\n
  • Supporting product development or design
  • \n\n\n\n
  • Writing or editing content
  • \n\n\n\n
  • Assisting with community event organization
  • \n\n\n\n
  • Developing training materials for Learn WordPress
  • \n\n\n\n
  • Creating open source tools
  • \n\n\n\n
  • And much more…
  • \n
\n\n\n\n

Interns are guided by an experienced mentor specific to their chosen area and supported by a dedicated WordPress Foundation contact person throughout the program. All student contributions, whether code, translations, documentation, or educational materials, will be publicly visible and integrated into official WordPress projects and resources, directly benefiting the wider community.

\n\n\n\n

Interested universities and educational institutions interested in participating can reach out by filling the interest form.

\n\n\n\n

We also invite companies in the WordPress ecosystem to support this initiative by sponsoring mentors who will guide and empower the next generation of contributors, or by providing tools and resources that help students succeed in their contribution journey. 

\n\n\n\n

If your company is interested in getting involved, please visit the Company Guide to learn more and fill out the form to join the program.

\n\n\n\n

By welcoming students, mentors, sponsors, and volunteers into this initiative, we are building a stronger and more connected WordPress community. Each person who takes part, whether they guide a student, share their experiences, provide sponsorship, or simply help spread the word, helps ensure that open source remains vibrant and accessible for all. Together, we are not just supporting individual contributors; we are shaping the future of WordPress and open source itself.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 10 Jul 2025 16:56:52 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Isotta Peira\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:32;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:77:\"Open Channels FM: Generalists, Pricing Advice, and AI’s Role in Development\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=101131\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:94:\"https://openchannels.fm/beyond-hosting-generalists-pricing-advice-and-ais-role-in-development/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:197:\"In this episode of Dev Pulse, hosts chat with Jason Cosper about the challenges and humor in infrastructure, consulting rates, communication, and the evolving role of AI in tech work and workflows.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 10 Jul 2025 10:54:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:33;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:52:\"Tammie Lister: First props and contribution journeys\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://binatethoughts.com/?p=2374\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:65:\"https://binatethoughts.com/first-props-and-contribution-journeys/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:7370:\"

This post was inspired by the awesome posts from Jonathan Desrosiers and Felix Arntz, who celebrated their contribution anniversaries with reflection. It made me muse on how critical those first points, the initial steps in a contribution journey, are. I began reflecting on my own ‘firsts’ and the people who helped me achieve them.

\n\n\n\n
\"\"
\n\n\n\n

Reflecting

\n\n\n\n

I am never one to celebrate anniversaries in general, and as a result, I admit I let my slide, both personally and professionally. That isn’t a pattern I suggest anyone should follow, though; it’s essential to acknowledge where you have been and who helped you get there.

\n\n\n\n

In open source, those who have been involved in the project for a longer time may have always known what they are doing. This is far from the truth. Those who enabled my first props also had their own. Often, though, the first prop isn’t the first entrance into the project. It can be an incredible moment that empowers someone, though, by recognising their work. Often, props can come after a few stages in a contribution journey, and we might forget that. That path was one I followed, taking time to explore adjacent spaces before even finding my way around the space.

\n\n\n\n

My first props

\n\n\n\n

I admit I don’t recall ever looking up my first props before and I found mine this time but it took a bit. It was a nice moment that aligned with my contribution story to see my props split across core and BuddyPress. It also reflected how I took time before props to get settled in.

\n\n\n\n

My first appearance in this space was in core, and then I rapidly ended up in adjacent areas, such as the theme review team and BuddyPress. On reflection, this could have been a different story. It could have been one of the contributor who pivoted out, never finding their space. So, I am grateful for finding a space and to those contributors who caught me.

\n\n\n\n

My first BuddyPress props was by Paul Gibbs, and it was on 11/12/2010. My first core props came a few years later, and it was by Helen Hou-Sandi on 03/01/2013. By each of these props, I was already settled into those spaces as a contributor. Props might come later because you’re working on other things or the role you’re contributing.

\n\n\n\n

A welcome

\n\n\n\n

I had the pleasure of being asked to share my thoughts on contributing to maintaine.rs, along with other open source contributors, including the ever-awesome Jonathan Desrosiers. This is an incredible project telling stories across open source, and I encourage checking it out. In it, I was asked about welcoming contributors and how to see value.

\n\n\n\n
\n

If you want contributions, be sure to show how and where they are wanted. It’s one thing to say ‘all contributions are welcome’, but that’s open-source theatre because honestly, it’s likely not all are in every area as welcome as others. There are always more areas needed than some. Highlight these and make sure someone gets off to a contribution success from the start.

\n
\n\n\n\n

My journey could have been very different if I hadn’t found a place to contribute. Empowered by those people, I was led to the props and supported in my first tickets. Our projects are full of the ghosts of contributors we never activated, and that fuels me to see potential in every person who gives up their time.

\n\n\n\n

When I arrived at the project, I wasn’t sponsored; I was giving my own time because this project was providing me with a blog and client work. My journey in open source began before WordPress, starting with Linux. When I joined the project, I already understood the concept of contribution and came to it with that in mind, looking to find a way to balance what I was gaining.

\n\n\n\n

I wasn’t aware of all the options to contribute to the project; there were fewer than there are today. I had to be shown my options, where I could be helpful. My path was one so many have followed. I ended up staying here for so long because of the people who caught up with me along the way and helped empower me as a contributor, so thank you.

\n\n\n\n

Props is just one of the firsts

\n\n\n\n

Whilst these are ‘first’, they are just the public ones. There are so many firsts in a contribution journey. I was in these projects before my props. My first experience with core was that it was too overwhelming, which is why my first props is in BuddyPress. My first solo theme review was also pivotal to my journey 14 years ago.

\n\n\n\n

Every conversation, particularly in the first few stages, was pivotal to my journey as it set the tone for where I ended up adventuring. They could also have been points that led me to leave the project because I couldn’t find a way to contribute. I hold onto this point when interacting with others, as each contribution is so significant. You never know what someone will do in a project if they are given the opportunity, and it starts with them knowing they can do things. It’s essential always to acknowledge and recognise everyone who contributed. You never know whose first props those might be and what impact each of us might have on someone’s journey of contribution.

\n\n\n\n

Someone might also travel this project and never get props, because perhaps of the contribution area they are in or the work they are doing. That’s a key thing to consider, and actually, my own journey has public and non-public recognition due to different roles. As a project, WordPress needs to be better at recognising and measuring all types of contributions so the pride we all feel in props can be given to anyone contributing significantly.

\n\n\n\n

If open source contribution works, it’s a journey. This point is demonstrated by the adventures I have travelled and those of others within these projects. We have grown up, changed jobs, and moved locations, but we stayed with the project and our contributions. You do that because you want to, because you are getting something from doing it, as contribution has to be a two-way street to become a part of someone’s life. Props and other recognition are a boost to help you on that journey. It works because it acknowledges the work being done, and in its simplest form, it is a way of saying thank you.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 10 Jul 2025 09:14:26 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"binatethoughts.com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:34;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:112:\"Open Channels FM: The Future of WordPress and AI: Open Protocols, Agentic Workflows, and Industry Transformation\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=99251\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:116:\"https://openchannels.fm/the-future-of-wordpress-and-ai-open-protocols-agentic-workflows-and-industry-transformation/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:220:\"As AI advances, WordPress must choose between cloud-based tools or local agent workflows. Emerging protocols allow dynamic communication, influencing automation, privacy, and the future control of web content management.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 10 Jul 2025 09:01:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:35;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:40:\"HeroPress: The Remote Team Who Raised Me\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"https://heropress.com/?post_type=heropress-essays&p=8032\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:132:\"https://heropress.com/essays/the-remote-team-who-raised-me/#utm_source=rss&utm_medium=rss&utm_campaign=the-remote-team-who-raised-me\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:11486:\"\"Pull
\n
Here is Cathy reading her own story aloud.
\n
\n\n\n\n\n

In 2004, I was at home with one baby, having just left a career that I loved. Being at home with a baby full-time was shriveling up my brain. Before WordPress I tried gardening, sewing, painting, preserving and cooking. I was desperate to fill the void left by my career.

\n\n\n\n

My husband at the time, was a tech genius and had heard of a new get rich quick scheme: “blogging”.

\n\n\n\n

I didn’t know what that meant – I had to research what the internet was! But I was desperate and the evening news was featuring these “mommy bloggers” who were making small fortunes!

\n\n\n\n

“If they can do it”, I thought, “So can I!”

\n\n\n\n
\n

I made a whole $0.82 that year.

\n
\n\n\n\n

I am not easily dissuaded though. I decided that a new theme would get me more revenue.

\n\n\n\n

To build themes circa 2007, you had to learn the template system, the file structure, and the hooks baked into WordPress.

\n\n\n\n

It was like a giant puzzle and I was so excited to be using my brain – I jumped in.

\n\n\n\n

Learning to Swim

\n\n\n\n

I read every single page in the WordPress.org docs. I spent 10–20 hours a week in the support forums, mostly asking for help – not giving much!

\n\n\n\n

I learned to code by fixing real problems – it was challenging and the internet was full of quality resources.

\n\n\n\n

I made big mistakes – I crashed countless sites! And in doing so, I learned what not to do.

\n\n\n\n

I was in heaven.

\n\n\n\n

Except for those all-nighters trying to fix something that I broke on a client’s site.

\n\n\n\n

I learned from the best in the community – because back then, they were in the forums with me. I learned from friends and other bloggers. I learned from online articles (pre-YouTube days).

\n\n\n\n

Along the way, I met a fellow mommy blogger who had a side business called Desperately Seeking WordPress. (Her blog was Desperately Seeking Sanity and she has the best sense of humour!) She needed help. I was available.

\n\n\n\n
\n

At the time, our offer was simple: we would install WordPress, a theme, and a few plugins – and make it look nice – for $20.

\n
\n\n\n\n

Eventually, she stepped back, and I got to take the reins. 

\n\n\n\n

That’s when I realized I hadn’t the foggiest idea how to run a real business. I started reading books like *E-Myth*, *Duct Tape Marketing*, and *Purple Cow*. I had no MBA, no startup capital. Just the desire to help other mommy bloggers not get ripped off by tech ‘gurus’.

\n\n\n\n

Building a Business While Falling Apart

\n\n\n\n

I’ve struggled with depression for my entire adult life. By 2006, I had three young children. By 2012, I was divorced. The work that had been a fun puzzle, now had to pay the bills.

\n\n\n\n

I couldn’t disappear on bad days – my fledgling company had to be reliable! The clients needed stuff. So I hired my first contractor. She made more than I did most months.

\n\n\n\n
\n

But I needed to know someone would be there for my clients when I couldn’t be. That was the first step toward building a team that would be better than any of us could have imagined.

\n
\n\n\n\n

The behind-the-scenes work we do stays the same whether it is for celebrities or tiny fledgeling bloggers. And when we were kind, didn’t talk down to them, and were honestly helpful, they talked about us. And we became 100% referral-based.

\n\n\n\n

So how do YOU get referrals?

\n\n\n\n

I can’t tell you that – but – I know what works for us: radical honesty (even when it hurts our bottom line), genuine kindness and respect, and being the best at what we do. I believe with all my heart that our clients are in good hands.

\n\n\n\n

And that honesty requires owning my mistakes. I wish I could say I don’t make them anymore but… radical honesty!

\n\n\n\n

We always do what’s in the client’s best interest, even when it costs us money.

\n\n\n\n

The Invisible Work

\n\n\n\n

After about seven years, I made an intentional decision to hire women. I grew up in West Africa, and I’ve seen firsthand how empowering women lifts entire families and communities.

\n\n\n\n

So we began funding microloans for women entrepreneurs in developing countries. The research shows that supporting women has a multiplier effect – and I’ve always had a soft spot for hard-working entrepreneurial free spirits.

\n\n\n\n
\n

From the very beginning, we were a remote team. I’ve never been on my own – being reliable is a non-negotiable – I need the team.

\n
\n\n\n\n

One of those teammates is Diane. I met her 14 years ago, just after she got married. She’s quiet, steady, avoids the spotlight – and she’s been one of the most important people in my life. We’ve built a business together through births, illness, life transitions – and I trust her completely.

\n\n\n\n

That trust, that stability, is part of what we offer our clients. And it’s rooted in one simple idea: be kind. Treat everyone with dignity. Respect whatever expertise they bring, even if it’s not technical. Our job is to help their business succeed – not to impress them with ours.

\n\n\n\n

Burnout, Boundaries, and Pricing with Purpose

\n\n\n\n

In 2014, I burned out — hard. I had thrown myself into social media marketing. I spent $1000’s on courses and really tried to implement the suggestions. Guest post twice a month? Check. Two hours connecting on Facebook every day? Check. Write three posts a week? Check.

\n\n\n\n

I did all the things. ‘Cause they told me to.

\n\n\n\n

I think it only took me three months to crash and burn. I got so sick, my body was done. I spent two full weeks in bed.

\n\n\n\n

That’s when I learned my limits. And it’s when I learned to stay focused.

\n\n\n\n

Today, all decisions go through a, “What does this do to the bottom line?” framework. And by bottom line – I mean money, of course, but without sacrificing service, honesty or the trust of our clients.

\n\n\n\n
\n

Part of our growth meant making pricing decisions that felt terrifying.

\n
\n\n\n\n

We raised prices from $20/setup to $40/hour. We lost 20% of our clients — and I expected to lose more. But the ones who stayed? They valued us. They paid happily. They referred us to others.

\n\n\n\n

Later, we raised it again — to $75/hour. I braced for another drop. It never came. 

\n\n\n\n

Instead, I got emails thanking me! Clients said they were glad we were finally charging what we were worth! I’m still shocked about it. Who knew I’d have warm fuzzy stories on the day we raised our prices?

\n\n\n\n

Eventually, we raised it to $89/hour. Still below the $110–$120 that custom coders charge. Because we’re not “true coders.” We’re *practical coders.* We solve real problems, fast, for people who trust us.

\n\n\n\n

And that trust is priceless.

\n\n\n\n

On Staying True in a Shifting World

\n\n\n\n

Through all of this – the growth, the pivots, the grief and healing – this little WordPress agency has offered me survival.

\n\n\n\n

The ability to work from home. To be present for my kids. To build something real while living with depression. To build a team based on trust, not hustle.

\n\n\n\n

I can only recommend something that I truly believe is the best option for my clients. That’s why WordPress matters to me. It’s extensible, open-source, secure, supported, owned and portable. Currently it is the best option for my clients. And I can stand behind that.

\n\n\n\n
\n

A sign sits on my desk. It reads: “Who can I serve today?”

\n
\n\n\n\n

That’s the constant. That’s the compass.

\n\n\n\n

Today, I volunteer in the WordPress support forums – the same ones I learned from. I volunteer in the community to give back. I’m sharing my story, not to teach anyone how to succeed, but to say: it’s okay to build slow. To price based on value, not hype. To grow into leadership without chasing fortune.

\n\n\n\n

There are still chapters unfolding in my story. Some endings haven’t revealed themselves yet. But I know this much:

\n\n\n\n

I stayed.

\n\n\n\n

And through WordPress, I learned that staying — quietly, kindly, steadily — can be its own kind of success.

\n\n\n
\n\n
\n

Cathy’s Work Environment

\n\n\n\n

We asked Cathy for a view into her development life and this is what she sent!

\n\n\n
\n \"Cathy’s\n
\n\n\n\n\n

HeroPress would like to thank Draw Attention for their donation of the plugin to make this interactive image!

\n
\n\n
\n\n

The post The Remote Team Who Raised Me appeared first on HeroPress.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Jul 2025 15:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Cathy Mitchell\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:36;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:98:\"WPTavern: #176 – Héctor de Prada on the Power of Local WordPress Meetups in Community Building\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=197433\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:110:\"https://wptavern.com/podcast/176-hector-de-prada-on-the-power-of-local-wordpress-meetups-in-community-building\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:45483:\"
Transcript
\n

[00:00:19] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress. The people, the events, the plugins, the blocks, the themes, and in this case the power of local WordPress Meetups in community building in Spain.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.

\n\n\n\n

So on the podcast today we have Héctor de Prada.

\n\n\n\n

Héctor is one of the founders of Modular DS, a tool for managing multiple WordPress websites. But his contributions to the WordPress community go far beyond his day job. Based in Spain, he’s been involved in creating and developing websites for years, and has immersed himself in the WordPress community, attending numerous WordCamps and Meetups in various cities.

\n\n\n\n

More recently, he’s been co-organizing the WordPress Meetup in Leon, a city in northern Spain, which has seen impressive growth and engagement since its revival after the pandemic.

\n\n\n\n

Héctor shares why he volunteers his free time to organize these community events, and the impact Meetups can have, not only for individual learning, but for revitalizing local tech ecosystems.

\n\n\n\n

We discuss what makes a successful Meetup, how his team approaches event planning, rotating roles so nobody feels the pressure to attend every time, and how sponsors and local venues help make it all happen.

\n\n\n\n

Héctor explains how their Meetup group draws diverse attendees, from students and marketeers, to business owners and agencies. And how they’ve experimented with differing formats and topics to keep things fresh and inclusive. Whether it’s inviting guest speakers from digital businesses, running panel forums, or focusing on networking opportunities for job seekers and entrepreneurs, he highlights the power of community in building connections that exist beyond WordPress.

\n\n\n\n

We cover everything from the practicalities of finding venues and sponsors, to managing team workflows and keeping the events welcoming and approachable.

\n\n\n\n

If you ever thought about starting a WordPress Meetup in your city, or want to bring new energy to an existing group, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

\n\n\n\n

And so without further delay, I bring you Héctor de Prada.

\n\n\n\n

I am joined on the podcast by Héctor de Prada. Hello, Héctor.

\n\n\n\n

[00:03:20] Héctor de Prada: Hello, Nathan. A pleasure to be here.

\n\n\n\n

[00:03:22] Nathan Wrigley: We’re at WordCamp EU. It is in Basel. We are on the contributor day. And you are going to be giving a presentation about an experience that you have, I guess, on a monthly basis running an event. Let’s get into that in a moment. First of all, just introduce yourself, who you work for, what you do in the WordPress community outside of Meetups.

\n\n\n\n

[00:03:41] Héctor de Prada: Okay, so I am Héctor de Prada. I am one of the founders of Modular DS, which is a tool to manage multiple WordPress websites. So that’s like my main occupation. But thanks to that, and also since way before, I have been involved with WordPress, creating websites, developing websites.

\n\n\n\n

And for the past couple of years, or three years I could say, I have been also involved in the community. I’ve been in many WordCamps in Spain because as you know, in Spain, we have a lot of WordCamps. I’ve also been in many Meetups in different cities. I try to stay as much connected as I can to the community.

\n\n\n\n

I also write a newsletter about the WordPress ecosystem in Spanish. And since a year and a half ago, I am also one of the co-organisers of the Meetup, and that’s what I’m going to talk about, well, Saturday in the WordCamp Europe in the talk I have.

\n\n\n\n

[00:04:39] Nathan Wrigley: This is going to seem like a strange question because you know, on a very visceral level, you really understand why you do it, but I’m kind of keen to explain that to the audience. Why do you use up your free time organising WordPress events on a sort of voluntary basis? You know, you’ve given up lots of your free time, there’s no financial gain, you’re just doing it. Why do you do that?

\n\n\n\n

[00:05:02] Héctor de Prada: Okay, well, I was thinking a lot about this question before and I came up with two different answers.

\n\n\n\n

The first one is that since, like I said, I have been kind of part of the community for a few years, and I have been in many events outside of my city. I saw how the WordPress communities, how it feels, all the good things that come out of it. And then one of the main things I was always thinking when I was going to these events was like, why can’t we have this in our city for the people in our city to experience this, to have this type of connections, inspiration, learning, and so on? So that’s one of the first things.

\n\n\n\n

And then it was also mixed with, I come from a small city in the north of Spain, and one of the things, many people say inside the city and outside of the city is that we don’t have many things anymore, okay. So it’s hard to explain, but like there is not much to do, a lot of young people leaves the city. So it’s kind of like depressing mood a little bit.

\n\n\n\n

So it was also like, why don’t we try to do something in our city to try to start creating an ecosystem? And WordPress gave us the perfect excuse to also do that. Try to get people together, people in the tech world, which is what we do, talking about me and my partner, my friends, we are always talking about websites, technology, design. So it kind of all got together and we said, okay, let’s start doing the WordPress Meetups. And it’s been great so far.

\n\n\n\n

[00:06:31] Nathan Wrigley: How long have you been actually involved in the one that you’re doing now?

\n\n\n\n

[00:06:34] Héctor de Prada: The meet up in our city, we have been doing it for around year and a half now. So after the summer, we’ll do two years.

\n\n\n\n

[00:06:40] Nathan Wrigley: I should probably say to the listeners that a Meetup, if you’ve never attended one, WordPress has a whole community outside of the software, who help create the software, but they also show up for social events and things like that. And the ones that you may have heard of are WordCamps, and they’re the big ones. That’s where we’re at right now. So they tend to be an annual thing, perhaps in a city or, we are at WordCamp Europe, which is an annual thing, which moves around Europe.

\n\n\n\n

But the Meetups, which is what we’re talking about, that’s usually bound to a city or a town or something like that, and it’s much more regular and it’s probably happening in an evening. It’s not a whole day. It’s maybe, I don’t know, six o’clock till nine o’clock, something along those lines. And presumably using local talent, using the people in the community that you’ve got, drawing them in and trying to get them to do the presentations and all of the bits and pieces.

\n\n\n\n

So if you don’t know anything about that dear listener, now you do. If there’s something close to you, if you actually log into your WordPress dashboard, there will be an area in the dashboard, if you put all of the panels on, if you turn them on, you’ll be able to see, hopefully it will geographically locate you and give you some intel as to that.

\n\n\n\n

So tell us a little bit about the one that you’ve been doing. You said it’s been going for 18 months, or at least you have been involved for 18 months.

\n\n\n\n

[00:07:53] Héctor de Prada: Actually it was already working before Covid, so for a couple of years before Covid. Then it was shut down. I wasn’t involved before Covid. I didn’t even know the WordPress community before Covid. And then it was like three years stopped. Yeah, like 18 months ago, we kind of restarted the Meetup.

\n\n\n\n

[00:08:13] Nathan Wrigley: So how many people typically would attend your Meetup? Because yours is quite a big one. The one that we are at at the moment is ridiculously big. You know, it’s going to have several thousand. Nobody can expect those kind of attendance numbers. That would be extraordinary. What are the kind of numbers that you are seeing on a monthly basis?

\n\n\n\n

[00:08:28] Héctor de Prada: Yes, so I was checking this for the presentation I’m giving on Saturday, and we have, in this 18 months, we don’t do it every month, okay, it is more like every couple of months, because we don’t do it in the summer or during Christmas, for example, in December. So it’s kind of like six, eight, a year. And we have an average attendance of 60 people.

\n\n\n\n

I know it’s pretty big because like I said, I’ve been in many other places where having like 25 people, 30 people, is already like a huge success. And that’s what we were trying to accomplish at the beginning. Like, okay, let’s try to get 20 people here, 25 people, get together. And since the beginning it’s been like, yeah, like sometimes it’s 50 people, sometimes it’s like 75 people. And for us it’s like, sometimes we don’t even know, how is it possible? But sure, it’s very fulfilling and we’re very happy about it of course.

\n\n\n\n

[00:09:16] Nathan Wrigley: And how do you sort of account for that? Do you email people? Do you have like a system? So for example, a lot of the Meetups will use a platform, which is called Meetup. You can go to meetup.com, and figure all of that out. But do you use a system like that to keep in touch with people and notify them that there’s a new one coming in June or July or whatever it may be?

\n\n\n\n

[00:09:35] Héctor de Prada: Yeah, we use meetup.com to create the events and send the email communications to all the people that is subscribed to the group, or has been in one of the previous Meetups. And also, we always try to get people to follow us on social media because it is where, we have like a Twitter and Instagram account. It’s where we try to advance the new Meetups and give all the information and stuff.

\n\n\n\n

And then we try different things also to get more people to come in. For example, we go kind of old school and we print some big flyers, okay, to put it on the walls. And we put it, for example, in the university, in the buildings the city hall has for technology companies. So we put them over there just for people, when they go to work or students, when they go to the university, they will just check it out. And maybe they will feel like going. So that’s also something we do.

\n\n\n\n

[00:10:25] Nathan Wrigley: And where do you actually do it? Do you have the same venue every single time, or do you tend to move around?

\n\n\n\n

[00:10:30] Héctor de Prada: No, we move around. This is very important because it, I think it’s one of the most important things when you are organising any kind of event, the venue where you’re actually doing it. And we are very lucky because, even when I was telling you that in our city it seems like not many things are being done. When you actually try to do something, everybody tries to help you.

\n\n\n\n

So we have been offered many different venues from City Hall, from the university, from private companies, from the government, public buildings they have. So what we have tried to do is to do the Meetup in different places. So in case, at some point, we can do it in one of them, we will always be able to go to any of the other ones. And that has worked very well for us.

\n\n\n\n

[00:11:12] Nathan Wrigley: Oh, nice, yeah. I think that’s not typical. I think usually it’s done in kind of the same venue and what have you.

\n\n\n\n

My understanding also, and I could be wrong about this, but my understanding is that the Spanish WordPress community is actually one of the healthier ones, for want of a better word. It seems to be kind of thriving. I don’t know if I’ve just heard a story and that’s not true, but is that true?

\n\n\n\n

[00:11:33] Héctor de Prada: No, I think it is. I think it is definitely, well, I was talking with somebody that is organising here at WordCamp Europe, and we were accounting for WordCamps made in Spain last year. And I think it was like 12 WordCamps in one year, only in Spain, which I could say is what the rest of Europe has in one year.

\n\n\n\n

So it’s like pretty crazy. I think, we Spanish people, we just like to gather a lot and just meet each other. But also I think there are many Meetup groups in Spain that are doing a great job and have great numbers and do a lot of Meetups with really great speakers. So yeah, I would say in Spain there is a lot of community movement.

\n\n\n\n

[00:12:14] Nathan Wrigley: I’m quite jealous. The part of the world where I live in the UK, Covid really had a profound impact. The Meetups kind of disappeared, and in some cases came back, but in most cases they didn’t. I think maybe the year 2025 was a bit of a watershed. There’s a few I think that maybe are on the cusp of returning.

\n\n\n\n

So it can’t just be you. I’m presuming that there’s a whole bunch of people, a team, if you like. And how does that work? How many people regularly are helping you out, and do you have, I don’t know, different roles that you perform? Like, you’re in charge of the emails, you’re in charge of the venue, you’re in charge of the snacks and whatever it may be. How many people on the team and how do you manage all that?

\n\n\n\n

[00:12:49] Héctor de Prada: We are six people currently, and what we tried since the beginning was to find other people that could be complimentary to us. And like you said, we try to split responsibilities. So one of us, who is very good with social media, is the one taking charge of posting everything in social media so everybody sees what we are doing.

\n\n\n\n

Other person is always in charge of the networking we do afterwards to get the catering, even the venue we have to change somewhere, because it’s somebody who has a lot of contacts in that space.

\n\n\n\n

Also somebody’s in charge of sponsors. Somebody’s in charge of creating the Meetups. Somebody’s in charge of the design.

\n\n\n\n

Okay, so we try to split the responsibilities, but at the same time, and this is not so obvious, I think what we have also found very important is that, even when each one has a responsibility, we also try to rotate every once in a while. So, for example, when we started, everybody thought or supposed I was always going to be the one presenting, because I’m kind of more used to speaking in public. One of the first things we decide is that every day one of us was going to present the Meetup. So in case I’m missing or anybody else is missing, the Meetup will work exactly the same.

\n\n\n\n

Because we don’t want this to feel like an obligation, like every member of the team has to be every single Meetup no matter what, because it’s not a job. You said it. This is like a volunteer thing. We do it for the community. So if at some point something happens with life, you have to take your kids to school or anything, well, the rest of the team will be able to take charge.

\n\n\n\n

[00:14:27] Nathan Wrigley: So everybody kind of rotates things around so that if somebody’s, I don’t know, unwell during that day, somebody can slot in. Yeah, that’s kind of an interesting approach.

\n\n\n\n

[00:14:35] Héctor de Prada: Exactly. Yeah, the same with like organising the networking and the catering afterwards, taking charge of cleaning everything up afterwards. We try to rotate everything.

\n\n\n\n

[00:14:44] Nathan Wrigley: There’s so much that goes into these events. So let’s just go through the little laundry list of things that you have to achieve. Now, you may do some of these, you may not. But I guess it’s things like booking the venue has to be done. Maybe there’s a payment that needs to be involved with that. You have to presumably have an email list. You’ve got social media accounts. You’ve got ordering the food, tidying up at the end.

\n\n\n\n

[00:15:03] Héctor de Prada: You need to talk with the sponsors as well to get any merchandise they might send to you to give to the attendees. Also, you have to select the speakers and then prepare it with the speakers.

\n\n\n\n

[00:15:14] Nathan Wrigley: So do you work with the speakers as well? Because my experience is that often speakers can be, if they’re new to it, they can be a little bit nervous. And so having some sort of, coaching is maybe the wrong word, but some intuition as to, yeah, you’re on the right lines. That, I think, is what our audience will like.

\n\n\n\n

[00:15:27] Héctor de Prada: It depends a lot on the speaker, because it’s true that there are some speakers that are very, I’m not going to say professional, but they’re like very used to, they are experts in something and they’re very used to give talks about it. So you basically can’t tell them anything because they already know more than you do, okay, about how to do it right.

\n\n\n\n

But it’s true that one thing that we like to do a lot is that we don’t only try to do like the normal talks you might see in a WordCamp, where somebody is an expert on a field, and they just give you a talk trying to allow you to learn something. But we also like to do more experience stuff like trying to look for inspiration instead of learning.

\n\n\n\n

So for example, like you do with the podcast, nowadays I think podcasts are a trend because we like to listen and understand the stories behind people, how they are doing something, or how did they come to this? So for those kind of talks, it’s true that we kind of give them a guide. So, we would like you to talk about this.

\n\n\n\n

Or sometimes if we do, the last meeting we did, it was like a forum with three different businesses, and we wanted to just talk about their experience. And what we did is try to get like the main questions we wanted them to answer. And we gave them to them previously so they could kind of prepare a little bit of what we wanted to talk about. Because they didn’t have any presentation or anything, it was just like a normal conversation, like an interview more. So in those cases, it takes much more work than if it’s just somebody with a presentation and they do their thing.

\n\n\n\n

[00:16:58] Nathan Wrigley: Yeah, i’ve been to Meetups where they’ve done a whole variety of different things, not all at the same evening. So for example, they might do two presentations of, I don’t know, 45 minutes each, and then have a bit of networking in the middle.

\n\n\n\n

Some places do social things where it’s just, maybe there’ll be an hour where you just do the networking and hang out. I’ve been to Meetups where they do prize giveaways and quizzes and things like that.

\n\n\n\n

So there isn’t just one model. You can sort of mix it around a little bit and offer things which the audience, I don’t know, it’s a bit more entertainment, if you like.

\n\n\n\n

[00:17:29] Héctor de Prada: Of course. I think it’s very nice to try different formats, different things. Because also people, when we have a lot of, I guess like many Meetups, we have many regular people, they go to almost every Meetup, so I think it’s also good for them to try different things so it’s more like, a little bit unexpected. You get a surprise of what you are getting out of it, and it’s not always the same thing.

\n\n\n\n

[00:17:51] Nathan Wrigley: Have you had things which you’ve tried maybe recently in the last six months or something that you just thought, oh, let’s give that a go. And if so, maybe you could share that.

\n\n\n\n

[00:17:59] Héctor de Prada: Well, the last one we did, at the beginning it was a little, it wasn’t so much about the format because we had already tried that because it was like, yeah, like four people from three different businesses talking about how they achieved what they have done. But the crazy thing is it was the topic about it. Because it was three different gastronomic business, which at the first time you could say, okay, so what does this have to do with WordPress?

\n\n\n\n

But it was very interesting because those three businesses, it was a social media influencer only talking about restaurants, a food influencer. Then it was a restaurant that has digitalised all the experience inside the restaurant. So you get to the restaurant and you order the food with your phone, everything, so no people around you or anything.

\n\n\n\n

And then the other one was an e-commerce site made with WooCommerce of one of the biggest meat sellers in Spain. It’s a big restaurant just to eat meat. The type of meat, like you pay a lot for that. And they are really crushing it, like with their e-commerce made with WooCommerce.

\n\n\n\n

So it was all very digital, but at the same time, the topic was like gastronomic and at the beginning people was like, doesn’t feel like a WordPress Meetup. It was amazing. People loved it.

\n\n\n\n

[00:19:08] Nathan Wrigley: It worked.

\n\n\n\n

[00:19:08] Héctor de Prada: Yes, yes. Because their stories were so interesting and how they kind of mixed with the technology and how it started, the pains they had at the beginning, trying to introduce that technology and how it has now changed their business. It was super interesting.

\n\n\n\n

[00:19:23] Nathan Wrigley: How did you come up with the idea of that particular one? Because that’s so curious. Because usually it is, there’s a strong WordPress focus to the ones that I’ve been, you know, there’s a presentation, it’s WordPress, there’s a Lightning Talk, it’s WordPress, there’s another presentation, it’s WordPress.

\n\n\n\n

But that one, there’s a thread running through it, which is technology. Sounds like the audience really liked it. And there was obviously that WooCommerce bit at the end that you mentioned. How did you even conceive of that topic?

\n\n\n\n

[00:19:47] Héctor de Prada: Yeah. Well, it wasn’t only that WooCommerce, like the three of them had started somehow the business with some WordPress, a WordPress website, a WordPress blog, a WooCommerce, okay. It wasn’t the main focus of the talk, but they all had something to do. And that wasn’t intentional, like it just came out because I guess WordPress, you want it or not, it is behind most of the worldwide web. So it was very nice.

\n\n\n\n

But one thing talk about in the presentation here at WordCamp Europe is that I think that WordPress is what unites us, but I don’t think it should be what separates us. So I think, thanks to WordPress powering like 40 something percent of the worldwide web, it allows us to talk about almost everything related to the digital world. It will always be somehow related to WordPress.

\n\n\n\n

So it’s true that we don’t go too deep into the technical WordPress part. It’s always somehow related, but we feel like our audience is not like WordPress experts, to say it like that. We have a lot of students, marketing students, marketing agencies, entrepreneurs. And then we talk more about like the digital business part, the online marketing. It’s always somehow related to WordPress, but it has worked for us very well to kind of get a broader view and not go so specific, to get also like more attendees coming, and they all feel like they understand, that they can apply that to themselves.

\n\n\n\n

Of course we always talk a lot about WordPress. It’s a WordPress Meetup. But I think that’s also important because even us that we are so deep in the community, I feel like WordPress is like my main thought like 24/7 almost. But for most people outside the community, it is not like that. And I think one important thing in WordPress is that we try to get as many people to the community as possible, and they don’t have to be such experts.

\n\n\n\n

[00:21:36] Nathan Wrigley: Yeah, it’s kind of interesting because if you show up and you did two presentations back to back and it was all about, I don’t know, WP-CLI, followed by some other very technical thing, it may be that half of the audience, maybe more, maybe 70% of the audience would think, I don’t really understand that. And managing that is quite difficult.

\n\n\n\n

So mixing it up a little bit and making sure it’s not too technical for one of the evenings. Maybe you have a technical one now and again, but you’ve got to think a lot about the audience and what they are prepared to consume.

\n\n\n\n

So, pivoting slightly, I guess this cannot be entirely free. So I know that you give your labour for nothing. But presumably there is a cost somewhere along the line, whether that’s for snacks or whether it’s for hiring of the venue. How do you finance your Meetup? How does that work?

\n\n\n\n

[00:22:22] Héctor de Prada: Yeah, we have sponsors that help us with the cost. We basically, our costs are only the flyers, which is like almost nothing because we don’t do that many, and then the food and drinks for the networking. So we always try to have two sponsors. One, it’s always a local company, and then one is a workers community company.

\n\n\n\n

I think in Spain at least, because I don’t know outside of Spain, but there are many companies, mostly hosting companies that really want to sponsor these kind of events. And since the beginning, we have had a lot of offers of companies trying to sponsor. I guess it’s also important that we have good attendee numbers and stuff. But I think they sponsor most of the Meetups in Spain. That’s what we use to cover the cost.

\n\n\n\n

[00:23:08] Nathan Wrigley: How does the sponsorship actually work? Because obviously they couldn’t realistically be paying you directly and then you then move the money to buying the snacks and the pizzas or whatever it may be. How does that sponsorship actually work? Who is the person that’s receiving the money and distributing it and so on?

\n\n\n\n

[00:23:23] Héctor de Prada: Well, normally what we do is that, since our costs are very located in, I would say 90% or maybe 95% of the budget goes to the food and drinks for the catering, which we have also tried different companies and different stuff. So they give us a bill and then we’ll send it to the sponsors so they pay the bill. I know it’s not the easiest way. Sometimes because of the company requirements of the food, we have to give the money first and then ask the sponsor to give us the money.

\n\n\n\n

Well, I guess as long as you are, for example, us of course, in the team, as long as you are completely transparent and you show where all the money goes and what is being spent. At least for us, I’m sure for you guys in London, for example, it has to be way different because it’s another city, other kind of prices and everything. But for us, the money sums are really, really small. Even when we have a 60 person Meetup, the money is really small. It just gives you for that, for like the food and that. We are still waiting to try to do some T-shirts for the team, but we haven’t still gotten the money for that.

\n\n\n\n

[00:24:27] Nathan Wrigley: So you tend to get a sponsor on board to sponsor a thing, a component of the Meetup. So it might be that this week hosting company X is sponsoring the food. Or such and such a company is sponsoring the venue. It’s like in one door out the other. Somebody on your team will pay for the food, but then send the receipt, the bill if you like, to the sponsor, who will then reimburse them for all of that.

\n\n\n\n

[00:24:50] Héctor de Prada: Yeah, could be. For example, we have never paid for the venue. We have always had agreements, it’s always free for us so far. Yeah, it’s basically always the food. And the sponsor, even the local company has changed a few times.

\n\n\n\n

But for example, I would say the WordPress community company, that for us is a hosting company, that also sponsors many WordCamps in Spain, we have always had the same one because since the beginning they told us, we want to sponsor, and as long as you keep doing it, we will send you the money or give us the bills.

\n\n\n\n

And also the sponsors we’ve had, they always give us gifts or merchandise for the attendees or maybe to give something like a raffle and then somebody can win a prize or something better. Or they even give us gifts for the speakers as well. So they always treat us very good.

\n\n\n\n

[00:25:37] Nathan Wrigley: So is there like a magic number that makes the event work? So you said that sometimes 70, sometimes 55, something like that. I mean, they seem like pretty good numbers. If you stand in front of that many people, that can be quite intimidating, you know, that’s a lot. Obviously other places will have smaller numbers. Maybe some places will have bigger numbers.

\n\n\n\n

Is there some feeling in your head about, if the numbers dipped down to 20, it’s not worth doing it anymore or anything like that? Do you have any of those thoughts? Because I know that a lot of people who’ve put these events on before, they get quite demoralized because they begin it, three people show up and they do it again, and then two people show up and maybe five people show up. And it kind of seems like a lot of effort. There’s not much interest. I’m trying my hardest, I’m doing all the things which I think are the right things to do. Any thoughts on that?

\n\n\n\n

[00:26:22] Héctor de Prada: Yeah, well, I think it’s definitely challenging because I’ve seen, like you said, many cities where this is the case. It’s really hard for them to get people to attend. I think the main focus for us, when we got all the team together, we always try to think about new things to bring new people in. Maybe talking with the teachers at the university, or maybe going to a business group to present them the Meetup, or maybe get a collaboration with a social media influencer in the city, so he can talk about the Meetups, even be a speaker and then post it on socials. So it is definitely, I think it’s the most important thing.

\n\n\n\n

In my experience, i’ve been in many Meetups and when you are more than 20 people, I could say, it already feels pretty good. Because more than 20 people, it’s already a good number of people to network, to talk, to give a presentation in front of. So more than 20 people, I think it’s already a good number. When you go below 20, below 10, I guess it’s pretty hard.

\n\n\n\n

[00:27:19] Nathan Wrigley: You sort of feel that it’s a lot of work and, you know, it’s difficult to justify that work if the interest is not there.

\n\n\n\n

So speaking of that then, is there a support, like a wider WordPress Meetup support network? So where you can go and dip in for ideas, advice. Obviously if you’re listening to this podcast, that’s one avenue you might get it. But is there a place that you can go, like a Slack channel or a wordpress.org forum or something like that where you could go and gain advice, or some leadership from people like you who’ve been doing this before?

\n\n\n\n

[00:27:48] Héctor de Prada: Yeah, well, there are different places. In the day to day, we have the Slack channel, for example, in the Spanish community inside the WordPress Slack, we have a channel for the Spanish Meetups. So every time we have a problem, we had one a few weeks ago with the Meetup platform, for example, or things like that. We always go there and there is always somebody from the community team replying, and telling you, and helping you, whatever you need.

\n\n\n\n

Also I think it’s very important. It was huge for us at the beginning, before we started doing the Meetup of our city, again, when we started now 18 months ago, it was very helpful to go to WordCamps and in the Contributor Day, like today, go to the community tables and talk with the people that has experience organising Meetups. And they were the ones, for example, when we started it was like super easy because people like Rocío Valdivia, Juan Hernando, who are very deep into the community team for many years, they have been there. They just help us do all the process, all we needed to know. They gave us all the basic advice to know, screwed up at the beginning.

\n\n\n\n

So I would say, if somebody’s looking to organise a Meetup, the first thing they should do is to go to a WordCamp event, or maybe a Meetup in a different city, and talk with people that is organising a Meetup to just get some of the real experience, because I think that’s invaluable.

\n\n\n\n

[00:29:08] Nathan Wrigley: How do your team actually meet up then? Do you have like a regular weekly gathering, like a session where you all gather on zoom or something like that?

\n\n\n\n

[00:29:16] Héctor de Prada: It’s more like on a monthly basis. So since we do Meetups every two months, let’s say on average. So one month we do the Meetup, and then the next month we got all together. It may be all together on the same place, because since it’s a small city, we are all kind of close to each other, or it might be on Zoom. And then we do like the feedback of the previous Meetup to talk about what went well, what could be improved, and at the same time to prepare the next Meetup.

\n\n\n\n

So it’s kind of one month, Meetup, one month, all get together to talk about it. Next month, Meetup, next month, get together to talk about it.

\n\n\n\n

In one hour we can talk about the previous Meetup and organise the next one. And I’m not talking about organise everything, I’m talking about kind of like divide the responsibilities and say, okay, so I’m going to do this, you’re going to do this. And then on a WhatsApp group, we are just letting each other know like, okay, I already booked the venue. Okay, I already talked with the speaker, and he said, okay. Okay, I already designed the flyer or the image and we are good to go, and things like that.

\n\n\n\n

[00:30:14] Nathan Wrigley: From what you’re saying, it sounds like it’s kind of got a homely, family sort of vibe to it.

\n\n\n\n

[00:30:20] Héctor de Prada: Yes. We try to have that casual vibe, like friendship vibe. Like, even in the Meetups, when people come at the beginning when other people on the team was speaking at the beginning, like presenting the Meetup, and talking a little bit about what is the WordPress community, or what do we do here, what type of events are in the WordPress community and everything. They were a little bit nervous about it because they haven’t done it before or seen it as many times as I have seen it.

\n\n\n\n

And I would always tell them, this is like a friend group. If you say something wrong, you just say naturally, okay, this is my mistake. I should have said that this way and not that way, okay. And just do it in a casual vibe. Like, most of the people, like I said, since they’re regular people, we kind of know everybody. We all know each other because we do, if we do like one hour talk, then we always have like one hour, or hour and a half, of networking. So almost everybody knows each other.

\n\n\n\n

So it’s kind of more like, yeah, like friendship, not family, but friendship. We try to do that also so everybody who comes feels comfortable and not afraid to speak with anybody or even to ask something during the Meetup or anything. Because it feels really like it’s just a group of friends and you are part of those friends and everybody’s welcome.

\n\n\n\n

[00:31:35] Nathan Wrigley: Yeah, that feels really nice. The Meetup that I attend, we also have this idea of kind of networking and that seems to be quite a powerful thing as well. So people don’t just show up to make friends, which is nice. They don’t just show up to watch the presentations. Again, it’s nice, but they also show up, and there’s an opportunity to share stories about, I’m looking for work, I’ve got a job that I need to be filled.

\n\n\n\n

And just the other month we had a story about somebody who, you know, started a new job because of a conversation that had happened at that event. Just wondered if that kind of thing was something that you have noticed happens with yours as well?

\n\n\n\n

[00:32:09] Héctor de Prada: Definitely, definitely. One of the first things I was telling, for example, in the first Meetup we have, I think a few students came from the university. And I was like, this is where you have to be because you’re studying for marketing, and here there are like, I don’t know, like seven or eight agency owners that are going to be looking for the next people to work on their marketing team. So this is the perfect place. You are not going to meet them any other place. You’re not going to go on the street and just cross them all. So you have a marketing agency. I want to work on a marketing agency. No, it’s not going to happen.

\n\n\n\n

But here you just come here for free, you learn something, and also you can talk to these people directly. You can tell them about your life. They can tell you about theirs. Maybe there is a match. So yeah, I hope, I know a couple of stories that have worked, but I hope, I really hope it will be like the best thing for the Meetup that a lot of good things, it’ll either be collaborations, hirings, partnerships, anything come out of the Meetup. Because that would be great for the ecosystem, for the people in our city, for the people attending the Meetups. So that would make us so, so happy.

\n\n\n\n

[00:33:11] Nathan Wrigley: It’s one of those things that I think many people might find it a little bit nervous to go for the first time. You know, just the idea of sitting in a room full of strangers. You can do just that. You can sit at the back and you don’t have to contribute. You don’t have to put your hand up and say anything. So the idea of just showing up, lurking maybe a few times, just seeing what the whole situation is like. And you never know, something completely revolutionary might happen.

\n\n\n\n

[00:33:33] Héctor de Prada: Yeah. There is always, sometimes when you go to the networking part, and you don’t know anybody, the normal thing is that you probably go to a corner just by yourself, okay. Or just close to a wall and just stay there. But the normal thing in this type of events, or I would say almost any event, is that you’re going to find other people next to the wall, next to you, because they also don’t know anybody.

\n\n\n\n

And those are the first people you’re going to meet. And you’re going to create that relationship. And from that you’re going to start moving to other groups. Somebody’s going to come that knows one of you. And that’s how it starts. So it might feel intimidating at the beginning, but then once you get into it, also, this is especially in the WordPress community, it’s very easy to start to know people.

\n\n\n\n

[00:34:17] Nathan Wrigley: Yeah. It’s just occurred to me, Héctor, that we’re sort of 40 minutes in and I haven’t said, where is it? Where is your Meetup?

\n\n\n\n

[00:34:24] Héctor de Prada: Okay, yeah, true. Well, it’s in the city of León, which is in the north of Spain. It’s a small city in the north of Spain.

\n\n\n\n

[00:34:31] Nathan Wrigley: And I will make sure, when I put the show notes together for this episode, if you go to wptavern.com and search for the episode with Héctor in it, I’ll make sure to link any resources that you put in my way. I’ll make sure to link so that if you are in that neck of the woods, you can check it out, but also I’ll make sure to link to other more wider resources.

\n\n\n\n

[00:34:50] Héctor de Prada: If somebody that listens to this at any point thinks that me or anybody on our Meetup group can help them, if they are trying to create a Meetup, or doing a Meetup and trying to change something, please reach out to us and of course we’ll be happy to talk with anybody, if our experience can help in any way.

\n\n\n\n

[00:35:10] Nathan Wrigley: That’s perfect. I will make sure to put some links to your bio as well. That’s absolutely wonderful. Héctor de Prada, thank you so much for chatting me today.

\n\n\n\n

[00:35:17] Héctor de Prada: Thank you, Nathan.

\n
\n\n\n\n

On the podcast today we have Héctor de Prada.

\n\n\n\n

Héctor is one of the founders of Modular DS, a tool for managing multiple WordPress websites, but his contributions to the WordPress community go far beyond his day job. Based in Spain, he’s been involved in creating and developing websites for years, and has immersed himself in the WordPress community, attending numerous WordCamps and Meetups in various cities. More recently, he’s been co-organising the WordPress Meetup in León, a city in the north of Spain, which has seen impressive growth and engagement since its revival after the pandemic.

\n\n\n\n

Héctor shares why he volunteers his free time to organise these community events, and the impact Meetups can have, not only for individual learning, but for revitalising local tech ecosystems.

\n\n\n\n

We discuss what makes a successful Meetup, how his team approaches event planning, rotating roles so nobody feels the pressure to attend every time, and how sponsors and local venues help make it all happen.

\n\n\n\n

Héctor explains how their Meetup group draws diverse attendees, from students and marketers to business owners and agencies, and how they’ve experimented with differing formats and topics to keep things fresh and inclusive. Whether it’s inviting guest speakers from digital businesses, running panel forums, or focusing on networking opportunities for job seekers and entrepreneurs, he highlights the power of community in building connections that extend beyond WordPress.

\n\n\n\n

We cover everything from the practicalities of finding venues and sponsors, to managing team workflows and keeping the events welcoming and approachable.

\n\n\n\n

If you’ve ever thought about starting a WordPress Meetup in your city, or want to bring new energy to an existing group, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

Héctor’s presentation at WordCamp Europe 2025: Tips for hosting a successful WP meetup in your city

\n\n\n\n

WordPress León meetup

\n\n\n\n

Héctor on LinkedIn

\n\n\n\n

Héctor on wordpress.org

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Jul 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:37;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:49:\"Open Channels FM: What Is Fractional Sponsorship?\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"https://openchannels.fm/?p=99195\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"https://openchannels.fm/what-is-fractional-sponsorship/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:386:\"As described by longtime contributor Tammie Lister in a recent episode of Open Talk on Open Channels, fractional sponsorship is when a contributor is sponsored part-time by multiple organizations (or individuals). Rather than being fully funded by one company or acting as a purely unpaid volunteer, fractional contributors assemble support from several interested parties. As […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 09 Jul 2025 10:46:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:38;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"Jonathan Desrosiers: 12 Years Contributing to WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"https://jonathandesrosiers.com/?p=5028\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:74:\"https://jonathandesrosiers.com/2025/07/12-years-contributing-to-wordpress/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:10205:\"

Twelve years ago today, I received my very first props for contributing to WordPress Core. I had no idea at the time, but it turned out to be a transformative milestone in my career.

\n\n\n\n

In WordPress, community participants receive credit for contributing to a given change or deliverable by receiving “props.”

\n\n\n\n
\n

Props should be given to all those who contributed to the final commit, whether through patches, refreshed patches, code suggested otherwise, design, writing, user testing, or other significant investments of time and effort. Usernames are parsed for the credits list and WordPress.org profiles.

\n\n\n\n

WordPress Core Handbook

\n
\n\n\n\n

Before each release, the names of all contributors to that version are collected and added to the Credits API, which powers the Credits page in the WordPress dashboard. I’m proud to have been listed on that page for 22 consecutive releases starting with 4.7, and 27 of the 33 releases overall since my first credited contribution in WordPress 3.7 “Basie,” alongside 210 other contributors.

\n\n\n\n
\"\"
The WordPress 6.8 Credits page.
\n\n\n\n

To celebrate my ten year anniversary, I started publishing a blog post each year. In past editions, I’ve focused a bit on my WordPress origin story and looking at some “props” related data.

\n\n\n\n

This year, I’m excited to commemorate the day by announcing something new!

\n\n\n\n

From Stage to Essay

\n\n\n\n

At the end of May, Nick Vidal from the Open Source Initiative reached out to me. To celebrate GitHub’s Maintainer Month, he had been working to compile a collection of contributor stories for a book about the maintainers behind Open Source projects. He asked me if I’d be willing to submit something.

\n\n\n\n

I was honored! I read through the dozen or so questions he sent and wrote answers for a handful that resonated with me. The next day I flew out to attend WordCamp Europe. Between the whirlwind of travel, attending sessions, and preparing to give my talk, I completely forgot about it.

\n\n\n\n

A few days after speaking, I received another email from Nick.

\n\n\n\n
\n

While doing some research about you, I fell in love with your recent talk at WordCamp Europe.

\n
\n\n\n\n

He had seen the recording of my talk and asked me to incorporate the subject matter with the answers I had already sent over for the book. My speaker notes captured the core ideas, but they needed a lot of refinement and proper citations before they could stand alone as a publishable essay. I also included some thoughts from my recent post about the impact of maintaining Open Source projects.

\n\n\n\n

I’m excited to share that thanks to the many hours Nick put into the project, the maintaine.rs website showcasing this project is live. \"🎉\" You can read my essay on the website, or download the full book in PDF or EPUB format.

\n\n\n\n

Building On The Ideas Of Others

\n\n\n\n

My good friend and fellow Core Committer Felix Arntz celebrated the 10 year anniversary of his first contribution to WordPress late last month. He wrote about 10 things he’s learned in 10 years of contributing.

\n\n\n\n

As far as I know, Felix hadn’t seen my WCEU talk or heard about the Maintainers project. Despite that, we ended up exploring many of the same themes and principles.

\n\n\n\n

While the ideas I explore in my talk and essay aren’t novel, they’re rooted in lessons I’ve learned from others and foundational Open Source concepts. A key part of participating in any Open Source community is learning from your predecessors. How should we conduct ourselves? How should we structure our communities? How should we make decisions? You can earn the respect of your peers by demonstrating that you thoughtfully consider these questions through your day to day actions.

\n\n\n\n

Submit Your Own Story

\n\n\n\n

I’m grateful to be included in the book among many other amazing maintainers, but I was also glad to find out I was not the only maintainer representing the WordPress project: Tammie Lister also submitted her maintainer story.

\n\n\n\n

While it’s good to see WordPress represented in the book, the project is maintained by many people, not just two.

\n\n\n\n

On the landing page for the project is a call out to “Share Your Story” for consideration in future editions. The HeroPress site does an amazing job of surfacing the stories behind members of the WordPress community. But there’s value in sharing those stories with the broader Open Source community too. If you help maintain WordPress in some way, I hope you’ll consider sharing your story for a future edition of the book, they all deserve to be heard.

\n\n\n\n

Closing Thoughts

\n\n\n\n

Over the past 12 years, I’ve done my best to contribute in ways that don’t just solve problems, but make the project more approachable, more sustainable, and more human.

\n\n\n\n

I recently received this DM from someone.

\n\n\n\n
\n

“Watched your talk on my way home. You did a fantastic job explaining core and the committer role. Reminded me why I’m still around and invigorated to do more. Thanks!”

\n
\n\n\n\n

It came from someone I deeply respect, someone I’ve learned a great deal from over the years.

\n\n\n\n

It’s easy to underestimate the impact even our most routine contributions can have on others, especially in Open Source, where so much of the work happens asynchronously and behind a screen.

\n\n\n\n

Messages like this remind me why I do this work. I hope others have found value or inspiration in what I’ve shared. And if my story, my talk, or my essay helps even a few people feel more connected or inspired to stay involved, then it’s all been worth it.

\n\n\n\n

Here’s to year 13 and beyond. \"❤\"

\n\n\n\n
\n\n\n\n

“Props” Anniversaries: Ten, Eleven.

\n\n\n\n

Commit-iversaries: Two, Five, Six.

\n\n\n\n

Featured image credit: “A couple of bookshelves with colorful books on a stone wall” by mdburnette/ CC0 1.0

\n

The post 12 Years Contributing to WordPress appeared first on Jonathan Desrosiers.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Jul 2025 11:52:32 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:19:\"Jonathan Desrosiers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:39;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:77:\"Open Channels FM: How to Pitch Stories That Matter in the WordPress Community\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=100715\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:84:\"https://openchannels.fm/how-to-pitch-stories-that-matter-in-the-wordpress-community/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:208:\"In this Media Playbook episode, Rae Morey and Adam Weeks discuss effective pitching for WordPress stories, covering what makes a story newsworthy, and providing practical advice for successful media outreach.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Jul 2025 08:27:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:40;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:83:\"Open Channels FM: With Your New Site, Start With Content, Even if the Plan is Messy\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=100410\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:88:\"https://openchannels.fm/with-your-new-site-start-with-content-even-if-the-plan-is-messy/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:333:\"When a business first starts creating content, it often looks chaotic. There’s not always a strategy. You try a few blog posts, maybe some tutorials or listicles, toss in a few keywords you think matter, and hope something sticks. And that’s okay. In fact, that messy start is what helps shape your future strategy. The […]\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Tue, 08 Jul 2025 07:17:58 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:41;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"Tammie Lister: What if we paused default themes?\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://binatethoughts.com/?p=2346\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"https://binatethoughts.com/what-if-we-paused-default-themes/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:5710:\"

Before I begin this post, I am writing it not expecting change, but rather sharing my opinion. It is the opinion of someone who has themes both default and working with them from agencies to exploration, threaded through their life. I say this with a passion for what themes were, are, and I see evolving into. I am also focusing on a pause, not a stop or hard point. This is a suggestion, a thought I am working through myself.

\n\n\n\n

The past

\n\n\n\n

The default themes worked for us as a project in WordPress. They were both a call to unify in work, and also allowed us something to focus on testing the features of the year. They were also a way to close out the year; historically, many switched to them to showcase.

\n\n\n\n

Another thing the default themes have done well is showcase different aspects of WordPress. One could argue that having a theme focus is key for everyone. Similarly, many writers use it as a basis for their content, drawing on it as fuel. It was an end to the year for many, although I would self-reflect, as the years have gone by, this has waned. Again, this is a personal reflection.

\n\n\n\n

Today

\n\n\n\n

For a long time, whether we like to admit it or not, the default theme process has been more complex and disjointed. It hasn’t been as much about testing features as many weren’t theme visible.

\n\n\n\n

Each default theme currently incurs a high maintenance cost. This goes over the code in support. I am reluctant to recommend anything in core that adds to the bundled theme debt at this time, considering there is still a backlog. To be clear, I want to see significant product benefits before recommending it as a course of action.

\n\n\n\n

Themes have changed

\n\n\n\n

Themes are a sliding scale of complexity, ranging from the quick brew weekend, a few hours of JSON for a personal site, to the large-scale enterprise theme founded on a complex design system, an extensive pattern library, and variations. Themes today are different, and anyone who is creating them knows this. Anyone not creating them also knows this, which is where the next bit comes in.

\n\n\n\n

The education piece

\n\n\n\n

One of the loudest comments in favour of having a default theme is that it brings education. Whilst this is true, education once a year isn’t useful. We need to consider the themes that are relevant today, and to do that, we need to examine all the pieces and their respective use cases. How are different people making themes? How are individuals experimenting? How are agencies scaling? How are people using themes today, and where are they stuck?

\n\n\n\n

What a theme is needs to be reconsidered

\n\n\n\n

The strongest point for pausing this year is to take a moment as a project and consider what a theme is today. What design tools are missing that we need first? What pieces do we have, and how do they go together? Where do they not go together and need to? Fix those flows first, then build amazing ‘themes’ or whatever we settle on.

\n\n\n\n

The future of a theme might be a ‘kit’ where you have a style you share. It might be something else. We haven’t paused long enough to think about it, and it’s not the same format we keep reworking in default themes.

\n\n\n\n

What else could we do instead?

\n\n\n\n

Here are a few things that could be done with all the people and effort a theme release typically takes. It’s worth noting that they require a lot, which is why these are in much greater demand at this time.

\n\n\n\n
    \n
  • Education: Many people still don’t understand or haven’t fully explored the potential of block themes. Taking time for this collectively could be a powerful experience. It also helps the ecosystem, agencies and products.
  • \n\n\n\n
  • Improve the design tools for themes: By adding features such as adaptive controls and other missing pieces, redirecting the effort that would have gone into the default theme into the core editor itself. This benefits everyone and all themes.
  • \n\n\n\n
  • Rejuvenate the community theme project: This moves it beyond being a one-time event and could include various types of experiments. Allow exploration of what a theme is.
  • \n\n\n\n
  • Identify the areas where the themes are not working out: Improve this with tools and also within the core itself. This goes beyond the design tools and into the system of themes themselves.
  • \n
\n\n\n\n

A pause is not a stop

\n\n\n\n

I chose this title because I am suggesting a pause, although I struggle to see ‘when’ we would need them, but of course, things change. As a project, WordPress should also release more experiments on what a theme should be today. That’s been the issue, and as a result, the default theme has become such a hot topic for people.

\n\n\n\n

This is just my thought, though. If a default theme were to happen, it would be amazing and welcome. I also know it will be done incredibly well. I often reflect on the logistics and the limited resources required for incredible contributions. I always want to put them in the space where they will be most effective and move the project forward. I also think that, as a product, it makes sense to have focus, and I can’t see a default theme that fits right now. I’m open to evidence, as always, to counter that. For that, it’s up to the project to decide, not me.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 06 Jul 2025 16:57:52 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"binatethoughts.com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:42;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"Tammie Lister: June in WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:34:\"https://binatethoughts.com/?p=2340\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:45:\"https://binatethoughts.com/june-in-wordpress/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:4972:\"

Another month has passed and what a month this was, it started with WordCamp Europe and ended with a new sponsor.

\n\n\n\n

Areas of contribution

\n\n\n\n

My focus continued in the areas it had before, but I also began trying to work more product work into this. I also attended the contribution day at WordCamp Europe, as well as the event itself. I had many great conversations that fueled me throughout the month.

\n\n\n\n

Some stats this month (it’s worth noting I also did a lot of commenting, feedback and other activities outside of ticket numbers but they are good to refer to):

\n\n\n\n
    \n
  • Commits: 4
  • \n\n\n\n
  • Closed tickets: 44
  • \n\n\n\n
  • Gave indepth feedback: 32 (this is worth calling out as often requires time around product and design).
  • \n
\n\n\n\n

I have also been exploring how to optimise flows, such as rapid note-taking, and speed up more triage processes.

\n\n\n\n
    \n
  • Backlog: My focus was on closing tickets and also on the ancient list which is to clear down.\n
      \n
    • Another focus on the Gutenberg repo and clearing up the ‘needs design’ to be a true reflection of that state.
    • \n
    \n
  • \n\n\n\n
  • Extensibility: Reviewing and verifying if issues are still valid, while also engaging in conversations about next steps.
  • \n\n\n\n
  • Bundled themes: Cleared out things for potentially including in next release.
  • \n
\n\n\n\n

I also explored limits with dataViews and other areas of the editor, and as a result, encountered issues. This is always beneficial to do, as I learn each time where the boundary problems lie.

\n\n\n\n

Sharing the journey

\n\n\n\n

This month saw the opportunity to share my journey in contribution in a conversation with Marcel Bootsman at WCEU for Kinsta. I also got to be on the OpenChannels.fm talking about the evolving landscape of core contribution and company sponsorship, with Tim and Zach from BigScoots with the amazing Adam Weeks joining us.

\n\n\n\n

I continued to reflect on the learnings from the work I am doing. I wrote about ‘Defining Roadmaps in the Open‘ and ‘Optimising Triage and Review Processes in WordPress using AI‘.

\n\n\n\n

Upcoming plans for contribution

\n\n\n\n

I am allowing July to take shape as it unfolds, but to start with, this work will form the foundation. I also want to explore how I can incorporate some of my outside product management experience a bit more.

\n\n\n\n
    \n
  • Backlog:\n\n
  • \n\n\n\n
  • Core editor:\n
      \n
    • Continue on making sure ‘needs design’ label is a true indicator.
    • \n\n\n\n
    • Move on to the triage of the components label.
    • \n\n\n\n
    • Components: see where can help with documentation – for example how can things be surfaced on make easier.
    • \n
    \n
  • \n
\n\n\n\n

Sponsors this month

\n\n\n\n
\n

I now have these sponsors: BigScoots, Greyd, Kinsta, ServMask, Aaron Jorbin, Tim Nash, Jeffrey Paul, Felipe Santos and Scot Rumery. To everyone who sponsored me and helped me secure sponsorship, thank you.

\n\n\n\n

New sponsor ServMask

\n\n\n\n

Those of you who are keen-eyed will notice that a new sponsor has been added to that list. I want to thank ServMask for their sponsorship. It makes a difference to the work I can do to have companies and individuals support me.

\n\n\n\n

Want to sponsor me? You can through GitHub.

\n\n\n\n

There is always sponsorship, of course, that is volunteered, and I’ll do as much as possible whilst still keeping things flowing – let’s get contributing!

\n
\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sun, 06 Jul 2025 15:37:28 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:18:\"binatethoughts.com\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:43;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"Gravatar: User Profile Page Examples to Inspire Your Website’s Design\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:32:\"http://blog.gravatar.com/?p=1496\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:64:\"https://blog.gravatar.com/2025/07/04/user-profile-page-examples/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:32841:\"

A winning profile page requires two things working in harmony:

\n\n\n\n
    \n
  1. First, a compelling design that showcases user identity. 
  2. \n\n\n\n
  3. Second, frictionless onboarding that gets users to actually complete their profiles.
  4. \n
\n\n\n\n

Most teams nail the design but fumble on the experience. Users abandon beautifully crafted pages because they’re tired of uploading the same photo and entering the same bio for the hundredth time. Your conversion rate flatlines while you wonder why your pixel-perfect interface isn’t working.

\n\n\n\n

We analyzed 15 top-performing profile designs. The winners combine great design with smart data integration. Here’s a snapshot:

\n\n\n\n
    \n
  • GitHub’s contribution graphs turns coding into a game, while using Gravatar’s data to instantly populate developer avatars.
  • \n\n\n\n
  • WordPress.com creates consistent profiles across millions of sites by tapping into existing user data.
  • \n\n\n\n
  • Slack eliminates redundant profile setup by recognizing users’ existing information.
  • \n
\n\n\n\n

The pattern: These platforms skip building avatar systems from scratch. They focus on features that actually differentiate them, like GitHub’s contribution graphs or WordPress.com’s activity streams.

\n\n\n\n

What you’ll discover:

\n\n\n\n
    \n
  • The components of winning profile pages.
  • \n\n\n\n
  • 15 profile examples that actually convert.
  • \n\n\n\n
  • Why top platforms use existing infrastructure instead of reinventing the wheel.
  • \n
\n\n\n\n

Ready to fix your profile problem? Let’s dive in.

\n\n\n\n

What Actually Makes Profile Pages Convert

\n\n\n\n

What Actually Makes Profile Pages Convert

\n\n\n\n

A converting profile page transforms visitors into engaged users through strategic design decisions.

\n\n\n\n

Four core elements separate winning profiles from the rest:

\n\n\n\n

Visual Hierarchy That Works

\n\n\n\n

Profile photos positioned prominently drive immediate recognition. Research shows profiles with photos receive 14x more views and make users 36x more likely to receive messages.

\n\n\n\n

Smart platforms leverage this psychology. Photos anchor the layout. Essential information clusters nearby. Secondary details push down or hide behind tabs. The result? Users find what they need instantly.

\n\n\n\n

Example: GitHub positions avatars in the left column where Western readers naturally start scanning. LinkedIn’s mobile app leads with the profile photo, capitalizing on the fact that 63% of web traffic comes from mobile devices.

\n\n\n\n

Purpose-Driven Design

\n\n\n\n

Single-purpose profiles outperform feature-bloated alternatives. Pick one primary goal. Execute flawlessly. Everything else becomes secondary or disappears.

\n\n\n\n

Portfolio showcase? Show the work. Professional networking? Highlight credentials. Community building? Surface engagement metrics.

\n\n\n\n

Example: Stack Overflow focuses solely on technical reputation – no social features, no messaging, just pure expertise visualization. This laser focus helped them become the de facto Q&A platform for developers.

\n\n\n\n

User Control = User Retention

\n\n\n\n

Customizable profiles keep users engaged. When people shape their digital presence, they invest emotionally. That investment translates to return visits.

\n\n\n\n

Complete LinkedIn profiles receive 30% more profile views than incomplete ones. The best implementations balance flexibility with constraints – too many options overwhelm, too few feel restrictive.

\n\n\n\n

Example: Discord allows custom status messages and per-server avatars, letting users express different facets of their personality across communities.

\n\n\n\n

Three-Click Rule

\n\n\n\n

Every profile action needs to be accessible within three clicks. Each additional click loses users.

\n\n\n\n

Successful platforms use either tabbed interfaces or single-scroll designs. Both help users to quickly find the information they need. The choice depends on your content density and mobile constraints, not designer preference.

\n\n\n\n

Essential Profile Components (Ranked by Impact)

\n\n\n\n

Profile components are user interface elements that directly impact engagement metrics and conversion rates.

\n\n\n\n

1. Profile photo

\n\n\n\n
\"Upload
\n\n\n\n

The trust anchor of any profile. No photo means no trust. Poor quality photos perform almost as badly.

\n\n\n\n

Technical requirements that matter:

\n\n\n\n\n\n\n\n

The shortcut major platforms use: Gravatar handles all of this automatically. Users upload once, and their photo appears everywhere. No image processing pipeline to build. No storage costs. No optimization headaches. Just add their email hash and move on to features that actually differentiate your platform.

\n\n\n\n

2. Bio section

\n\n\n\n
\"Bio
\n\n\n\n

The narrative that connects. Optimal length varies by platform, but the principle remains: force clarity through constraints.

\n\n\n\n

Instagram’s 150-character limit drives concise, impactful bios. LinkedIn allows 2,000 characters, but best practices suggest keeping profile summaries to 300 words or less for maximum engagement.

\n\n\n\n

Winning bios include:

\n\n\n\n
    \n
  • Clear value proposition (first 50 characters).
  • \n\n\n\n
  • Credibility markers.
  • \n\n\n\n
  • Personality touches.
  • \n\n\n\n
  • Call-to-action.
  • \n
\n\n\n\n

3. Connection Mechanisms

\n\n\n\n
\"Contact
\n\n\n\n

Where engagement becomes action. Make it obvious how to connect. Make it easy to execute.

\n\n\n\n

Core features:

\n\n\n\n
    \n
  • Follow/connect buttons above the fold.
  • \n\n\n\n
  • Clear messaging options.
  • \n\n\n\n
  • Permission controls.
  • \n\n\n\n
  • Export capabilities.
  • \n
\n\n\n\n

Professional headshots increase perceived competence by +0.94 points and influence by +1.29 points. Yet most platforms still make users jump through hoops to connect.

\n\n\n\n

The Infrastructure Reality

\n\n\n\n

Building these from scratch takes weeks. Database schemas, image optimization, and privacy compliance – each component requires specialized expertise.

\n\n\n\n

Gravatar already serves billions of avatars for WordPress.com, Slack, GitHub, and OpenAI. Their evolution brings a complete profile solution: one integration, full identity system. While competitors build profile systems, smart platforms leverage existing infrastructure and focus on unique value.

\n\n\n\n

15 Profile Examples that Actually deliver

\n\n\n\n

Developer Platforms

\n\n\n\n

1. GitHub – The Contribution Graph Pioneer

\n\n\n\n

GitHub’s green contribution squares changed developer behavior. The visual representation of daily commits gamifies consistency without explicit rewards.

\n\n\n\n
\"github
\n\n\n\n
    \n
  • Hero element: 365-day activity visualization.
  • \n\n\n\n
  • Conversion driver: Pinned repositories (6 maximum).
  • \n\n\n\n
  • Mobile optimization: Collapsible sections preserve space.
  • \n\n\n\n
  • Technical note: Uses Gravatar for avatar fallback.
  • \n\n\n\n
  • Steal this: Visual activity drives engagement.
  • \n
\n\n\n\n

The Profile README feature lets developers create dynamic showcases with real-time stats and custom content. Markdown + APIs = living portfolios. This single feature spawned an entire ecosystem of profile enhancement tools.

\n\n\n\n

2. Stack Overflow – Gamification Done Right

\n\n\n\n

Stack Overflow proves single-metric focus works. Everything revolves around reputation points.

\n\n\n\n
\"Stack
\n\n\n\n
    \n
  • Scoring system: Clear value exchange (answers = points).
  • \n\n\n\n
  • Badge collection: 95 distinct achievements.
  • \n\n\n\n
  • Information hierarchy: Reputation dominates visually.
  • \n\n\n\n
  • Steal this: One clear success metric.
  • \n
\n\n\n\n

Their discontinued “Developer Story” feature proved that even successful platforms overcomplicate. Returning to reputation-first design re-engaged their core audience. Sometimes less truly is more.

\n\n\n\n

3. GitLab – The Everything Dashboard

\n\n\n\n

GitLab emphasizes team collaboration over individual achievement. Every contribution is visible, and every interaction is tracked.

\n\n\n\n
\"gitlab
\n\n\n\n
    \n
  • Activity feeds: Complete transparency.
  • \n\n\n\n
  • Project integration: Seamless repository connection.
  • \n\n\n\n
  • Team visibility: Organizational context is clear.
  • \n\n\n\n
  • Steal this: Transparency builds trust.
  • \n
\n\n\n\n

Creative Showcases

\n\n\n\n

4. Dribbble – Visual-First Excellence

\n\n\n\n

Dribbble’s 400×300px shot grid maximizes visual impact. Their 2023 redesign philosophy was: “less noise, less clutter – more beautiful pixels.”

\n\n\n\n
\"Alt:
\n\n\n\n
    \n
  • Grid optimization: Rapid visual scanning. 
  • \n\n\n\n
  • Hover interactions: Preview without commitment.
  • \n\n\n\n
  • Social proof: View and like counts are visible.
  • \n\n\n\n
  • Steal this: Minimize UI, maximize content.
  • \n
\n\n\n\n

Pro accounts unlock customization – header images, welcome messages, and shot reorganization. Monetization through enhancement, not restriction.

\n\n\n\n

5. Behance – The Case Study Master

\n\n\n\n

Behance champions comprehensive project stories over individual images. Adobe integration made it the default for Creative Cloud users.

\n\n\n\n
\"example
\n\n\n\n

Project depth: Multiple images per entry.
Rich media: Video, 3D, animation support.
Context provision: Process documentation encouraged.
Steal this: Show the journey, not just the destination.

\n\n\n\n

6. ArtStation – Industry-Specific Focus

\n\n\n\n

ArtStation owns game and film portfolios through specialized features. Generic platforms can’t compete with niche expertise.

\n\n\n\n
\"
\n\n\n\n

4K image support: Industry-standard quality.
Software tags: Tools and workflows are visible.
Marketplace integration: Direct monetization.
Steal this: Deep specialization wins.

\n\n\n\n

Content Platforms

\n\n\n\n

7. Medium – Minimalism That Converts

\n\n\n\n

Medium profiles strip away everything except what matters: your words and your audience.

\n\n\n\n
\"Alt:
\n\n\n\n
    \n
  • Typography focus: Clean reading experience prioritizes content. 
  • \n\n\n\n
  • Clap engagement: A Simple appreciation system that actually works.
  • \n\n\n\n
  • Clean metrics: Followers, following, nothing else cluttering the view. 
  • \n\n\n\n
  • Steal this: Radical simplicity drives engagement.
  • \n
\n\n\n\n

Medium achieved profitability in 2024 by doubling down on human storytelling. Their profile pages offer header customization and infinite scroll, but the real lesson? Sometimes less truly is more. No vanity metrics. No feature bloat. Just writers and readers connecting through stories.

\n\n\n\n

8. WordPress.com – The Network Effect

\n\n\n\n

WordPress.com leverages Gravatar for network-wide consistency. One avatar, thousands of sites.

\n\n\n\n
\"\"
\n\n\n\n

Multi-site integration: Activity aggregation
Universal identity: Single sign-on benefits
Cross-platform recognition: Comments tracked globally
Steal this: Reduce friction everywhere

\n\n\n\n

The Gravatar Enhanced plugin adds privacy features including no referrer information by default and an opt-in proxy service. It includes a Gravatar Profile Block for displaying user information dynamically. Hovercards are enabled by default to increase engagement.

\n\n\n\n

9. Dev.to – Community-Centric Profiles

\n\n\n\n

Dev.to prioritize collective learning over individual achievement. Participation matters more than perfection.

\n\n\n\n
\"dev.to
\n\n\n\n
    \n
  • Discussion highlights: Best contributions featured.
  • \n\n\n\n
  • Learning transparency: Reading lists are public.
  • \n\n\n\n
  • Reaction diversity: Beyond simple likes.
  • \n\n\n\n
  • Steal this: Community value over vanity metrics.
  • \n
\n\n\n\n

Social Platforms

\n\n\n\n

10. Discord – Personality-Driven Design

\n\n\n\n

Discord’s per-server profiles let users wear different hats in different communities. One account, multiple personalities.

\n\n\n\n
\"discord
\n\n\n\n
    \n
  • Custom statuses: 128-character expression.
  • \n\n\n\n
  • Server showcase: Community membership visible.
  • \n\n\n\n
  • Nitro features: Premium customization options.
  • \n\n\n\n
  • Steal this: Context-aware identity.
  • \n
\n\n\n\n

11. Spotify – Data as Identity

\n\n\n\n

Spotify Wrapped proves people love sharing their data through their user profiles when presented beautifully. Listening history becomes a form of social currency.

\n\n\n\n

\"spotify

\n\n\n\n

\n\n\n\n
    \n
  • Data visualization: Musical taste graphs.
  • \n\n\n\n
  • Playlist curation: User as tastemaker.
  • \n\n\n\n
  • Sharing optimization: One-click social posts.
  • \n\n\n\n
  • Steal this: Make data shareable.
  • \n
\n\n\n\n

12. Twitch – Revenue-Focused Profiles

\n\n\n\n

Twitch optimizes for creator monetization without apology. Money matters, design supports it.\"twitch\"

\n\n\n\n
    \n
  • Subscribe prominence: Can’t miss the CTA.
  • \n\n\n\n
  • Schedule display: Reliability builds an audience. 
  • \n\n\n\n
  • Clip showcase: Best moments surface automatically.
  • \n\n\n\n
  • Steal this: Business goals drive design.
  • \n
\n\n\n\n

Business Tools

\n\n\n\n

13. LinkedIn – The Professional Standard

\n\n\n\n

LinkedIn profiles work because they’re discoverable within the platform. Every field functions as a searchable element for recruiters and connections.

\n\n\n\n
\"linkedin
\n\n\n\n
    \n
  • Keyword integration: Natural optimization.
  • \n\n\n\n
  • Skill validation: Peer endorsements.
  • \n\n\n\n
  • Content platform: Native publishing power.
  • \n\n\n\n
  • Steal this: Make profiles search-friendly.
  • \n
\n\n\n\n

LinkedIn optimization tools show an average 132% increase in profile views. Strategic profile optimization drives real opportunities – candidates with comprehensive profiles have a 71% higher chance of job interviews.

\n\n\n\n

14. ProductHunt – Maker Credibility

\n\n\n\n

ProductHunt profiles display your complete launch history with upvote counts, creating a track record that builds credibility for future product launches.

\n\n\n\n

.

\n\n\n\n
    \n
  • Launch timeline: Track record visible.
  • \n\n\n\n
  • Upvote accumulation: Social proof currency.
  • \n\n\n\n
  • Collection curation: Tastemaker status.
  • \n\n\n\n
  • Steal this: History builds credibility.
  • \n
\n\n\n\n

15. Figma – Collaboration Visualization

\n\n\n\n

Figma profiles showcase collaborative work by default – files display team ownership, not just individual creators. This reflects how modern design actually happens.

\n\n\n\n
\"Figma
\n\n\n\n
    \n
  • File previews: Automatic portfolio generation.
  • \n\n\n\n
  • Team context: Collaborative credentials.
  • \n\n\n\n
  • Plugin development: Technical skills showcase.
  • \n
\n\n\n\n

Steal this: Modern work is teamwork.

\n\n\n\n

Why Mobile Profile Optimization is a Must

\n\n\n\n

Here’s the reality check: Your beautifully designed desktop profile? Most users will never see it.

\n\n\n\n

It differs between segments like age group and industry, but 96.3% of internet users access via mobile phones. Yet most profile pages still treat mobile as an afterthought – cramming desktop designs into smaller screens and wondering why engagement tanks.

\n\n\n\n

The paradox: Desktop users spend ~77.8% longer per visit, while mobile users generate 81% higher visit volume. This isn’t about choosing sides. It’s about understanding each platform’s strengths and designing accordingly.

\n\n\n\n

Mobile profile optimization prioritizes thumb-zone interaction and vertical information architecture. Get this wrong, and you lose the majority of your audience before they even engage.

\n\n\n\n

Mobile Constraints That Matter

\n\n\n\n

Touch Targets

\n\n\n\n\n\n\n\n

Information Architecture

\n\n\n\n\n\n\n\n

Performance Requirements

\n\n\n\n
    \n
  • 3-second maximum load time.
  • \n\n\n\n
  • Lazy loading below the fold.
  • \n\n\n\n
  • Image optimization is critical.
  • \n
\n\n\n\n

Platform Solutions Worth Stealing

\n\n\n\n

LinkedIn: Card-based sections create digestible chunks. Each card is self-contained, swipeable, and complete.

\n\n\n\n

GitHub: Collapsible sections preserve desktop density. Critical info visible, details on demand.

\n\n\n\n

Discord: Native gestures for navigation. Swipe between servers feels natural, reduces cognitive load.

\n\n\n\n

Implementation Without the Headache

\n\n\n\n

Efficient profile implementation leverages existing infrastructure to reduce development time and maintenance burden.

\n\n\n\n

Build vs. Buy Reality Check

\n\n\n\n

DIY Timeline:

\n\n\n\n
    \n
  • Week 1-2: Database schema and API.
  • \n\n\n\n
  • Week 3: Frontend components.
  • \n\n\n\n
  • Week 4: Image handling and optimization.
  • \n\n\n\n
  • Ongoing: Security updates and maintenance.
  • \n
\n\n\n\n

The Gravatar Approach:

\n\n\n\n

Gravatar already powers avatars across WordPress.com, Slack, GitHub, and OpenAI. Their evolution brings a complete profile solution:

\n\n\n\n

Current Gravatar Reality:

\n\n\n\n\n\n\n\n

The Gravatar Approach:

\n\n\n\n

Gravatar’s Profile-as-a-Service API provides:

\n\n\n\n
    \n
  • Full profile data access (avatars, bios, interests, verified accounts) 
  • \n\n\n\n
  • Open API with no licensing requirements 
  • \n\n\n\n
  • 80+ million existing profiles 
  • \n\n\n\n
  • Automatic profile syncing across platforms 
  • \n\n\n\n
  • Native mobile SDKs for iOS and Android 
  • \n
\n\n\n\n

Learn more: https://docs.gravatar.com/

\n\n\n\n

Critical Technical Decisions

\n\n\n\n

Image Handling

\n\n\n\n\n\n\n\n

Privacy Compliance

\n\n\n\n
    \n
  • GDPR consent mechanisms.
  • \n\n\n\n
  • Data portability options.
  • \n\n\n\n
  • User-controlled sharing (Gravatar’s approach).
  • \n
\n\n\n\n

Performance Optimization

\n\n\n\n
    \n
  • Edge caching strategies.
  • \n\n\n\n
  • Progressive enhancement.
  • \n\n\n\n
  • Core Web Vitals compliance.
  • \n
\n\n\n\n

What’s Next for Profile Design

\n\n\n\n

Three trends reshape profile architecture:

\n\n\n\n

Unified Identity Systems

\n\n\n\n

Gravatar’s vision: One profile, updated everywhere. Email becomes the universal identity anchor.

\n\n\n\n

Users demand control. They own the data, and platforms display it. The winning platforms embrace this shift. 85% of adults worldwide want additional steps to protect online privacy – unified systems deliver both convenience and control.

\n\n\n\n

Privacy-First Architecture

\n\n\n\n

Granular sharing controls become a competitive advantage. Users specify what shares are where. Trust drives retention.

\n\n\n\n

Gravatar’s model: Users decide what’s shared, and platforms respect those decisions. This approach aligns with evolving regulations while building user confidence.

\n\n\n\n

Stop Building. Start Converting.

\n\n\n\n

Profile pages fail when built in isolation. Each platform reinvents the wheel, users suffer through repetitive onboarding, and developers waste weeks on solved problems.

\n\n\n\n

The solution is clear: Study these 15 examples. Steal what works. Then decide – build from scratch or leverage existing infrastructure?

\n\n\n\n

Your Next Move:

\n\n\n\n
    \n
  1. Audit your current profile system against these examples
  2. \n\n\n\n
  3. List the gaps costing you conversions
  4. \n\n\n\n
  5. Calculate the real cost of DIY development
  6. \n\n\n\n
  7. Consider unified identity solutions like Gravatar
  8. \n
\n\n\n\n

Using the Gravatar API for importing profile data helps establish attractive and consistent profile designs. This improves the overall look of your application and guarantees the accuracy of profile information.

\n\n\n\n

Gravatar’s profile integration is already revolutionizing user profile design for leading websites such as Pocket Casts and WordPress.com. These platforms use Gravatar’s features to enhance user engagement and provide a more dynamic profile experience to users worldwide.

\n\n\n\n

Stop building profile systems. Start building profile experiences that convert Join the thousands of people customizing their unique profiles today with Gravatar!  .

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 04 Jul 2025 15:38:51 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:11:\"Ronnie Burt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:44;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"Open Channels FM: Emojis, Exclamation Marks, and Reading the Room in Text\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=100417\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"https://openchannels.fm/emojis-exclamation-marks-and-reading-the-room-in-text/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:173:\"Tone in writing significantly influences communication, especially in async messages, where emojis, punctuation, and warmth affect how messages are received and interpreted.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 04 Jul 2025 07:28:24 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:45;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:42:\"Aaron Jorbin: My May And June in WordPress\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"https://aaron.jorb.in/?p=208437\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"https://aaron.jorb.in/my-may-and-june-in-wordpress/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:5288:\"

My May and June in WordPress focused on helping get 6.8.2 set up for success and gardening old trac tickets.

\n\n\n\n

This was my first time putting together the squad for a minor release that I wasn’t going to be a member of. I coordinated with a few active committers, team reps, and the 6.8.0 release coordinators to review the folks who volunteered to help lead a maintenance release. The first step was identifying from the volunteers one person who could be the primary lead. This involved reaffirming that people could still make the commitment. Once the first person was identified, we looked for folks to compliment them and I confirmed their availability. After that, I announced it and the 6.8.2 team got off to a quick start getting ready for the next release of WordPress.

\n\n\n\n

I’ve also been spending some time looking at some long neglected tickets. In order to not feel stuck, I’ve moved between a few reports on trac. The close report (which is now under 200), one looking at tickets with a patch that haven’t received attention in a long time and the ancient report. Over half the tickets I touched during this span of time are now closed.

\n\n\n\n

Another task I did was once again participate in the Share Your Pride photo drive. I added a total of 32 photos though not all are in the photo drive. One of my favorites is used as the featured image on this post \"☺\"

\n\n\n\n

By the numbers

\n\n\n\n

During these two months, I contributed to 131 tickets on trac, made 4 commits to core, received 10 props, put together the squad for a minor release, wrote 1 make/core post, added 32 photos to the photo directory, and led one bug scrub.

\n\n\n\n

I had 20 sponsors these months: Jeffrey Paul, philipjohn, Zach Stepek, Keanan Koppenhaver, George Mamadashvili, Russell Heimlich , Austin Ginder, Adam Silverstein, Felix Arntz, Jonathan Desrosiers, Brian Coords, mklute101, Tim Nash, Jay Hoppie, Dan Knauss, Kevin Cristiano, Kinsta, Jake Spurlock, Andy Fragen and one who wishes to remain anonymous. Thank you for believing in and supporting my contributions to Open Source.

\n\n\n\n

\n\n\n\n

Previous: March/April 2025, February 2025, January 2025, 2024 as a whole, October 2024, September 2024, August 2024, July 2024, June 2024, May 2024, April 2024, March 2024, February 2024, January 2024, December 2023, November 2023

\n

The post My May And June in WordPress appeared first on Aaron Jorbin.

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 03 Jul 2025 19:02:58 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:6:\"jorbin\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:46;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"Open Channels FM: Clarity Beats Brevity in Async Work\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:33:\"https://openchannels.fm/?p=100390\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:60:\"https://openchannels.fm/clarity-beats-brevity-in-async-work/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:195:\"In async work, short messages often lead to confusion. Being clear and detailed helps everyone understand without endless back-and-forth. Good communication is about being useful, not just quick.\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Thu, 03 Jul 2025 11:38:47 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:47;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:51:\"Peter Wilson: Unit testing WordPress plugin headers\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:30:\"https://peterwilson.cc/?p=6615\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:61:\"https://peterwilson.cc/unit-testing-wordpress-plugin-headers/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:656:\"

WordPress plugins require a number of headers to be included in the plugin file for them to render correctly in the dashboard. If releasing a plugin on WordPress.org then a number of additional headers are required in the readme file.

\n\n\n\n

The problem I have is that I can never remember which header goes where. Each time I write a plugin, I have to spend time reading the docs and making sure everything is in the correct location.

\n\n\n\n

Continue reading Unit testing WordPress plugin headers on peterwilson.cc

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 Jul 2025 21:43:10 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:12:\"Peter Wilson\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:48;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"bbPress: bbPress 2.6.14 is out!\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:29:\"https://bbpress.org/?p=245323\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"https://bbpress.org/blog/2025/07/bbpress-2-6-14-is-out/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:726:\"

bbPress 2.6.14 is a minor release that fixes 20 issues. For everyone running bbPress 2.6, feel free to update at your earliest convenience. \"🍯\"

\n\n\n\n

This release improves Akismet, BuddyPress, and PHP 8.2 support, moderation terms, search, and more!

\n\n\n\n

(All of these fixes have already been merged into trunk/2.7.)

\n\n\n\n

Thank you to everyone who contributed to this bbPress release! \"🙏\"

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 Jul 2025 18:15:15 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:17:\"John James Jacoby\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:49;a:6:{s:4:\"data\";s:21:\"\n \n \n \n \n \n \n \n \n \n \n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"WPTavern: #175 – Jennifer Schumacher on Learning From Agency Mistakes\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:48:\"https://wptavern.com/?post_type=podcast&p=197160\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:85:\"https://wptavern.com/podcast/175-jennifer-schumacher-on-learning-from-agency-mistakes\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:48363:\"
Transcript
\n

[00:00:19] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.

\n\n\n\n

Jukebox is a podcast which is dedicated to all things WordPress, the people, the events, the plugins, the blocks, the themes, and in this case, learning from mistakes in website development agencies.

\n\n\n\n

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

\n\n\n\n

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.

\n\n\n\n

So on the podcast today, we have Jennifer Schumacher.

\n\n\n\n

Jennifer has been working with WordPress and web development for over 15 years. Her journey began with a spark of curiosity in university, building her first WordPress website after a YouTube crash course. Then evolving into freelance gigs, team collaborations, and eventually running a white label agency working alongside other agencies around the world.

\n\n\n\n

Jennifer’s experiences have exposed her to the highs and lows of agency life. Projects that run smoothly, but also cultures that can become toxic, people burning out, and the all too familiar frustration of unbillable hours, and broken processes.

\n\n\n\n

This inspired Jennifer’s lightning talk at WordCamp Europe 2025, where she shared some of the most common, and painful, mistakes she’s seen agencies make, and what can be learned from them.

\n\n\n\n

Jennifer walks us through her path in the WordPress world, and we discuss three real world mistakes agencies make. Web support that drains your soul, the design handoff from hell, and work more, bill less, and smile anyway.

\n\n\n\n

We talk through support, bottlenecks, frustrating design to development handoffs, and the dilemma of over servicing clients without fair compensation.

\n\n\n\n

Jennifer shares her candid perspective on why processes and honest communication matter, not just for the bottom line, but for the mental health and building sustainable teams. She also discusses how transparency, learning from failure, and continually improving processes can improve agency life.

\n\n\n\n

Jennifer’s approach is refreshingly open about both the mistakes and the solutions, aiming to help others avoid repeating them.

\n\n\n\n

If you found yourself frustrated with agency workflows, or are hoping to build a healthier business in the WordPress ecosystem, this episode is for you.

\n\n\n\n

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

\n\n\n\n

And so without further delay, I bring you, Jennifer Schumacher.

\n\n\n\n

I am joined on the podcast today by Jennifer Schumacher. Hello, Jennifer.

\n\n\n\n

[00:03:26] Jennifer Schumacher: Hello. Nice to be here.

\n\n\n\n

[00:03:28] Nathan Wrigley: We’re here on Contrib Day. It’s WordCamp Europe 2025. Now, because it’s Contrib Day, that means you haven’t yet done what it is that you are going to do at WordCamp Europe. But you’ve got a presentation, like a lightning talk. So you’ve got 10 minutes to stand on the stage.

\n\n\n\n

The idea is that you are going to be talking about agency, WordPress agencies, how they mess up, I’m going to use that word, and how they can learn from their mistakes.

\n\n\n\n

So before we get into that, just tell us a little bit about you.

\n\n\n\n

[00:03:56] Jennifer Schumacher: I started web development about 15 years ago, maybe a even more even. I was at university, no money, on a freelance platform, and somebody asked me if I could build a website. I checked on YouTube, okay WordPress. I said yes, and then I sold a website. No idea how to do it, honestly. But then YouTube helped me figure things out, and that’s how I started and fell in love with it. No way to turn back.

\n\n\n\n

Went for it, did a couple of freelance gigs and then, you know, joining other team members, joining other people in the freelance world, building like groups, working on stuff together, working on projects. And then it grew, got bigger. We got bigger projects. We built a white label team working for the agencies, collaborating with other agencies. And that’s what I have done over the past years. So that’s a bit of my background.

\n\n\n\n

[00:04:47] Nathan Wrigley: Yeah, that’s perfect. Yeah, that’s great. I think your story sounds like a lot of people’s stories in that they, if you began 15 years ago, the web was still very much discovering what it was going to be. And you drop in and learn as you went along. I think maybe now that’s a little bit more difficult. I think if you drop in these days, it’s maybe more challenging. There’s so much more competition out there and things like that. yeah, your story kind of mimics mine except that you grew an agency and I didn’t, I just stuck as a one person, and that kind of worked out for me.

\n\n\n\n

[00:05:15] Jennifer Schumacher: Yeah, it’s like the people network, right? You meet different people and then you get to know each other, and then you start learning, and then you think about the opportunities. And then either you say, okay, this is a path that I want to take, or you don’t, right?

\n\n\n\n

[00:05:27] Nathan Wrigley: And have you ever worked for other people in website building? Have you worked for other agencies, or been an employee? Or has it always been you and the agencies that you have run?

\n\n\n\n

[00:05:36] Jennifer Schumacher: I never have been like an employee per se, so it was more like a contractor, but either freelance or for the agency that we built. But the nice thing, and why I really loved this was it was in different roles, right? Sometimes I was the designer in the beginning, or I was the developer. Later on I did develop myself, but that was in the WP Bakery days. So I don’t do that anymore to be honest.

\n\n\n\n

Yeah, so it was design then more development. And then later on I moved more into project management. And then in the most recent years, there’s so many things that I, after all those years, you know, it’s nice, I love WordPress, but certain things make me sick. I was like, God, no, I don’t want this anymore.

\n\n\n\n

Certain stress levels that I’ve reached where I said, no, I don’t want to do it the same old way as usual. This is something that my talk will be about, to be honest.

\n\n\n\n

And the last couple of years have been more about process improvement. Doing things faster, less stress, and then also all these unbillable hours that many people just hide below the table. So this has been my focus for the last couple of years.

\n\n\n\n

[00:06:41] Nathan Wrigley: Okay. Well, I’ve got to say it’s very, very nice to meet somebody who’s really open and honest about their successes, but also things that they consider they could do better. Let’s use the word failures. I think most people kind of hide that stuff, but it’s really interesting that you are doing a presentation where you are raising that as, okay, I messed this up, I messed this up, I messed this up, and here’s how I took it as a, you say learning opportunity, which I suppose is the best way to parse any of those kind of things.

\n\n\n\n

Why are you doing a talk though at WordCamp? So this is kind of a more of a community question. It’s not really about the presentation itself. I’m just curious as to why, what is it that you get out of it? Do you just enjoy sort of hanging out at these events or, why have you decided to do it?

\n\n\n\n

[00:07:20] Jennifer Schumacher: How can I explain that in the best possible way? I’ve met many great people over the years, but I’ve seen many of them who got frustrated about certain things in part of the culture at the agency they worked at. I’ve seen toxic cultures as well. I’ve seen many projects that started off very nice and then it became frustrating over the time. And then towards the end, people were not getting paid according to what they actually delivered.

\n\n\n\n

I’ve seen people that later on actually quit and they said again, I don’t want to do it anymore. That they were so frustrated, especially in project management, I’ve seen a couple of them just drop out. It’s like, you know what? Not doing it anymore. And I don’t think that that’s worth it.

\n\n\n\n

If we don’t talk about what goes wrong, if we don’t acknowledge about stuff, these things that could be better, and then say, hey, you know what, let’s figure out a better path and resolve this kind of stress because we deserve a better team that’s in sync, then what are we doing? If we just continue and say, well, that’s agency life, you know? That’s how it is in agencies. No, it’s not supposed to be that way.

\n\n\n\n

If you just accept it and just go with it, then it’s going to be that way. I think it’s worth sharing that, because if you don’t ask the question, how can it be better? You’re not making anything better to be honest.

\n\n\n\n

[00:08:38] Nathan Wrigley: Okay. Thank you. So let’s hope that the wisdom that you impart will land with the people. But you’ve got this idea of three real world agency mistakes. That’s what you’re going to focus on in your 10 minutes.

\n\n\n\n

I have a question around that. So obviously you’re going to highlight the things that went wrong, explain how you tackled it. Do you ever get the sense though that there’s ever, and I’m doing air quotes, a perfect system? Have you ever landed on something where you think, okay, that’s it, I do not need to improve that thing anymore? Or is there always room for improvement?

\n\n\n\n

[00:09:09] Jennifer Schumacher: Well, that’s a good question to be honest. I’m German. Many Germans try to be perfect to be honest. But I don’t think perfect exists, and isn’t imperfect perfect. Because the thing is like, learning is a journey, so if we set up a system and then we figure out, okay, let’s try that way, and then we work with it and then see, what can we tweak, what can we improve? And isn’t that what makes it perfect, right? Because we keep improving things.

\n\n\n\n

There are new things coming out now, you know, AI is everywhere. So, are there certain things that we can use that help our system? We just keep tweaking it. So, no, perfect system. Do I want one? No. Is it fun to keep tweaking things? Yes. So I think you’re just trying to get started, build a certain setup and try to improve it over time.

\n\n\n\n

[00:09:58] Nathan Wrigley: Yeah. So that would’ve been the way I would’ve paraphrased it as well. You kind of get something which feels like it’s good for now and then the technology changes, WordPress adapts and you have to figure it out a new. Okay, that’s great.

\n\n\n\n

So there are three things that you’re going to tackle. Maybe you could’ve done 5, 10, but the time was probably the limitation. What are the three things that you are going to mention? What are the three things which agencies make as mistakes that you have encountered?

\n\n\n\n

[00:10:21] Jennifer Schumacher: First of all, I had to think a lot about, okay, which kind of situations do I want to include, right? Because over the years, you know, you collect a lot of stories, and I think the most impactful is a story. You want to talk about a specific situation where you were in. And so I was thinking about, what should I cover?

\n\n\n\n

For each story I made a nice headline. I can just quickly share those headlines, and then you think about what you think that that means.

\n\n\n\n

[00:10:46] Nathan Wrigley: Perfect.

\n\n\n\n

[00:10:47] Jennifer Schumacher: So the first one is, support that drains your soul. The second one is, the design handoff from hell. The third one is, work more, build less and smile anyway.

\n\n\n\n

[00:10:59] Nathan Wrigley: Let’s go back to the first one then. You’re going to have to say the exact wording, because I’ll probably get it wrong. What was number one again?

\n\n\n\n

[00:11:04] Jennifer Schumacher: It’s web support that drains your soul.

\n\n\n\n

[00:11:07] Nathan Wrigley: Okay, tell us, what went on here? What calamity befell you and your agency that led to that portion?

\n\n\n\n

[00:11:13] Jennifer Schumacher: I’ve seen it in many, many agencies and if, for example, once I had a agency in Switzerland and they said, we manage one point of contact for our clients. So this was mainly the project manager, right? So whenever the client wanted something, they contacted this person.

\n\n\n\n

Why was that not a good idea? Because pretty often the people that I met were just simply overworked, especially when it came to support staff. Because the client got in touch with them, they got in touch with the designer. The designer got in touch with them. They got back to the client and they were just in the middle on every little item.

\n\n\n\n

And the more you have of this kind of support work, the stressier it gets. And this is something where I’ve seen a lot of things go wrong and where I’ve seen a lot of frustration just for being the person in the middle.

\n\n\n\n

[00:11:58] Nathan Wrigley: That was something which was commonly, I want to use the word taught. People often told me it would be better to always deal with this one person, because that one person at least is this single point of contact. You can build up a relationship with them. Just prize that open a little bit. Has that led to problems, and what were those kind of problems? Was it that that person, I don’t know, maybe they are not a good communicator or something like that?

\n\n\n\n

[00:12:21] Jennifer Schumacher: Well, the thing is, that person doesn’t, it’s just a person most of the time that communicates. This person’s never resolving the issue. So for example, the client has something super simple, I want to change the position of that button. So the client asks their single point of contact. The single point of contact, they go to the developer, hey, they want to change that button. But then the developer goes back, but yeah, but this position we cannot do, it’s not recommended.

\n\n\n\n

It’s like ping pong. And let’s say changing that button takes like maybe just 30 minutes, but the entire communication about where the button should go and why not there, why it would be more recommendable to go into that spot exactly, or which size or animation they want. These kind of details take maybe two and a half hours. But now the client doesn’t really want to pay for the communication about it.

\n\n\n\n

And then in the end, I’ve seen many, many agencies, they just put this under the table, under the rug, or they say it and then just don’t admit it. And if you have a lot of these support items, you have a lot of unbillable hours. And is that sustainable? No. Is that frustrating? Yes. Especially if you’re a small team and you need to bill for the time. If you’re not able to bill for it, then what are we doing here?

\n\n\n\n

[00:13:31] Nathan Wrigley: So this is the idea then that in a company, let’s say that you as a freelancer are working with a company, I don’t know, maybe they’ve got a hundred employees or something like that. You’ve set it up so that you only speak with this one person in their company. But those other 99 people are funneling all of their bits and pieces through that one person.

\n\n\n\n

You just get this backwards and forwards. That one person becomes a bottleneck because they’ve got to communicate with the 99 people. Any change has to go through them.

\n\n\n\n

Okay, what was the second one? I’ve forgotten, I’m sorry.

\n\n\n\n

[00:13:57] Jennifer Schumacher: The design handoff from hell.

\n\n\n\n

[00:13:59] Nathan Wrigley: Okay, what’s that?

\n\n\n\n

[00:14:00] Jennifer Schumacher: Have you ever worked, like you’re a developer and then you are working on a project where they say, okay, the design will be done by a design agency or by some other designer. And then you get the design, you’re like, well, that doesn’t fit anymore what I thought I would spend on time in the beginning. And then I get a file, it was not even clear like this page, what should be the H1?

\n\n\n\n

And then inconsistent styles. And then suddenly on the mobile view, if the designer also did a mobile view, the designs do not match at all. Like, on this screen they use this size, on this screen, this size. Super inconsistent. And this is so frustrating. Because as a developer, in theory, then suddenly you have so many hours.

\n\n\n\n

Then, again, you have to decide, do I log them? Do I tell them that this is not anymore a fit? And if I am not anymore making it a fit, do I look bad? And again, unbillable hours. And then either you bill them or you’re like hiding them. I don’t like that.

\n\n\n\n

[00:14:57] Nathan Wrigley: This is the idea of if you are, I guess if you’re in a big agency where you’ve got a design team, and the design team is literally in the, you know, the cubicle next to you. That’s a fairly easy point to solve because you just stand up and have a chat about it. But if you’re a freelancer, or you’re dealing with a third party design agency or something like that, it’s a real bottleneck, isn’t it?

\n\n\n\n

Because you get a design, it looks great, but suddenly you realise, well, yeah, it looks great, it would make a great magazine piece. Transferring that over to the web with H1s and paragraphs, and it’s got to be accessible and color contrast has got to be good and all of this kind of stuff, that suddenly becomes problematic.

\n\n\n\n

And usually the client doesn’t have that same level of expertise. So you know, they might catch sight of that design and think, perfect, do that. Do exactly what we see and then you have to have this whole tennis again of explaining, well, actually we can’t do it quite like that. So, okay, that’s the second one.

\n\n\n\n

[00:15:50] Jennifer Schumacher: What I can tell you is that I’ve seen this happen nonetheless in big agencies too. I have worked also with agencies with more than 150 employees. And it always depends a lot on their internal processes and how they approve and the system, right?

\n\n\n\n

Nonetheless, I’ve seen also like big design agencies, and it looked all fancy, but then it did not match up. Maybe you’re very good at selling, but if you internally do not have certain systems in place, this stuff can still happen.

\n\n\n\n

[00:16:21] Nathan Wrigley: Yeah. And I also feel that when I was doing this kind of work, when I was a freelancer, I had to be all the things. I had to be literally everybody. I had to be the designer, I had to be the developer, I had to be the communicator, I had to be the marketer, I had to be the SEO. I had to be all of these things. And with the best will in the world, I’m not the best at all of those things. Probably one or two things I’m pretty good at, but the rest of them fairly lousy.

\n\n\n\n

And so that kind of fits in as well. And again, the process, getting a process exactly right. You are all about sort of saving money by having a process, saving time and money by having a process, yeah.

\n\n\n\n

[00:16:54] Jennifer Schumacher: To be honest, in my opinion, it’s mental health. Because if it goes on for too long that you’re charging less than what you are actually bringing to the table, that’s frustration. You bring that frustration to your home, that’s when you get stressed out. You share with your family what happened. You are like unloading the stress. You are not that much capable of being a good listener if you’re stressed. And you want to be a good listener with the people that you love. So, what are we doing here? You know?

\n\n\n\n

[00:17:23] Nathan Wrigley: You also become like a double fronted marketplace a little bit. Because you’ve got the designer over here who’s giving you designs and you are sat in the middle. And then you’ve got the client over here and you are sat in the middle. And you become this person that has to communicate the ideas in both directions.

\n\n\n\n

And when they say, we want this, you have to communicate that back to the designer. Do you have like a trusted designer or a design, like a network or a team or something like that, that you just more or less rely on that because you’ve figured out they know what I am typically going to want?

\n\n\n\n

[00:17:52] Jennifer Schumacher: I give them guidance how I want it. Some have, you know, worked with me before, here and there, and then they already know. But I tell them exactly how we need things, and then I point things out, okay, hey, like a checklist. Okay, we need to check this, this, this, this, this. And this sometimes could take a lot of time too, depending on the people that, you know, I work with.

\n\n\n\n

But it’s not that I have like a hundred percent go-to person per se. No. Maybe I can share that same thing. I did design many years ago, then development. And sometimes I need to also, you know, pause and say like, Jenny, no, don’t jump in and just do it yourself. You know, I could, but I just should not. So I just try to, let’s say, express how I need things to be done before going into development. If that’s not done, we’re not going into development.

\n\n\n\n

[00:18:41] Nathan Wrigley: I think designing for the web is really difficult because it is a real skill in and of itself. You know, if you’re designing for a magazine layout, I mean, obviously there’s a high level of skill required to do that in an effective way. But then being able to actually understand the semantics of that design, and how it might look, and especially now where we’re going into a web which is not three view ports. It’s not just mobile, it’s not just tablet, and it’s not just desktop.

\n\n\n\n

It’s this much more kind of, we have no idea what you’re going to be viewing it on. We don’t know the width. I think this sort of Intrinsic Design, which people keep talking about, that makes the job even more difficult, okay. So there’s number two.

\n\n\n\n

Number three, what was that one?

\n\n\n\n

[00:19:23] Jennifer Schumacher: Number three was, work more, bill less and smile anyway.

\n\n\n\n

[00:19:27] Nathan Wrigley: Okay, go on. Did you say work more, bill less?

\n\n\n\n

[00:19:30] Jennifer Schumacher: Yeah. Work more, bill less.

\n\n\n\n

[00:19:32] Nathan Wrigley: That seems counterintuitive.

\n\n\n\n

[00:19:33] Jennifer Schumacher: Yeah.

\n\n\n\n

[00:19:33] Nathan Wrigley: Most people would say work less, bill more.

\n\n\n\n

[00:19:36] Jennifer Schumacher: Well, everybody likes to say that, which is unfortunately, the truth is not always how it works, right? So, how about this? Have you ever been on a project where time goes by in the beginning, everybody’s excited? All fits, looks good. We’re progressing and then the client comes back with feedback and then there’s a change. Maybe it’s a change request, you know, okay, we add some extra hours.

\n\n\n\n

But then there’s something that either we did not notice, for example, oh, this doesn’t work in the Safari. And suddenly we need to work a bit more to make it a fix. But the budget is really tight. Anyway, we need to fix this. Or the client wants something, oh, but this should also animate. You animated this, but also this needs to be animated.

\n\n\n\n

Details. Detail here, a detail there. And then suddenly you notice like, well, the budget we had is not anymore available, but the client is still asking for things, and even saying stuff like, that should be included. How could you charge that extra? Or it was not communicated early enough like, hey, you know what, client, our budget is getting tight. If you are requesting more things, we will need to invoice you extra down the road.

\n\n\n\n

Of course you want to say, okay, if there’s something wrong with our work, we will cover this internally. You don’t want to be somebody who says, okay, I did a mistake, but I’m not correcting it, haha. But if the client is requesting more stuff, you need to let them know in advance. Because if you let them know later, they also go like, huh? Where does that come from? Why didn’t you tell me that this has got more expensive?

\n\n\n\n

And then suddenly you cannot charge them for that. And now you worked more, but you are effectively billing less if you take your effective hourly rate, what you actually delivered and work.

\n\n\n\n

I’ve met agencies, freelancers, when they would really calculate their effective hourly rate, they would be crying, sitting in the corner of the room and crying. This is frustrating, right? And nobody likes that. But anyway, they expect you to sit there smiling and just pretend like everything was good.

\n\n\n\n

[00:21:33] Nathan Wrigley: Do you always do that with your clients though? Do you have that approach of, we must smile through this, even though things are not necessarily working out? Because that was one of the things that you wrote in your description. Let me just find it. You wrote, it’s about laughing, learning, and maybe even recognising a situation you’ve been in yourself.

\n\n\n\n

So do you try to have that sort of humorous approach when things are not working out? Can you always laugh? Because sometimes these things can be so profoundly, well, annoying, let’s go with that. It’s difficult to laugh, I think.

\n\n\n\n

[00:22:01] Jennifer Schumacher: I think it depends a lot on your personality. I can tell you something. So I live in Spain and in Mexico. I’m German, but I don’t live anymore in Germany. But I think when you meet different cultures and see how they react, how they treat certain situations, that made me open up my eyes and see like, okay, you know, you always have the choice. How do you react to this? This is your choice.

\n\n\n\n

And if you get frustrated and you dwell into the pain and just continue again and again, and in the same cycle, then that’s your choice. What’s the other end, right? You can just say, hey, you know what? It was a mistake or this happened. I’m not happy about it, but the only thing I can do is appreciate that it happened because it gave me the opportunity now to learn from it. And that’s the super different perspective.

\n\n\n\n

Some people are not capable of thinking like that, but I prefer to think like that, because it makes me feel better and it makes me look at possible solutions and focus on that. Instead of me looking at the situation, focusing on the issue and the problems.

\n\n\n\n

[00:23:07] Nathan Wrigley: I think it’s very difficult in the moment sometimes to be so, I’m going to use the word sanguine. Just to be so measured about it because you know, something doesn’t work out. Maybe the first reaction is a buildup of anger or something like that. But to have that, to be able to in your head, parse that and say, you know what? The anger probably won’t get me anywhere, but viewing that as a learning opportunity.

\n\n\n\n

Because you go into pains, that’s what you say over and over again. Treat it as a learning opportunity. It’s almost like Zen Buddhism, or something like that, you know, it’s kind of trying to turn a bad situation into a good situation.

\n\n\n\n

But you are also at pains to say, well, it feels like you’re at pains to say, just don’t keep repeating it though. You know, if something bad happened, learn from it, but then adapt the process. Make the process different so that it doesn’t happen a second or a third time because, well, that’s crazy making.

\n\n\n\n

[00:23:57] Jennifer Schumacher: Yeah. But that’s, again, the reason why I think I really love the opportunity to be here and to be having that speech at WordCamp. Because, I get frustrated just thinking about it, I’ve seen so many great people just do the same thing over and over again, because they think that’s it and that’s how it is in agencies. It doesn’t matter if they work at this agency or that agency.

\n\n\n\n

Maybe some do it a bit different here or there, but the same problems come up and they do not really think about, how can I resolve this? New project. Like, new projects will fix it, or let’s sell more. Let’s fix it in the next project. Let’s fix it in the next project.

\n\n\n\n

But then they don’t think about a fix. And I have a couple of people who I really think like, God, you’re so good at what you do, but why do you do this to yourself? Why don’t you think about how to get out of this mess? And I think that’s what I want to do, what I want to share because you have to focus on how to solve this. Otherwise, if you don’t make it a priority, you’re stuck where you are.

\n\n\n\n

[00:24:50] Nathan Wrigley: I guess also, each one of us really genuinely does have, so I’m focusing on a freelancer at the minute, you know, so you’re not in an agency, it’s just you. We all really genuinely do have a unique set of attributes which make us the way we are. And it may be that you just have to lean into those. You’re good at this thing, you’re not so good at that thing, so maybe that gets outsourced, or maybe you just have to approach it in a different way. But it’s very, very hard.

\n\n\n\n

I also think that over the last 10 years, we’ve lived through a cycle of YouTube videos where people are trying to pitch us the perfect solution. In 10 minutes I’ll teach you how to revolutionise your agency. Some of that works, I’m sure, but there seems to be quite a bit of snake oil there as well.

\n\n\n\n

And what i’m trying to say is, just because it’s in a YouTube video or somebody is shouting from the rooftops that they’ve got the answer, it may be that that answer actually won’t work for you because that’s not who you are.

\n\n\n\n

[00:25:43] Jennifer Schumacher: Yeah. Well, that can be too. The thing is like, if you see those fancy videos on YouTube with these nice titles, they put them because that gives them a better click rate because people are more like, okay, well, I want to see if I just say like I have something that’s way high work. If you think that that’s a good idea or not, that’s up to you. It’s not a big selling point, right?

\n\n\n\n

So they write it that way just because of the enticing title makes you click. So that’s also, you know, it’s your human brain that follows this kind of direction. Yeah, so I think a big part, just as you mentioned, resources, YouTube. For me, the biggest part has been asking. And that’s why I loved, we started white labeling, working with other agencies, I learned so much from them. So much.

\n\n\n\n

And just sharing, I have one CEO that I once asked, he had built an agency with over two hundred employees, and they started out as four many years ago. I asked him for lunch. I asked, I would love to know how you did it. What was your motivator? How did you decide who to hire? How did you find the right people? What were the big decisions or risks that you took.

\n\n\n\n

And I think that is so important. Why not? What do we have to lose? I think, why not open up conversations and just ask, how are you approaching this? And I think this kind of stuff gets lost a lot. It’s not just only just sitting there and looking at YouTube videos. Who else could I ask? How do you deal with this?

\n\n\n\n

[00:27:12] Nathan Wrigley: I have a question, which is maybe one that you don’t want to answer because it’s quite vulnerable. But what is your biggest mistake? What’s the thing that if you look back over your career you think, oh boy, that was a calamity?

\n\n\n\n

[00:27:23] Jennifer Schumacher: I have one and I think I’m not, well, it is embarrassing. Yes, it is. But why not? It’s like a learning opportunity, right?

\n\n\n\n

So when I was younger, oh God, I don’t know how many years ago, it was like 10 years maybe. So I thought, okay, I want to build a team, I want to do this. Let’s make it at an agency. We have clients, we have projects, okay, cool.

\n\n\n\n

So I searched for people. I got an office and we were all there. And I thought, okay, I also want to be great with our culture because I think, you know, the team is what matters because only if the team is happy, we can make great work. I wasn’t going to be the one that’s sitting there with a whip, you know, like, do this, do this, do this. That was not how I envisioned myself.

\n\n\n\n

But I focused so much on this team that I did not notice that I did not yet learn enough how to be a good salesman. Few months later, I ran out of money.

\n\n\n\n

And because I was not yet intelligent enough about putting up boundaries that certain clients were like, oh, what? That should be included. Why was that not covered? And we just went in and covered it and not communicate, okay, that we stopped covering certain things for free. We did not yet know how to charge certain things on time.

\n\n\n\n

So we were still like, or I was still, did not resolve it. I did not think about, how do I need to do it so I don’t get myself in the situation that I would have a hard time getting out of, especially financially? And then I had to say, okay, that’s it. Pack my bags. I then started a job in sales. And then I had to learn, damn, how do I sell? How do I communicate? And that I did for a year and a half. And when, again, made more money outside of the job, I did quit.

\n\n\n\n

[00:29:06] Nathan Wrigley: Okay, so that was a real learning opportunity, wasn’t it? You went, the whole thing collapsed but the key bit that was missing was sales. You pick yourself up, got a sales job, learnt the sales portion, and then kind of began again. I guess it worked out the next time.

\n\n\n\n

[00:29:18] Jennifer Schumacher: Yeah. This time, we’re still here.

\n\n\n\n

[00:29:20] Nathan Wrigley: That was the low point. That was the thing which you did worst. Maybe you’ll be good at answering this question. Some people are a bit shy when you ask a question like this. What’s the thing that you think you’ve done best?

\n\n\n\n

[00:29:29] Jennifer Schumacher: Oh. What? The best.

\n\n\n\n

[00:29:30] Nathan Wrigley: Yeah. What’s the bit that if you look back over your 15 years, I mean, it may not be exactly one thing, but can you summon up something which you think, actually, do you know what? I’m really proud of me for that.

\n\n\n\n

[00:29:41] Jennifer Schumacher: I’m really proud of me for opening up and saying like, you know what, that’s not how it has to be. I don’t want this anymore. I want to see how I can improve this. I must say that my husband has been a bit of an inspiration here too. He’s the kind of person that’s like, ah, I want to work less. Like, I don’t want to work that much. And he finds a way to do it. He always does. He always finds his way around. It’s like, how come that he figures that out and I don’t? And I’m like, sitting here stressed.

\n\n\n\n

And there was also this thought like, do I like this stress? Do you know these people who are addicted to this kind of stress? And they just think they need it. It’s like, do you really think you need it? Do you really think that that’s what you want? Yeah, this is what made me think. And I’m happy that decision, saying like, you know, no. I don’t want that anymore.

\n\n\n\n

And i’m still having things to learn. You know, there’s still things that I’m working on. Totally. I think having that in your, like a little angel, I don’t know, or figure in the back of your head saying like, you shouldn’t do that. Can this be better? Think about it. That’s what I’m proud of.

\n\n\n\n

[00:30:47] Nathan Wrigley: Being honest with yourself, even if that means some uncomfortable realisations.

\n\n\n\n

[00:30:51] Jennifer Schumacher: Oh God, yeah. Tell me. Admitting to yourself like, damn.

\n\n\n\n

[00:30:56] Nathan Wrigley: Yeah. Yeah. I know what you mean. We often have a culture of, okay, just work harder. Just keep going. Just keep doing the same thing because I’m pretty sure the process over there is bulletproof. Just keep going, and maybe being a bit more open with yourself and trying to learn from the mistakes.

\n\n\n\n

[00:31:12] Jennifer Schumacher: And I think when you see somebody, it’s not cheating the system, but it’s kind of like doing it faster and being more relaxed and even having time to do some extra stuff, and you’re like, I want that. Why am I not striving for that? Why the hell I’m just focusing on being more busy? I think you start doubting things.

\n\n\n\n

[00:31:31] Nathan Wrigley: Yeah, that’s interesting. There’s always somebody in my life who seems to have way more free time than I do. There has to be a reason for that. And probably that they’ve just figured it out and allowed themselves the time off.

\n\n\n\n

And I always found that curious. I would find myself sitting at the desk doing the busy work, just because it felt like I needed to be shackled to the desk because that was where work took place. But really, I probably would’ve been way more productive if I’d gone for a walk for half an hour or just did something a little bit more for me, and then come back, regroup, start again. I never did learn that.

\n\n\n\n

[00:32:05] Jennifer Schumacher: Isn’t that, like it sounds so weird, but isn’t that kind of the expectation of society that you should be sitting there on that desk. How come you’re just going for a walk? How come you’re just saying, you know what, I’ll just get my hair done. Let’s just relax a bit and then I get back with a clear mind to that issue. Why not? But no, society expects you to be available, to be at the desk. That’s how you look good.

\n\n\n\n

[00:32:29] Nathan Wrigley: And it’s curious, we’re in such a fortunate position. I mean, obviously if you work in an agency and they provide you with a desk and you have to be there from nine to five, you’ve got that. But there’s a lot of people in our industry who don’t. You know, they’re working out of a spare room in the house. Maybe they’re doing it out the kitchen or what have you. And you can, you genuinely can, take time off and do other things and work a little bit later because you gave up some time during the day. You can be flexible. I think that’s one of the most remarkable things about the industry that we’re in. It’s utterly brilliant.

\n\n\n\n

[00:32:57] Jennifer Schumacher: I read the other day on my phone an article, it was about a bank where they were saying like the four day work week. And they were saying like, now that AI is around the corner, it’s a no brainer. That’s going to happen. Because we will be able to get more efficient with how we do things. And I think, isn’t that beautiful to more focus on outcomes instead of like the nine to five.

\n\n\n\n

Well, depends also how you manage the agency and everything. And I’ve seen many, they said they want to call their employees back. For example, in Mexico, like I live partially there. Many, many people got called back. But others in Germany I’ve seen, they still keep a hybrid model. Some days they just say, okay, we do a day here, a day there. But many developers said like, nope, staying at home.

\n\n\n\n

[00:33:42] Nathan Wrigley: So people listening to this podcast, hopefully some of them will think, do you know what? It’d be really interesting to chat this through with Jennifer. You know, she seems like she’s got some interesting ideas around that. Do you have a little community of people that you vent your anger, vent your frustration with? Do you have a little clique of people where you share the ideas that you’ve been discussing today?

\n\n\n\n

[00:34:01] Jennifer Schumacher: Besides my husband.

\n\n\n\n

[00:34:02] Nathan Wrigley: Yeah, how do you keep yourself sane? Yeah.

\n\n\n\n

[00:34:04] Jennifer Schumacher: I do not yet have a big community, but I am working on this. Because I think it’s great just to share. I was in this mess, in this chaos until I realised, like I had this awakening moment for more like 10 years. So 10 years, I kind of would, was like lying to myself, I feel.

\n\n\n\n

So I would love to share more. I want to do a LinkedIn live show. So I’m preparing that kind of stuff just to share, like we do, like a bit of talking. How did you do that? And just this story. I have a great network of people that I’ve met over the years with great stories.

\n\n\n\n

And this is something that I want to share. I also wrote a book for freelancers, where I just share the exact same thing because damn, I wish I would’ve noticed certain things earlier, to be honest. Because 10 years is quite a lot, you know? And especially when you start out and you’re freelancing, oh God, I just charge way less. I just shouldn’t think about it.

\n\n\n\n

But you know, I didn’t even know how much I was worth. I didn’t even know how to protect myself so that certain situations I could say ahead of time, you know what? That’s it. This entire project management mindset, or building the system, it didn’t occur to me for so long. I just thought, no, let me put this in a book and then, why not?

\n\n\n\n

[00:35:21] Nathan Wrigley: So, where do we find the book? Or where’s the best place to find you, which then might link to the book?

\n\n\n\n

[00:35:26] Jennifer Schumacher: On LinkedIn. And just, first of all, my network, I just want to get some feedback and then improve it. And then let’s see what else I can put in it. I also can share you something, maybe that’s something you found interesting. There’s this writer, Ryan Holiday. He has a great, great book that’s just called Growth Hacker Marketing. Read it. I love it. And I love the way how he writes this book because it’s so honest. It’s so transparent.

\n\n\n\n

And I wrote it the same way he did. I took my entire inspiration, how I wrote it, based on his book. And I also have a couple of stories that I share at the end of the book from other people out of my network. How they did resolve, for example, the cash flow issue, right? How they approached the entire setup. Where how they even were able to sell their agency. You know, like build it and sell it.

\n\n\n\n

That’s what I mean, ask others. Ask others how they did it. And then not getting stuck on these fancy YouTube videos for people that say they have the solution. But I think it’s so much worth it just to have conversations and learn and listen.

\n\n\n\n

Maybe you do not have to take everything that people say, but maybe just can take a bit here or there and then build your own. That’s what I like.

\n\n\n\n

[00:36:34] Nathan Wrigley: Perfect. Jennifer Schumacher, thank you so much for chatting to me today.

\n\n\n\n

[00:36:38] Jennifer Schumacher: It was a pleasure to be here, to be honest. Thank you.

\n
\n\n\n\n

On the podcast today we have Jennifer Schumacher.

\n\n\n\n

Jennifer has been working with WordPress and web development for over 15 years. Her journey began with a spark of curiosity in university, building her first WordPress website after a YouTube crash-course, then evolving into freelance gigs, team collaborations, and eventually running a white label agency working alongside other agencies around the world. 

\n\n\n\n

Jennifer’s experiences have exposed her to the highs and lows of agency life, projects that run smoothly, but also cultures that can become toxic, people burning out, and the all-too-familiar frustration of unbillable hours and broken processes. This inspired Jennifer’s lightning talk at WordCamp Europe 2025, where she shared some of the most common (and painful) mistakes she’s seen agencies make, and what can be learned from them.

\n\n\n\n

Jennifer walks us through her path in the WordPress world, and we discuss three real-world mistakes agencies make: “web support that drains your soul,” “the design handoff from hell,” and “work more, bill less and smile anyway.”

\n\n\n\n

We talk through support bottlenecks, frustrating design-to-development handoffs, and the dilemma of over-servicing clients without fair compensation. Jennifer shares her candid perspective on why processes and honest communication matter, not just for the bottom line, but for mental health and building sustainable teams.

\n\n\n\n

She also discusses how transparency, learning from failure, and continually improving processes can improve agency life. Jennifer’s approach is refreshingly open about both the mistakes and the solutions, aiming to help others avoid repeating them.

\n\n\n\n

If you’ve found yourself frustrated with agency workflows, or are hoping to build a healthier business in the WordPress ecosystem, this episode is for you.

\n\n\n\n

Useful links

\n\n\n\n

 Jennifer’s presentation at WordCamp Europe 2025: 3 WordPress Agency F*ckups and What I Learned from Them

\n\n\n\n

The presentation on WordPress.tv

\n\n\n\n

Growth Hacker Marketing book by Ryan Holiday

\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Wed, 02 Jul 2025 14:00:00 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:14:\"Nathan Wrigley\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";O:48:\"WpOrg\\Requests\\Utility\\CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:9:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Thu, 31 Jul 2025 21:03:17 GMT\";s:12:\"content-type\";s:8:\"text/xml\";s:13:\"last-modified\";s:29:\"Thu, 31 Jul 2025 20:45:34 GMT\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:16:\"content-encoding\";s:2:\"br\";s:7:\"alt-svc\";s:19:\"h3=\":443\"; ma=86400\";s:4:\"x-nc\";s:9:\"HIT ord 1\";}}s:5:\"build\";i:1750198589;s:21:\"cache_expiration_time\";i:1754038997;s:23:\"__cache_expiration_time\";i:1754038997;}','off'), +(207,'_transient_timeout_dash_v2_88ae138922fe95674369b1cb3d215a2b','1754038997','off'), +(208,'_transient_dash_v2_88ae138922fe95674369b1cb3d215a2b','','off'), +(209,'_site_transient_timeout_wp_theme_files_patterns-95e83268faf2ddbb8914f2103a03f857','1754003419','off'), +(210,'_site_transient_wp_theme_files_patterns-95e83268faf2ddbb8914f2103a03f857','a:2:{s:7:\"version\";s:3:\"1.2\";s:8:\"patterns\";a:0:{}}','off'); /*!40000 ALTER TABLE `wp_options` ENABLE KEYS */; UNLOCK TABLES; @@ -327,7 +328,7 @@ CREATE TABLE `wp_postmeta` ( PRIMARY KEY (`meta_id`), KEY `post_id` (`post_id`), KEY `meta_key` (`meta_key`(191)) -) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -350,7 +351,15 @@ INSERT INTO `wp_postmeta` VALUES (13,1,'_wp_trash_meta_status','publish'), (14,1,'_wp_trash_meta_time','1744240453'), (15,1,'_wp_desired_post_slug','hello-world'), -(16,1,'_wp_trash_meta_comments_status','a:1:{i:1;s:1:\"1\";}'); +(16,1,'_wp_trash_meta_comments_status','a:1:{i:1;s:1:\"1\";}'), +(17,6,'_wp_old_slug','hello-world-2'), +(18,6,'_edit_lock','1753811980:1'), +(19,7,'_wp_trash_meta_status','publish'), +(20,7,'_wp_trash_meta_time','1753811995'), +(21,7,'_wp_desired_post_slug','sample-page-2'), +(22,8,'_wp_trash_meta_status','draft'), +(23,8,'_wp_trash_meta_time','1753812009'), +(24,8,'_wp_desired_post_slug','privacy-policy'); /*!40000 ALTER TABLE `wp_postmeta` ENABLE KEYS */; UNLOCK TABLES; @@ -390,7 +399,7 @@ CREATE TABLE `wp_posts` ( KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`), KEY `post_parent` (`post_parent`), KEY `post_author` (`post_author`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; +) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -404,12 +413,15 @@ INSERT INTO `wp_posts` VALUES (2,1,'2025-04-09 23:13:13','2025-04-09 23:13:13','\n

This is an example page. It\'s different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:

\n\n\n\n

Hi there! I\'m a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin\' caught in the rain.)

\n\n\n\n

...or something like this:

\n\n\n\n

The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.

\n\n\n\n

As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!

\n','Sample Page','','publish','closed','open','','sample-page','','','2025-04-09 23:13:13','2025-04-09 23:13:13','',0,'http://localhost:8888/?page_id=2',0,'page','',0), (3,1,'2025-04-09 23:13:13','2025-04-09 23:13:13','\n

Who we are

\n\n\n

Suggested text: Our website address is: http://localhost:8888.

\n\n\n

Comments

\n\n\n

Suggested text: When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.

\n\n\n

An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.

\n\n\n

Media

\n\n\n

Suggested text: If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.

\n\n\n

Cookies

\n\n\n

Suggested text: If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year.

\n\n\n

If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser.

\n\n\n

When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed.

\n\n\n

If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.

\n\n\n

Embedded content from other websites

\n\n\n

Suggested text: Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website.

\n\n\n

These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website.

\n\n\n

Who we share your data with

\n\n\n

Suggested text: If you request a password reset, your IP address will be included in the reset email.

\n\n\n

How long we retain your data

\n\n\n

Suggested text: If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue.

\n\n\n

For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.

\n\n\n

What rights you have over your data

\n\n\n

Suggested text: If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.

\n\n\n

Where your data is sent

\n\n\n

Suggested text: Visitor comments may be checked through an automated spam detection service.

\n\n','Privacy Policy','','draft','closed','open','','privacy-policy','','','2025-04-09 23:13:13','2025-04-09 23:13:13','',0,'http://localhost:8888/?page_id=3',0,'page','',0), (4,1,'2025-04-09 23:13:37','0000-00-00 00:00:00','','Auto Draft','','auto-draft','open','open','','','','','2025-04-09 23:13:37','0000-00-00 00:00:00','',0,'http://localhost:8888/?p=4',0,'post','',0), -(6,1,'2025-04-09 18:29:34','2025-04-09 18:29:34','\n

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

\n','Hello world!','','publish','open','open','','hello-world-2','','','2025-04-09 18:29:34','2025-04-09 18:29:34','',0,'http://localhost:8888/?p=1',0,'post','',1), -(7,1,'2025-04-09 18:29:34','2025-04-09 18:29:34','\n

This is an example page. It\'s different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:

\n\n\n\n

Hi there! I\'m a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin\' caught in the rain.)

\n\n\n\n

...or something like this:

\n\n\n\n

The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.

\n\n\n\n

As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!

\n','Sample Page','','publish','closed','open','','sample-page-2','','','2025-04-09 18:29:34','2025-04-09 18:29:34','',0,'http://localhost:8888/?page_id=2',0,'page','',0), -(8,1,'2025-04-09 18:29:34','2025-04-09 18:29:34','\n

Who we are

\n\n\n

Suggested text: Our website address is: http://localhost:8888.

\n\n\n

Comments

\n\n\n

Suggested text: When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.

\n\n\n

An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.

\n\n\n

Media

\n\n\n

Suggested text: If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.

\n\n\n

Cookies

\n\n\n

Suggested text: If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year.

\n\n\n

If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser.

\n\n\n

When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed.

\n\n\n

If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.

\n\n\n

Embedded content from other websites

\n\n\n

Suggested text: Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website.

\n\n\n

These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website.

\n\n\n

Who we share your data with

\n\n\n

Suggested text: If you request a password reset, your IP address will be included in the reset email.

\n\n\n

How long we retain your data

\n\n\n

Suggested text: If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue.

\n\n\n

For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.

\n\n\n

What rights you have over your data

\n\n\n

Suggested text: If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.

\n\n\n

Where your data is sent

\n\n\n

Suggested text: Visitor comments may be checked through an automated spam detection service.

\n\n','Privacy Policy','','draft','closed','open','','privacy-policy','','','2025-04-09 18:29:34','2025-04-09 18:29:34','',0,'http://localhost:8888/?page_id=3',0,'page','',0), +(6,1,'2025-04-09 18:29:34','2025-04-09 18:29:34','\n

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

\n','Hello world!','','publish','open','open','','hello-world','','','2025-07-29 17:59:40','2025-07-29 17:59:40','',0,'http://localhost:8888/?p=1',0,'post','',1), +(7,1,'2025-04-09 18:29:34','2025-04-09 18:29:34','\n

This is an example page. It\'s different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:

\n\n\n\n

Hi there! I\'m a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin\' caught in the rain.)

\n\n\n\n

...or something like this:

\n\n\n\n

The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.

\n\n\n\n

As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!

\n','Sample Page','','trash','closed','open','','sample-page-2__trashed','','','2025-07-29 17:59:55','2025-07-29 17:59:55','',0,'http://localhost:8888/?page_id=2',0,'page','',0), +(8,1,'2025-04-09 18:29:34','2025-04-09 18:29:34','\n

Who we are

\n\n\n

Suggested text: Our website address is: http://localhost:8888.

\n\n\n

Comments

\n\n\n

Suggested text: When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.

\n\n\n

An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.

\n\n\n

Media

\n\n\n

Suggested text: If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.

\n\n\n

Cookies

\n\n\n

Suggested text: If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year.

\n\n\n

If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser.

\n\n\n

When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed.

\n\n\n

If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.

\n\n\n

Embedded content from other websites

\n\n\n

Suggested text: Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website.

\n\n\n

These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website.

\n\n\n

Who we share your data with

\n\n\n

Suggested text: If you request a password reset, your IP address will be included in the reset email.

\n\n\n

How long we retain your data

\n\n\n

Suggested text: If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue.

\n\n\n

For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.

\n\n\n

What rights you have over your data

\n\n\n

Suggested text: If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.

\n\n\n

Where your data is sent

\n\n\n

Suggested text: Visitor comments may be checked through an automated spam detection service.

\n\n','Privacy Policy','','trash','closed','open','','privacy-policy__trashed','','','2025-07-29 18:00:09','2025-07-29 18:00:09','',0,'http://localhost:8888/?page_id=3',0,'page','',0), (9,1,'2025-04-09 18:29:56','2025-04-09 18:29:56','','Navigation','','publish','closed','closed','','navigation','','','2025-04-09 18:29:56','2025-04-09 18:29:56','',0,'http://localhost:8888/navigation/',0,'wp_navigation','',0), (10,1,'2025-04-09 20:45:15','2025-04-09 20:45:15','\n

Sample content here!

\n\n\n\n

\n','Sample Post','','publish','open','open','','sample-post','','','2025-04-09 20:45:15','2025-04-09 20:45:15','',0,'http://localhost:8888/?p=7',0,'post','',0), -(11,1,'2025-04-09 23:14:13','2025-04-09 23:14:13','\n

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

\n','Hello world!','','inherit','closed','closed','','1-revision-v1','','','2025-04-09 23:14:13','2025-04-09 23:14:13','',1,'http://localhost:8888/?p=11',0,'revision','',0); +(11,1,'2025-04-09 23:14:13','2025-04-09 23:14:13','\n

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

\n','Hello world!','','inherit','closed','closed','','1-revision-v1','','','2025-04-09 23:14:13','2025-04-09 23:14:13','',1,'http://localhost:8888/?p=11',0,'revision','',0), +(12,1,'2025-07-29 17:59:40','2025-07-29 17:59:40','\n

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

\n','Hello world!','','inherit','closed','closed','','6-revision-v1','','','2025-07-29 17:59:40','2025-07-29 17:59:40','',6,'http://localhost:8888/?p=12',0,'revision','',0), +(13,1,'2025-07-29 17:59:55','2025-07-29 17:59:55','\n

This is an example page. It\'s different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:

\n\n\n\n

Hi there! I\'m a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin\' caught in the rain.)

\n\n\n\n

...or something like this:

\n\n\n\n

The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.

\n\n\n\n

As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!

\n','Sample Page','','inherit','closed','closed','','7-revision-v1','','','2025-07-29 17:59:55','2025-07-29 17:59:55','',7,'http://localhost:8888/?p=13',0,'revision','',0), +(14,1,'2025-07-29 18:00:09','2025-07-29 18:00:09','\n

Who we are

\n\n\n

Suggested text: Our website address is: http://localhost:8888.

\n\n\n

Comments

\n\n\n

Suggested text: When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.

\n\n\n

An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.

\n\n\n

Media

\n\n\n

Suggested text: If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.

\n\n\n

Cookies

\n\n\n

Suggested text: If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year.

\n\n\n

If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser.

\n\n\n

When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed.

\n\n\n

If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.

\n\n\n

Embedded content from other websites

\n\n\n

Suggested text: Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website.

\n\n\n

These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website.

\n\n\n

Who we share your data with

\n\n\n

Suggested text: If you request a password reset, your IP address will be included in the reset email.

\n\n\n

How long we retain your data

\n\n\n

Suggested text: If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue.

\n\n\n

For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.

\n\n\n

What rights you have over your data

\n\n\n

Suggested text: If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.

\n\n\n

Where your data is sent

\n\n\n

Suggested text: Visitor comments may be checked through an automated spam detection service.

\n\n','Privacy Policy','','inherit','closed','closed','','8-revision-v1','','','2025-07-29 18:00:09','2025-07-29 18:00:09','',8,'http://localhost:8888/?p=14',0,'revision','',0); /*!40000 ALTER TABLE `wp_posts` ENABLE KEYS */; UNLOCK TABLES; @@ -575,9 +587,9 @@ INSERT INTO `wp_usermeta` VALUES (13,1,'wp_user_level','10'), (14,1,'dismissed_wp_pointers',''), (15,1,'show_welcome_panel','1'), -(16,1,'session_tokens','a:1:{s:64:\"fd7f1ace0a81c5447d651384e7bceb859b5687f3efa8e19e3d22b041f1b34512\";a:4:{s:10:\"expiration\";i:1744413216;s:2:\"ip\";s:12:\"192.168.65.1\";s:2:\"ua\";s:117:\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36\";s:5:\"login\";i:1744240416;}}'), +(16,1,'session_tokens','a:1:{s:64:\"fa12fab4667264faa0ce0df64aaede9ea2e9b1ec420bd67163b3c2a832643163\";a:4:{s:10:\"expiration\";i:1754168595;s:2:\"ip\";s:10:\"172.18.0.1\";s:2:\"ua\";s:117:\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36\";s:5:\"login\";i:1753995795;}}'), (17,1,'wp_dashboard_quick_press_last_post_id','4'), -(18,1,'community-events-location','a:1:{s:2:\"ip\";s:12:\"192.168.65.0\";}'); +(18,1,'community-events-location','a:1:{s:2:\"ip\";s:10:\"172.18.0.0\";}'); /*!40000 ALTER TABLE `wp_usermeta` ENABLE KEYS */; UNLOCK TABLES; @@ -613,7 +625,7 @@ CREATE TABLE `wp_users` ( LOCK TABLES `wp_users` WRITE; /*!40000 ALTER TABLE `wp_users` DISABLE KEYS */; INSERT INTO `wp_users` VALUES -(1,'admin','$P$BqQESVUhlVKQME6eMG0K5xLr1dmB861','admin','wordpress@example.com','http://localhost:8888','2025-04-09 23:13:13','',0,'admin'); +(1,'admin','$wp$2y$10$r8NVSKeboTLvbXP7EdlGk.prmwgiSITbnbwn9VvZCZ6lZPd1wx4qC','admin','wordpress@example.com','http://localhost:8888','2025-04-09 23:13:13','',0,'admin'); /*!40000 ALTER TABLE `wp_users` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; @@ -626,4 +638,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*M!100616 SET NOTE_VERBOSITY=@OLD_NOTE_VERBOSITY */; --- Dump completed on 2025-04-09 23:15:01 +-- Dump completed on 2025-07-31 22:50:33 From ff14b91949e4dfec62788314a7b0d765337f4714 Mon Sep 17 00:00:00 2001 From: Alex Moon Date: Thu, 31 Jul 2025 15:53:23 -0700 Subject: [PATCH 09/10] fix: remove unused icons --- examples/next/template-hierarchy/example-app/public/file.svg | 1 - examples/next/template-hierarchy/example-app/public/globe.svg | 1 - examples/next/template-hierarchy/example-app/public/next.svg | 1 - examples/next/template-hierarchy/example-app/public/vercel.svg | 1 - examples/next/template-hierarchy/example-app/public/window.svg | 1 - 5 files changed, 5 deletions(-) delete mode 100644 examples/next/template-hierarchy/example-app/public/file.svg delete mode 100644 examples/next/template-hierarchy/example-app/public/globe.svg delete mode 100644 examples/next/template-hierarchy/example-app/public/next.svg delete mode 100644 examples/next/template-hierarchy/example-app/public/vercel.svg delete mode 100644 examples/next/template-hierarchy/example-app/public/window.svg diff --git a/examples/next/template-hierarchy/example-app/public/file.svg b/examples/next/template-hierarchy/example-app/public/file.svg deleted file mode 100644 index 004145cd..00000000 --- a/examples/next/template-hierarchy/example-app/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/next/template-hierarchy/example-app/public/globe.svg b/examples/next/template-hierarchy/example-app/public/globe.svg deleted file mode 100644 index 567f17b0..00000000 --- a/examples/next/template-hierarchy/example-app/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/next/template-hierarchy/example-app/public/next.svg b/examples/next/template-hierarchy/example-app/public/next.svg deleted file mode 100644 index 5174b28c..00000000 --- a/examples/next/template-hierarchy/example-app/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/next/template-hierarchy/example-app/public/vercel.svg b/examples/next/template-hierarchy/example-app/public/vercel.svg deleted file mode 100644 index 77053960..00000000 --- a/examples/next/template-hierarchy/example-app/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/next/template-hierarchy/example-app/public/window.svg b/examples/next/template-hierarchy/example-app/public/window.svg deleted file mode 100644 index b2b2a44f..00000000 --- a/examples/next/template-hierarchy/example-app/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file From 04443193ce72b3b6d7439962383f41a01c63e2d4 Mon Sep 17 00:00:00 2001 From: Alex Moon Date: Mon, 4 Aug 2025 08:18:05 -0700 Subject: [PATCH 10/10] Update examples/next/template-hierarchy/example-app/src/wp-templates/single.js Co-authored-by: Huseyn Aghayev --- .../template-hierarchy/example-app/src/wp-templates/single.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/next/template-hierarchy/example-app/src/wp-templates/single.js b/examples/next/template-hierarchy/example-app/src/wp-templates/single.js index f473c048..ab363949 100644 --- a/examples/next/template-hierarchy/example-app/src/wp-templates/single.js +++ b/examples/next/template-hierarchy/example-app/src/wp-templates/single.js @@ -4,10 +4,10 @@ export default function SingleTemplate({ graphqlData }) { const { SinglePostQuery } = graphqlData; return ( -

{SinglePostQuery.response.data.post.title}

+

{SinglePostQuery.data.post.title}