Sign in

Alex Kirk

@alex.kirk.at
18 followers 1 following 21 posts

🌉 bridged from ⁂ alex.kirk.at/author/alex, follow @ap.brid.gy to interact

PostsRepliesMedia
Alex Kirk @alex.kirk.at · 01/10/2026
Turn WordPress into a personal knowledge base that AI can help organize—while keeping your structured data under your control.
alex.kirk.at
WordPress as your Personal Knowledge Base
Using WP Apps, you can turn your WordPress into your personal knowledge base: each app can help you organize a different aspect of your life with your data stored in structured ways, under your control, and available to the tools you choose. To explain my vision for establishing WP Apps, I have created a landing page and showcase at wpapps.kirk.at. If you think it’s a good idea, please spread the word! wpapps.kirk.at There is a knowledge base section on the „AI“ page, and I would like to explain it using my own setup. I use WP Apps extensively, I have several aspects of my life stored in different WP Apps, for example, Cook App, Memex, and Travel App. These apps store the data in structured ways: recipes with ingredient taxonomies, trips with trip items, and so on. ## Using AI to Clean Up For example, I imported some recipes to my Cookbook from the web that I used to look up again and again. I also had to remember the small adaptations I had made. This created a problem: different recipes had ingredients stored in all sorts of ways. Although the app tries to consolidate them, I still ended up with different types of flour, notes that had made it into ingredient names, and cuisines in both English and German. It was a bit of a mess. So I used the AI Assistant and told it: „Help me clean up my cookbook. There is a bit of chaos in the ingredients and cuisines.“ And, of course, it did: first by suggesting what it would do and then by doing the actual clean-up. This is a translated version of my German conversation This was very satisfying, and I wonder how many other cookbook apps allow this when you don’t have the same freedom over your data. In this case, I used an API key for the conversation, and it cost about €3. For me, it was worth it! But can you use a Claude or ChatGPT subscription that you might already have for the same thing? Turns out, yes! ## How AI Can Interact with WP Apps A quick detour before we get there: WordPress 6.9 added the Abilities API, which gives plugins a standard way to expose their functionality. All the WP Apps I created expose such abilities. This means that AI can interact with them. For example, in the screenshot above, you can see how it talked to the plugins using abilities. The apps store the structured data, the Abilities API makes their functionality available, and you can let AI access this externally via MCP, or potentially WebMCP (see WebMCP or MCP). ## Using AI Subscriptions with Your Knowledge Base MCP is what lets subscription-based AI assistants interact with your site. WordPress doesn’t yet have native MCP support. There is an MCP Adapter plugin that exposes the Abilities API, but it is only available on GitHub, and it is missing something crucial for use with subscription-based AI assistants: OAuth. Since you don’t want to make your data public (or publicly writable), you need a way to authorize the AI to access it on your behalf. So I wrote the MCP Connect plugin, which adds this OAuth layer. I am not (yet?) planning to publish it in the WordPress.org Plugin Directory because I think we eventually need an official solution. For now, I use it myself and you could too, if you’re daring. Similarly, WordPress does not yet officially support WebMCP. I have a WebMCP Abilities plugin that exposes Abilities over WebMCP. If you have the ChatGPT app and ask it to open your website, you can log in there and use all the available abilities. ## Example: Using ChatGPT to Talk to Your WordPress There is a chance that MCP is old news to you since it has been around for quite a while. But it makes particular sense in combination with WP Apps and the abilities they expose. Say I’m going to London next weekend. I can do this using the Travel App: ChatGPT knows to ask my WordPress because I have added MCP access under the name „Alex Kirk“, the name of my site. And arrive at this: The London Trip as it appears in Travel App, freshly created and still empty. Next, I could continue the conversation and paste my flight and hotel reservations, and it would add them. I didn’t want to share a real example, but I use this to organize my trips. This replaced TripIt for me. I can also query past trips. Maybe TripIt also supports MCP these days. But this setup can use all the apps I have installed, if I want it to. ## Does This Require AI? It is important for me to mention that I am showing what is possible with AI, not arguing that AI is required. While I used Anthropic or OpenAI above, all of this can also be done with local LLMs. Or I can choose not to use AI at all. Because the data is in my WordPress, I can switch AI providers as I like. If I cancel one subscription and start another, the new service can still access and work with my data. My data is also not spread across many external services where I don’t know what they will do with it. I can choose whether to use AI, and I can use it only for selected tasks. If I stop using AI, my data remains in my WordPress. Oh, and because I have been asked about this: Travel App is available offline. On each trip you can verify its offline availability at the bottom: ## How to Try It? ### Without Installing Anything Each WP App page has an install link for my.wordpress.net, a free WordPress that runs in your browser. To get started: 1. Choose the WP App you want to try. 2. Open its my.wordpress.net demo. You can install multiple WP Apps in the same browser-based WordPress and use them together. 3. Add your own data and experiment with the apps. This WordPress and its data stay private to your computer, so you can use it with real data. Each WP App page also has a ZIP download (except for those that are already in the WordPress.org plugin directory, like Travel App), to install it on a WordPress you already own. ### Use WP Apps with AI from Inside WordPress The first option is to use AI from inside WordPress through the AI Assistant app. The assistant can work with all the abilities exposed by your installed WP Apps. 1. Install the WP App or apps you want to use. 2. Install AI Assistant. 3. Connect it to a hosted AI using an API key, or configure it to use a local LLM (e.g. LM Studio or Ollama). 4. Open AI Assistant and start with a small request, such as listing your recipes or creating a test trip. ### Use WP Apps with an AI Subscription from Outside WordPress The second option is to let an AI assistant that you already use connect to your WordPress. There are two ways to do this, depending on whether you want the AI to access your site directly or work with it while you have it open in a browser. #### Connect Directly Through MCP With MCP, AIs like ChatGPT, Claude, or another MCP client can access it directly, they don’t have to be open in the browser. The connection remains available across conversations. 1. Make sure your site runs WordPress 6.9 or newer, then install the WP App or apps you want to use. 2. Install and activate MCP Connect. It includes the MCP Adapter, so you don’t need to install that separately. 3. Go to **Tools → MCP Connect**. Review the available abilities and hide any that you don’t want AI clients to see. 4. Follow the ready-made instructions on that screen to add your site to ChatGPT, Claude, or another supported client. Then sign in to your WordPress and authorize the connection. 5. Now you can ask your AI to do things related to your WP Apps, it will automatically determine the right abilities to use. #### Work Together in the Browser Through WebMCP Some AI tools, such as the ChatGPT app, use WebMCP to interact with the site that is open in the in-app browser. To use them: ChatGPT shows the tools exposed via WebMCP 1. Install the WP App or apps you want to use, then install WebMCP Abilities. 2. Open your site in the built-in browser of the ChatGPT desktop app and log in to WordPress. You can inspect the tools that ChatGPT can see with the little arrow icon. 3. Ask ChatGPT to do things related to your WP Apps, it will automatically determine the right abilities to use. At the moment, this primarily means using site tools in the ChatGPT desktop app. I am not aware of WebMCP support in the Claude app yet. In the future, WebMCP could also work with AI agents built into browsers or provided through browser extensions. Chrome already has experimental WebMCP support. ### Access Control? Both MCP Connect and WebMCP Abilities let to limit the abilities exposed. Destructive abilities (like deleting) typically need confirmation from the user. Apart from AI, WP Apps are restricted to logged-in users by default, so you can use them alongside whatever you already use your WordPress for. They give your data a durable home and leave you in control of which tools, AI or otherwise, can work with it. ## Conclusion For me, it is a compelling combination to use WP Apps as an opinionated complement to subscription AI like ChatGPT or Claude.ai. You can have AI fill in data, organize it, and then use a nice WP App to browse it and interact with the data. But you remain in control and can decide when to involve AI. You can use the apps standalone and import from elsewhere and fine-tune the contents yourself, because it they are all apps that run on your WordPress.
230
Alex Kirk @alex.kirk.at · 20/07/2026
Reduce your dependency on subscription services by self-hosting WordPress alternatives to the apps you know: from note-taking to RSS Reader to recipes.
alex.kirk.at
Own Your Apps: Alternatives You Can Run in WordPress
The appeal of having WordPress take over more responsibilities than public websites is to reduce dependency on other (web) services that each have their own agenda. Each service starts off with a vision and the desire to fill a need. But then often economics need to be dealt with and thus services get caught up between charging their users (or showing ads) to cover the costs and the temptation to grow, thus taking more and more money from them to make it a business. I’m not here to argue about the good or bad aspects of economics. There is a lot of good in actually employing more people through a project. But coming from a sustainability angle, maybe you don’t need all aspects of each subscription but have no choice in accepting the whole bundle with its price, or giving up on the service. By having your own WordPress available as a place to run the services you really use, you can free yourself of that. I try to make the ones I created great by default, but because they are open source, you can add, remove, or change what does not fit. With AI, this promise becomes more feasible today. Not every service can be usefully converted into a self-hostable WordPress app: There might be a dependency on external APIs that are not available to individuals or at prices that are only sustainable across a huge user base. Or a network effect within the app itself, although I hope that ActivityPub can grow beyond the current use cases and make it possible to achieve those effects across (self-hosted) services. That still leaves many opportunities: I am building this trove of WordPress apps that can serve as practical alternatives to online services. In the vein of the alternativeto.net website that I really like as a way to empower people to find something that suits them (better), I have created this table (that you can also find inside My WordPress): Apps you know| Alternative WordPress App ---|--- Obsidian, Notion, Roam, Research, Evernote, Simplenote| Memex Google Reader, Feedly, Inoreader, NewsBlur, NetNewsWire, Reeder, FreshRSS| RSS Reader aspect of Friends Pocket, Instapaper, Readwise, Raindrop.io, Pinboard, Diigo| Post Collection with bonus Send to E-Reader Paprika, Mela, Recipe Keeper| Cookbook TripIt, TripCase, Tripsy| Travel App Flighty, MyFlightRadar24, OpenFlights| Flight Log Monica, Clay/Mesh, Dex| Personal CRM, optionally with Keeping Contact Wikiwand, Kiwix| Wordopedia Claude Code, Codex, Grok| AI Assistant There are more apps that don’t really fit in the above categories such as Chat-to-Blog or Apiary Press from my colleague Francesco Bigiarini. Also you can integrate one-pager apps using my little convert-to-wp-app tool. This list is ambitious, and having their own WordPress for having those apps yourself isn’t for everyone. Even if you have a WordPress already, you might feel that one would not be the best place to try. But with my.wordpress.net, you have a space where you can play with the apps above. See what they can do today, post an issue on Github if you have a good idea for what to add, get it hosted eventually. Which, by the way, is a good reason for using WordPress: hosting is affordable and widely available. Each service starts off with a vision and the desire to fill a need. Likely the successful services have grown so many features that you can’t (yet) have them all inside WordPress. But it can be a journey towards your personal app that you can start now.
000
Alex Kirk @alex.kirk.at · 03/06/2026
I released a WordCamp Companion plugin to guide you through your day. You can run it inside my.wordpress.net.
alex.kirk.at
WordCamp Companion
Although I won’t be attending the WordPress conference WordCamp Europe 2026 in Krakow this year because of other commitments, I built something that could be useful for attendees of it, as well as for future WordCamps. WordCamp Companion is a tool to plan your WordCamp and guide you through it, as well as for taking notes during sessions. It is built as a WordPress plugin which you can install to your own WordPress (not in the plugin directory yet so you need to download the ZIP) or use through my.wordpress.net that I talked about in my previous posts. Use this link to start it directly in my.wordpress.net. Since it is a WordPress hosted in your browser, it is free and private. The plugin features: * A live updating timeline with easy adding of sessions, * Note taking for each session with export, * Sharing sessions to others, * AI Assistant compatibility. Scroll down to find screenshots and screen recordings of those features. Let’s start with timeline view. It will automatically update according to the current time and show you when to switch tracks. At a glance you can see what’s up nextSpeed run through a day ### Adding Sessions In the timeline you can see an “Add a session” in the gaps of your schedule. Adding sessionsOverlaps are pointed out ### Note Taking You can take notes inline in Markdown-style which you can then export. Video showing how to add notesExport your notes ### Session Sharing Share via QR codeSelectively accept ### All WordCamps While it is good timing for WordCamp Europe, it also works for multiple (future) WordCamps: ### AI Assistant Compatible I’ve been working on a capable AI Assistant for WordPress that you can try inside my.wordpress.net. It can help you work out a schedule: The AI Assistant gives you tips on what you can doFor example, adding sessions to your plan Write notes as you goCompile notes at the end If you’re attending this WordCamp Europe, or other future WordCamps, give the WordCamp Companion a try. You can do it easily and risk-free with this link to start it directly in my.wordpress.net.
000
Alex Kirk @alex.kirk.at · 14/05/2026
AI makes personal software easier to create, but it still needs a place to live. I see WordPress as an unexpected but practical platform for personal apps and data.
alex.kirk.at
Personal Software Needs a Home
David Pierce’s piece in The Verge about the “personal software revolution” captures something that resonates strongly with me: AI is making it easier to create software for one’s exact needs. I think today every developer who is jumping on the AI train experiences it themselves: they can suddenly scratch many of their own software itches with a quick prompt. Of course, developers are more likely to think of software-driven solutions to real-world problems than non-developers. But as creating apps gets easier, that instinct may spread beyond developers too, as the Verge article describes. That is exciting. But I think the more interesting question is not only “who writes the code?” It is: where does this personal software live? Already before this AI revolution, developers built software using their favorite stack. That’s what they are fastest in, that’s a setup where they run their other self-developed software already. And this leads to what I call the self-hosting chaos: Yes, there is Docker as a solution to run any stack on any machine but it’s really a developer tool. And while there are solutions like Instapods which I applaud for its effort to try and make it easy, as a user, every tool still has its own setup flow. And then there are questions like: Where is the data stored? Can I export it? Do I need another host for a second app? It might be a surprising angle but this is where I think WordPress has an interesting role to play, and I’ve been working on making this even more feasible recently. The fact that it’s a widely used software for blogging has the side-effect that it’s easy to find hosting for it anywhere you like. So, what if you don’t use it for blogging, but as a personal app platform? This needs a reframe of people’s thinking, and I wrote about it just recently. But once you let it sink in, WordPress is a pretty decent platform for personal apps, providing lots of things out of the box: * Easy plugin installation, * User accounts and permissions, * Media library, * Posts, pages, custom post types, and taxonomies, * REST APIs, * Import/export, * Widely available hosting. Ok, if you send someone to wp-admin and ask them to install an app, that would be overwhelming. But with the right tooling to guide the user, we can make this real easy. While the final destination would be a hosted WordPress somewhere, there is my.wordpress.net which is a free, hosted-in-the-browser WordPress where you can give it a go without registration. You’ll arrive in an app launcher-like screen: And the Add button takes you to an “App Store” with apps pre-selected for the yet-uncommon use case of “personal software.” Granted, the selection of apps is still limited but this is mostly an effort to kickstart the ecosystem for this use case, while at the same time having some really useful apps that go beyond a simple prototype. Recipes aim to give you more concrete ideas of what you can do: For example, personally, I’ve been enjoying storing my recipes in my WordPress. Some are recipes passed down through family generations. Others are ones I had cherry-picked from the web, then later had to remember which blog I had found them on when I wanted to cook them again. And while “AI Assistant” is quickly becoming an overused concept, I really like how it can not only work with those apps (“I’m trying to eat vegan today, give me a variation of the recipe (I’m currently looking at)”) but also how it can work across app boundaries because they all live in my WordPress (“My friend recently blogged about recipe X, please add it to my cookbook and put it on my meal plan for tomorrow”). Granted, you need to provide your own API key or run Ollama or LM Studio locally (I hope this will get better some day!), but then it can even build the apps you wish for right there as a new plugin that you can then download and share. ### WordPress as the Personal App Platform But back to the point about the platform for apps: I think WordPress is so great because installing an app is as easy as installing a regular WordPress plugin (if not easier, with the My Apps plugin screenshotted above). And for developers, there is this place where all your apps can run, with nice features out of the box, and honestly, AI doesn’t care much in which programming language they implement your dream software. Even PHP. I’ll just admit that my.wordpress.net is my work, so I am biased. But I believe there is real merit in building the future of personal software on the benefits of the legacy of open source WordPress. It was built for one weird use case twenty years ago. It might quietly turn out to be built for the next one too.
001
Alex Kirk @alex.kirk.at · 14/04/2026
WordPress as a personal tool: for keeping memories, staying in touch, owning your data. No audience required.
alex.kirk.at
Why My WordPress?
Most WordPress plugins are built to grow your audience. I’ve been going in the opposite direction for years: building tools not to increase reach, but for personal reasons: to stay connected to people I care about, to keep memories that would otherwise scatter, to own the data that documents my own life. That work has added up to something I’d call a coherent vision. And now, with my.wordpress.net, I believe I have contributed to tearing down one of the last walls that have been blocking people from joining me in this experience. ## The wall I have created many of the plugins I’m going to describe already some while ago. They’ve found an audience, but admittedly inside a bubble: people who already had a WordPress, or were technical enough to spin one up just to try something. But I believe the personal use of WordPress goes beyond people who already use WordPress today. It is not well known that WordPress is a pretty good platform to run just for your own or your small social circle’s benefit. Your free WordPress without setup at my.wordpress.net To try a plugin that makes WordPress personally useful, you first need a WordPress. And setting one up means finding a host, picking a domain, making decisions about a site you’re not even sure you want yet. That’s a publishing commitment, and most people won’t make it just to see if a feed reader or a personal CRM might be useful to them. That’s the wall I kept running into. And that’s why I built my.wordpress.net: a complete WordPress that runs in your browser, no sign-up, no hosting plan, no domain needed. It just behaves like a normal WordPress: you change something, you come back tomorrow, it’s still there. Persistent, and private by default. (This is built on WordPress Playground just with much of the developer-facing complexity removed, playground.wordpress.net will remain.) ## What your personal WordPress can do Once you have a WordPress that’s yours rather than your audience’s, a whole different set of questions becomes interesting. **Keeping memories.** When our first child was born, we wanted to keep a diary. We wanted more than just collecting the photos and videos, we wanted to have a place where we could also write down the stories, the funny things they say, messages in a bottle to them later on. A private blog was the perfect solution for that. And later, with Enable Mastodon Apps, we started using a nice mobile Mastodon app to do it, and grandparents to follow along, who would have thought of that? **Gathering memories.** My daughter had a ski day recently. Photos came in from several different group chats: parents, the teachers. Before Chat to Blog, I would have to save them each and reupload them to my WordPress. But since I can now privately connect it to Beeper (a messaging client that can talk to Signal, Whatsapp, etc) and allows me to put the media directly into a new post and the media library, without any forwarding or downloading. The chat messages can disappear someday and it won’t matter, I still have the blog post. **Staying in touch.** There are people in my life I genuinely care about, where things have faded a little; not because either of us stopped caring, but just because everyone has a busy life. Sometimes all it would take is a reminder to send a quick hello. Personal CRM turns WordPress into a private contact directory for the people who matter to you. Combined with Keeping Contact, it tracks when you last reached out and reminds you when it’s been too long. It’s not a sales tool. It’s just the nudge to actually do it. **What are you reading?** The Friends plugin makes WordPress a feed reader: follow RSS feeds, Atom feeds, ActivityPub accounts. Everything you chose to follow in one timeline, without any algorithm deciding what to surface. Friends 4.0 added three themes: a Google Reader-style interface with keyboard shortcuts (for those who never quite got over losing it in 2013), a Mastodon-style view for people already at home in the Fediverse, and a Block Theme option that integrates with your site’s own design. On a hosted WordPress, you can also participate in the Fediverse directly: follow and be followed, post to your own site and have it federate to Mastodon; and with Enable Mastodon Apps, you can use any Mastodon client to do it. Themes for your Friends Plugin **What articles did you save and actually read?** Post Collection clips articles from the web into your WordPress. Send to E-Reader routes them to your Tolino or Kobo, Kindle or Pocketbook, so the things you saved are the things you actually end up reading, just maybe on a different device on which you saved them. **Keeping family history.** I’ve always enjoyed hearing the little anecdotes from my family, but I wish I’d have a better memory for them. Thus I started keeping a private family wiki where the we collaborate in maintaining a Wikipedia for our family. It feels great to have this family chronicle to pass on. **Longevity.** Right now, in my family, I am the most technical person. What will happen to all those memories in our WordPress? To make sure all those stories can persist, I created Static Archive which turns backups into easily accessible treasure troves. It works by keeping an HTML copy of your posts (and wiki pages) with inline media in your uploads folder, automatically updated every time you publish. It’s not a typical static site generator, it just quietly maintains an archive that is always current. **What do you want to ask your own data?** The AI Assistant empowers you to modify your WordPress through chat. It can create or modify plugins to your liking, theme your site, interact with plugins through abilities that they provide. It pulls AI into your WordPress instead of interacting with it from the outside. This supports local models (for example through LM Studio) as well as OpenAI and Anthropic if you can provide an API key. When announcing My WordPress and also inside my.wordpress.net, we’re using the metaphor of an app because they work like a web app, just hosted on your own WordPress. For the technically inclined: they are indeed plugins, but sometimes multiple working together, installed already configured through a blueprint. The My Apps plugin in action, making it easy to go into your different installed apps ## What this is really about WordPress is a widely available piece of open source software: you have a vast choice of hosts, or you can even install it on your local NAS ( they usually already allow to install WordPress easily). While there are many tools that you can already self-host, each needs individual knowledge to set them up correctly. WordPress can be this one platform that can run all your apps, making it much more accessible. The plugins I mentioned before share a few things in common. Your data lives on your WordPress: contacts, reading lists, saved articles, conversation history. They are not locked into someone else’s service where maybe you can get them out with a data export request, in a format of their choice. But instead, everything lives in one place, and you (or a plugin) can combine it however you want, without involving anyone else. You can modify your WordPress like you want: have plugins created for your needs, modify existing ones to your liking. With AI this is now becoming much more feasible for anyone. And finally, this is all free and open source. No subscriptions, no per-user fees. You can run the software yourself, for as long as you want. ## Getting Started my.wordpress.net can be your starting point. It has its limitations and you might outgrow them. Because it’s a browser-based WordPress, it can reach out to the web to fetch feeds, clip articles, call APIs. But the web can’t reach in: ActivityPub federation, being followed by others, multi-device access: these need a reachable server. But that’s just a natural progression: You start in the browser, discover what you actually want from a personal WordPress, and transfer to a webhost when the networked features become worth it. And if you already have a WordPress, all of this is for you too. Skip my.wordpress.net and proceed to taking back the web for yourself straight away.
104
Alex Kirk @alex.kirk.at · 25/03/2026
## Friends 4.0 It has been baking for much longer than I wanted, but today I released the next major version of my Friends Plugin for WordPress. ### Focussing on ActivityPub The biggest change is a deviation from the original idea: Friendships between […] [Original post on alex.kirk.at]
000
Alex Kirk @alex.kirk.at · 29/11/2025
alex.kirk.at
WordPress Development Without a Computer
With AI coding assistants and WordPress Playground, you can now develop WordPress plugins from your phone. Here's how to set it up.
000
Alex Kirk @alex.kirk.at · 12/11/2025
I’ll speak about Telex and how to use Playground in your AI workflow at today’s WordPress Vienna meetup!
001
Alex Kirk @alex.kirk.at · 14/10/2025
alex.kirk.at
Adapting Tools to Your Needs with AI
These days you can just fix and adapt incomplete tools that you encounter with AI like Claude Code!
000
Reposted by Alex Kirk
Matthias Pfefferle @pfefferle.mastodon.social.ap.brid.gy · 30/09/2025
RE: notiz.blog/podcasts/exploring-wordp… If you have not listened yet ☺️ #ActivityPub #Fediverse #WordPress #textcasting
217
Alex Kirk @alex.kirk.at · 29/09/2025
alex.kirk.at
Proposal: an Interactive Mode for phpcbf
Did you ever get a little annoyed at phpcs? Maybe you're like me: I like the idea of PHP Code Sniffer (phpcs), but I think the user experience has room for improvement: Especially when trying to get larger amounts of PHP code to comply to the coding standards, it feels like this tool just scolds you and you all you can do is to diligently work away on each and every violation that it discovers. And you might have gotten yourself into such a situation because you realized well into the […]
000
Reposted by Alex Kirk
Matthias Pfefferle @pfefferle.mastodon.social.ap.brid.gy · 16/09/2025
I had a really nice chat with @davew about the #web #wordpress #wordland #apis #blogging #rss #textcasting #reallyreallysimplesyndication #activitypub #fediverse and #mastodon …and you‘ll be able to hear it on openchannels.fm in a few days ☺️
openchannels.fm
Open Channels FM - Real people. Real journeys. Open Source.
Do the Woo is a podcast channel for WooCommerce and WordPress builders and businesses. From agencies to freelancers, plugin to SaaS builders.
013
Alex Kirk @alex.kirk.at · 05/09/2025
alex.kirk.at
npm install playground-step-library
I have updated my Playground Step Library (which I had written about before)–the tool that allows you to use more advanced steps in WordPress Playground–so that it can now also be used programmatically: It is now an npm package: playground-step-library. Behind the scenes this actually dominoed into migrating it to TypeScript and restructuring the code so that it now both powers the Web UI and the npm package. Having those custom steps available now makes even more sense that the […]
000
Reposted by Alex Kirk
Jeremy Herve @jeremy.herve.bzh.ap.brid.gy · 03/09/2025
@davew asks us to Think Different about WordPress, and reflects on the future of WordPress, and interfaces to interact with WordPress, whether it is to create or to consume content from a WordPress site. He talks about WordPress in comparison to social networks […] [Original post on herve.bzh]
006
Reposted by Alex Kirk
PressWerk @presswerk.net · 09/07/2025
Auf dem #WCEU in Basel hat @alex von verschiedenen Anwendungsfällen gesprochen, die über das hinausgehen, wofür wir #WordPress klassisch nutzen würden. 🎧 presswerk.net/pw067
015
Alex Kirk @alex.kirk.at · 19/06/2025
alex.kirk.at
Can’t Follow You!
<p>So, I created this little website <a href="https://cantfollowyou.kirk.at/" target="_blank" rel="nofollow noopener noreferrer" translate="no"><span class="invisible">https://</span><span class="">cantfollowyou.kirk.at/</span><span class="invisible"></span></a> as something that you can send to people who don&#8217;t realize that they are on a closed network and what it means to others. A bit like Let me Google that for you but for the Fediverse. Here is the backstory, and some details around it:</p> <p>I attended (German-spoken) FediCamp Graz 2025 last Saturday (see Heinz Wittenbrink&#8217;s summary in German) where we discussed a plethora of topics around the Fediverse, barcamp-style.</p> <p>One question […]</p>
002
Alex Kirk @alex.kirk.at · 26/04/2025
Folien meiner #wcvie Präsentation: alex.kirk.at/wcvie-2025
022
Alex Kirk @alex.kirk.at · 26/04/2025
Starting my talk at #wcvie now! vienna.wordcamp.org/2025/session/de…
021
Alex Kirk @alex.kirk.at · 24/04/2025
alex.kirk.at
WordPress as a Refuge from Algorithms
In a previous post, I have written about how you can use WordPress as your own Mastodon instance with the three plugins ActivityPub, Friends, and Enable Mastodon Apps. The Friends plugin also provides an RSS/Atom feed parser (and can be extended with more of them) so you that you can automatically receive content from many sources. You can also save posts from around the web using the Post Collection plugin, which also provides a "retrieve full content" for excerpt-only RSS feeds. To read […]
000
Reposted by Alex Kirk
Matthias Pfefferle @pfefferle.mastodon.social.ap.brid.gy · 05/03/2025
My first #DoTheWoo episode with @alex is live #woo 🎉 dothewoo.io/decentralized-social-ne… #WordPress #friends #ActivityPub #EnableMastodonApps
dothewoo.io
Decentralized Social Networks & WordPress with Alex Kirk
In the episode of Open Web Conversations, Matthias talks with Alex about the Friends plugin, decentralized networks, and transforming WordPress into a social networking platform.
022
Alex Kirk @alex.kirk.at · 25/02/2025
alex.kirk.at
Reblog of jeckman: WordPress and the Fediverse
Reblog via jeckman. Thanks for mentioning the Friends plugin! [Johne Eckman] gave a talk at the Boston WordPress Meetup last night about WordPress and the Fediverse Slideshare link (You Got Your WordPress in My Fediverse): Went well I think – did not have a ton of time to put it together, and you could spend hours explaining the Fediverse or WordPress, but I tried to make it useful to folks interested in exploring more on their own.
000
Alex Kirk @alex.kirk.at · 28/01/2025
@wigbert@mastodon.world I agree that you want to ensure this for your private data. Thus it does require a privacy plugin that doesn’t leak information indeed, for example that also restricts the REST endpoints. I believe that if there was a bit of a movement, a “best privacy plugin” would […]
alex.kirk.at
Original post on alex.kirk.at
100
Alex Kirk @alex.kirk.at · 24/01/2025
alex.kirk.at
WordPress as a Self-Hosting Platform
Leaving the current drama around WordPress.org aside for now, I believe that there is a use case for WordPress that is heavily underutilized: Using WordPress as a platform for self-hosting. When people think WordPress, they think publishing platform. And, of course, that's its nature. It was built for expressing yourself publicly on the internet. But as we have seen over the years, it is also a pretty good framework on which—through its plugin system—almost anything can be built on top […]
106
Alex Kirk @alex.kirk.at · 07/12/2024
www.wordfence.com/threat-intel/vuln… and the WordPress.org directory pulled it because of it, in my eyes a bit of an overreaction but well…
wordfence.com
Friends <= 3.2.1 - Missing Authorization
000
Alex Kirk @alex.kirk.at · 07/12/2024
In case you noticed that the Friends Plugin wordpress.org/plugins/friends was pulled from the WordPress.org plugin directory, it’s back again. Thanks for all the messages!
wordpress.org
<div class="plugin-description section" id="tab-description"> <h2 id="description-header">Description</h2> <p>The Friends plugin allows you to follow content from other WordPress sites, and interact with them on your own site. You can follow friends and others via RSS. If you also have the ActivityPub plugin installed, you can follow people on Mastodon and other ActivityPub-compatible social networks.</p> <p><strong>Since version 2.6.0, no users will be created for subscriptions.</strong></p> <p><strong>Combine this plugin with the ActivityPub plugin to make your own WordPress your own Mastodon instance. Use the Enable Mastodon Apps to use mobile and desktop Mastodon apps with your own site.</strong></p> <p>The Friends Plugin also has a “friend request” function which allows blogs to become friends with each other. This then allows private publishing on your blog while each of their friends has their own blog but will be able to see your privately published posts.</p> <p>There are many small aspects that make it powerful self-hosted social reader:</p> <p>You can…<br/> – Have multiple feeds per person, so you can subscribe to their blog(s) and social media account(s).<br/> – Categorize incoming content with Post Formats and view all posts of a certain format across your friends.<br/> – Define rules to filter incoming content (sometimes you’re not interested in everything your friends do).<br/> – Turn your favorite blog into your personal newsletter by receiving full-post notification e-mails<br/> – Use feed rules to filter out content you are not interested in.<br/> – Receive ePubs of your friends’ posts to your eReader (via another plugin).<br/> – Collect posts (from your feeds or around the web) in a collection for later reference (via another plugin).</p> <p><a href="https://www.youtube.com/watch?v=4bz6GluXnsk" rel="nofollow ugc"></a></p> <h3>Philosophy</h3> <p>The Friends Plugin was built to make use of what WordPress provides:</p> <ul> <li>You use the WordPress infrastructure (Gutenberg or Classic Editor, what you prefer) to create your posts.</li> <li>If a post is private, only logged-in friends can see it. They can only log in through their own Friends plugin on their blog.</li> <li>Therefore, your friend is just a user on your WordPress blog, their posts are theirs, you can delete them to unfriend them.</li> <li>No extra tables: The Friends plugin just uses a post type, options and some taxonomies to store its data. When you delete the plugin, your WordPress will be slim like before.</li> </ul> <p>In future, I could see mobile apps instead of talking to a third party, to talk to your own blog. It will have your friends’ posts already fetched. Maybe the apps will be specialized, like Twitter or Instagram, where you’d only interact with and create posts in the specific post format.</p> <p>The logo was created by Ramon Dodd, @ramonopoly. Thank you!</p> <p>Documentation for the plugin can be found on the <a href="https://github.com/akirk/friends/wiki" rel="nofollow ugc">GitHub project Wiki</a>.</p> <p><strong>Development of this plugin is done <a href="https://github.com/akirk/friends" rel="nofollow ugc">on GitHub</a>. Pull requests welcome. Please see <a href="https://github.com/akirk/friends/issues" rel="nofollow ugc">issues</a> reported there before going to the <a href="https://wordpress.org/support/plugin/friends" rel="ugc">plugin forum</a>.</strong></p></div> <div class="plugin-screenshots section" id="screenshots"> <h2 id="screenshots-header">Screenshots</h2> <ul class="plugin-screenshots"><li><figure><a href="https://ps.w.org/friends/assets/screenshot-1.png?rev=3000664" rel="nofollow"><img alt="" class="screenshot" decoding="async" src="https://ps.w.org/friends/assets/screenshot-1.png?rev=3000664"/></a><figcaption>Compact view is like Google Reader</figcaption></figure></li><li><figure><a href="https://ps.w.org/friends/assets/screenshot-2.png?rev=3000664" rel="nofollow"><img alt="" class="screenshot" decoding="async" src="https://ps.w.org/friends/assets/screenshot-2.png?rev=3000664"/></a><figcaption>You can use it like a Feed Reader</figcaption></figure></li><li><figure><a href="https://ps.w.org/friends/assets/screenshot-3.png?rev=3000664" rel="nofollow"><img alt="" class="screenshot" decoding="async" src="https://ps.w.org/friends/assets/screenshot-3.png?rev=3000664"/></a><figcaption>But it is centered around users; you can have multiple feeds per person, even on social networks (parsing capabilities provided by plugins)</figcaption></figure></li><li><figure><a href="https://ps.w.org/friends/assets/screenshot-4.png?rev=3000664" rel="nofollow"><img alt="" class="screenshot" decoding="async" src="https://ps.w.org/friends/assets/screenshot-4.png?rev=3000664"/></a><figcaption>Extensible with plugins itself</figcaption></figure></li><li><figure><a href="https://ps.w.org/friends/assets/screenshot-5.png?rev=3000664" rel="nofollow"><img alt="" class="screenshot" decoding="async" src="https://ps.w.org/friends/assets/screenshot-5.png?rev=3000664"/></a><figcaption>Use the customizer to adapt it to your liking</figcaption></figure></li><li><figure><a href="https://ps.w.org/friends/assets/screenshot-6.png?rev=3000664" rel="nofollow"><img alt="" class="screenshot" decoding="async" src="https://ps.w.org/friends/assets/screenshot-6.png?rev=3000664"/></a><figcaption>Categorize incoming content with Post Formats and view all posts of a certain format across your friends</figcaption></figure></li><li><figure><a href="https://ps.w.org/friends/assets/screenshot-7.png?rev=3000664" rel="nofollow"><img alt="" class="screenshot" decoding="async" src="https://ps.w.org/friends/assets/screenshot-7.png?rev=3000664"/></a><figcaption>Use rules to filter incoming content (sometimes you’re not interested in everything your friends do)</figcaption></figure></li><li><figure><a href="https://ps.w.org/friends/assets/screenshot-8.png?rev=3000664" rel="nofollow"><img alt="" class="screenshot" decoding="async" src="https://ps.w.org/friends/assets/screenshot-8.png?rev=3000664"/></a><figcaption>Friends users are plain WordPress users with low privileges</figcaption></figure></li><li><figure><a href="https://ps.w.org/friends/assets/screenshot-9.png?rev=3000664" rel="nofollow"><img alt="" class="screenshot" decoding="async" src="https://ps.w.org/friends/assets/screenshot-9.png?rev=3000664"/></a><figcaption>A Friend Request is accepted in the users screen. Delete the user to reject it or accept the request to make them a friend</figcaption></figure></li></ul></div> <div class="plugin-blocks section" id="blocks"> <h2 id="blocks-header">Blocks</h2> <p>This plugin provides 4 blocks.</p> <ul class="plugin-blocks-list"> <li class="plugin-blocks-list-item"> <span class="block-icon dashicons dashicons-groups"></span> <span class="block-title">Friends List</span> </li> <li class="plugin-blocks-list-item"> <span class="block-icon dashicons dashicons-groups"></span> <span class="block-title">Friend Posts</span> </li> <li class="plugin-blocks-list-item"> <span class="block-icon dashicons dashicons-groups"></span> <span class="block-title">Follow Me</span> </li> <li class="plugin-blocks-list-item"> <span class="block-icon dashicons dashicons-groups"></span> <span class="block-title">Friend Message</span> </li> </ul> </div> <div class="plugin-installation section" id="tab-installation"> <h2 id="installation-header">Installation</h2> <ol> <li>Upload the <code>friends</code> directory to the <code>/wp-content/plugins/</code> directory</li> <li>Activate the plugin through the ‘Plugins’ menu in WordPress</li> </ol></div> <div class="plugin-faq section" id="faq"> <h2 id="faq-header">FAQ</h2> <dl> <dt id="does%20this%20plugin%20create%20custom%20tables%3F"> <h3>Does this plugin create custom tables?</h3> </dt> <dd> <p>No, all the functionality is achieved with standard WordPress means. Subscriptions or Friends are minimal-permission users on your install. External posts are cached in a custom post types and attributed to those users.</p> </dd> <dt id="why%20does%20this%20create%20users%20on%20my%20wordpress%20install%3F"> <h3>Why does this create users on my WordPress install?</h3> </dt> <dd> <p>I believe this is a very elegant way to attribute content and it allows to delete the users content when you delete them. The users have minimal privileges, so they cannot be used to post actual content to your site.</p> <p>The users can only be used for login through your specific friend’s WordPress install (they are created with a strong password throw-away password), if they have been upgraded to a “friend” or “aquaintance” user.</p> </dd> <dt id="why%20is%20the%20friendship%20established%20between%20wordpress%20sites%20and%20not%20wordpress%20users%3F"> <h3>Why is the friendship established between WordPress sites and not WordPress users?</h3> </dt> <dd> <p>For one, this allows to stick with established WordPress configurations and terminologies. For example, you can use the WordPress mobile apps to post privately to your site.</p> <p>Secondly, a lot of WordPresses are like cell phones. Some are used by more than one person but mostly there is a 1:1 relationship between a WordPress blog and a person.</p> <p>If someone has multiple WordPresses this actually allows to segment your friendships. Close friends might want to follow all your blogs but you’d only add your photographer friends to your photoblog.</p> </dd> <dt id="what%20if%20the%20friend%20request%20is%20deleted%20or%20not%20accepted%3F"> <h3>What if the friend request is deleted or not accepted?</h3> </dt> <dd> <p>You’ll still see the public posts from the other WordPress, you’ve subscribed to its public RSS feed.</p> </dd> <dt id="what%27s%20the%20point%3F%20if%20i%20want%20to%20post%20something%20privately%20i%20can%20use%20facebook."> <h3>What’s the point? If I want to post something privately I can use Facebook.</h3> </dt> <dd> <p>Well, that’s actually exactly the point. Facebook owns your data, with WordPress you can decide where you want to host it and have all the benefits of running open source software.</p> </dd> <dt id="what%20happens%20if%20i%20modify%20or%20delete%20a%20post%3F"> <h3>What happens if I modify or delete a post?</h3> </dt> <dd> <p>There is a cache of your friends post in form of a Custom Post Type friend_post that is updated when you change a post. When you delete a post your friends’ WordPresses are notified and they delete the cached post.</p> </dd> </dl></div> <div class="plugin-reviews section" id="tab-reviews"> <h2 id="reviews-header">Reviews</h2> <div class="plugin-reviews"> <article class="plugin-review"> <div class="review-avatar"> <img alt="" class="avatar avatar-60 photo" height="60" src="https://secure.gravatar.com/avatar/11758940384cb1da16cf241616ac1d2e?s=60&amp;d=retro&amp;r=g" srcset="https://secure.gravatar.com/avatar/11758940384cb1da16cf241616ac1d2e?s=120&amp;d=retro&amp;r=g 2x" width="60"/> </div><div class="review"> <header> <div class="header-top"> <div aria-label="5 out of 5 stars" class="wporg-ratings" data-rating="5" data-title-template="%s out of 5 stars" style="color:#ffb900;"><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span></div> <h3 class="review-title"><a class="url" href="https://wordpress.org/support/topic/you-can-use-to-bridge-to-bluesky-too/">You can use to bridge to BlueSky too!</a></h3> </div> <div class="header-bottom"> <span class="review-author author vcard"><a href="https://profiles.wordpress.org/solarbird/" rel="author" title="Posts by solarbird">solarbird</a></span> <span class="review-date">November 22, 2024</span> </div> </header> <div class="review-content">I decided to try to use this to bridge my self-hosted ActivityPub-enabled WordPress blog to BlueSky as well, using the opt-in BridgyFed service which connects BlueSky to the Federation. I found a problem and went to both Friends and BridgyFed to see if we could get it working – and over a weekend(!), got it sorted out and now people are following my blog from BlueSky via Friends and it’s pretty dang seamless! Federation is amazing, this plugin is great, and thanks devs getting this whole fleet of connectors working this quickly was awesome. 😀</div> </div> </article> <article class="plugin-review"> <div class="review-avatar"> <img alt="" class="avatar avatar-60 photo" height="60" src="https://secure.gravatar.com/avatar/a88c80d019717b0f4b38c8963a796317?s=60&amp;d=retro&amp;r=g" srcset="https://secure.gravatar.com/avatar/a88c80d019717b0f4b38c8963a796317?s=120&amp;d=retro&amp;r=g 2x" width="60"/> </div><div class="review"> <header> <div class="header-top"> <div aria-label="5 out of 5 stars" class="wporg-ratings" data-rating="5" data-title-template="%s out of 5 stars" style="color:#ffb900;"><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span></div> <h3 class="review-title"><a class="url" href="https://wordpress.org/support/topic/really-excited-about-the-possibilities-with-this-plugin/">really excited about the possibilities with this plugin</a></h3> </div> <div class="header-bottom"> <span class="review-author author vcard"><a href="https://profiles.wordpress.org/kennethrg/" rel="author" title="Posts by kennethrg">kennethrg</a></span> <span class="review-date">May 4, 2024</span> <span class="review-replies">1 reply</span> </div> </header> <div class="review-content">I started using this plugin in combination with the ActivityPub plugin. ActivityPub broadcasts my posts to Mastodon and other services across the Fediverse; the Friends plugin allows my followers to interact with my posts. Together the result is that my WordPress site acts (sort of) as a Fediverse instance. Very cool!After seeing the possibilities here, I am working on creating a small network of WordPress sites using the Friends plugin. Each of the sites represents an organization working on related community advocacy projects, and I am excited about the possibilities for connecting and sharing information in this way.</div> </div> </article> <article class="plugin-review"> <div class="review-avatar"> <img alt="" class="avatar avatar-60 photo" height="60" src="https://secure.gravatar.com/avatar/6bc65ac9294a7c8d9d8669acda5fcecc?s=60&amp;d=retro&amp;r=g" srcset="https://secure.gravatar.com/avatar/6bc65ac9294a7c8d9d8669acda5fcecc?s=120&amp;d=retro&amp;r=g 2x" width="60"/> </div><div class="review"> <header> <div class="header-top"> <div aria-label="5 out of 5 stars" class="wporg-ratings" data-rating="5" data-title-template="%s out of 5 stars" style="color:#ffb900;"><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span></div> <h3 class="review-title"><a class="url" href="https://wordpress.org/support/topic/while-far-from-perfect-this-is-an-astoundingly-good-idea/">While far from perfect this is an astoundingly good idea</a></h3> </div> <div class="header-bottom"> <span class="review-author author vcard"><a href="https://profiles.wordpress.org/lordmatt/" rel="author" title="Posts by lordmatt">lordmatt</a></span> <span class="review-date">November 12, 2023</span> <span class="review-replies">1 reply</span> </div> </header> <div class="review-content">I’ve got a few blogs running friends and I love it.</div> </div> </article> <article class="plugin-review"> <div class="review-avatar"> <img alt="" class="avatar avatar-60 photo" height="60" src="https://secure.gravatar.com/avatar/a2bdca7870e859658cece96c044b3be5?s=60&amp;d=retro&amp;r=g" srcset="https://secure.gravatar.com/avatar/a2bdca7870e859658cece96c044b3be5?s=120&amp;d=retro&amp;r=g 2x" width="60"/> </div><div class="review"> <header> <div class="header-top"> <div aria-label="5 out of 5 stars" class="wporg-ratings" data-rating="5" data-title-template="%s out of 5 stars" style="color:#ffb900;"><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span></div> <h3 class="review-title"><a class="url" href="https://wordpress.org/support/topic/i-love-it-883/">I love it!</a></h3> </div> <div class="header-bottom"> <span class="review-author author vcard"><a href="https://profiles.wordpress.org/pfefferle/" rel="author" title="Posts by Matthias Pfefferle">Matthias Pfefferle</a></span> <span class="review-date">November 17, 2022</span> </div> </header> <div class="review-content">A federated network based on RSS!</div> </div> </article> </div> <a class="reviews-link" href="https://wordpress.org/support/plugin/friends/reviews/"> Read all 4 reviews </a></div> <div class="plugin-developers section" id="tab-developers"> <h2 id="developers-header">Contributors &amp; Developers</h2> <div class="plugin-contributors"><p>“Friends” is open source software. The following people have contributed to this plugin.</p><span class="screen-reader-text">Contributors</span> <ul class="contributors-list" id="contributors-list"> <li> <img alt="" class="avatar avatar-32 photo" height="32" src="https://secure.gravatar.com/avatar/cec9269f2c7f43871230ff701544d03f?s=32&amp;d=mm&amp;r=g" srcset="https://secure.gravatar.com/avatar/cec9269f2c7f43871230ff701544d03f?s=64&amp;d=mm&amp;r=g 2x" width="32"/> <a href="https://profiles.wordpress.org/akirk/"> Alex Kirk </a> </li> </ul> </div><div class="plugin-development"><p>“Friends” has been translated into 1 locale. Thank you to <a href="https://translate.wordpress.org/projects/wp-plugins/friends/contributors">the translators</a> for their contributions.</p><p><a href="https://translate.wordpress.org/projects/wp-plugins/friends">Translate “Friends” into your language.</a></p><h3>Interested in development?</h3><p><a href="https://plugins.trac.wordpress.org/browser/friends/">Browse the code</a>, check out the <a href="https://plugins.svn.wordpress.org/friends/">SVN repository</a>, or subscribe to the <a href="https://plugins.trac.wordpress.org/log/friends/">development log</a> by <a href="https://plugins.trac.wordpress.org/log/friends/?limit=100&amp;mode=stop_on_copy&amp;format=rss">RSS</a>.</p></div></div> <div class="plugin-changelog section" id="tab-changelog"> <h2 id="changelog-header">Changelog</h2> <h3>3.2.2</h3> <ul> <li>Move permissions checks into a dedicated permission_callback (<a href="https://github.com/akirk/friends/pull/408" rel="nofollow ugc">#408</a>)</li> <li>Add more checks around friendships (<a href="https://github.com/akirk/friends/pull/407" rel="nofollow ugc">#407</a>)</li> </ul> <p>Hoping that this hardening will bring back the plugin to the WordPress.org directory after <a href="https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/friends/friends-321-missing-authorization" rel="nofollow ugc">this issue</a> was was reported. While I am unsure it qualified to get the plugin taken down, I’ve done some hardening and bugfixing in the above pull requests. Unfortunately it was not reported in a way that it could be patched in time. If you have a security issue to report, please follow the instructions on https://github.com/akirk/friends/blob/main/SECURITY.md and/or report through https://github.com/akirk/friends/security.</p> <h3>3.2.1</h3> <ul> <li>OPML Import: Support OPMLs without nesting (<a href="https://github.com/akirk/friends/pull/403" rel="nofollow ugc">#403</a>)</li> </ul> <h3>3.2.0</h3> <ul> <li>Improve Translate Live compatibility (<a href="https://github.com/akirk/friends/pull/401" rel="nofollow ugc">#401</a>)</li> <li>Fix blog follower count in sidebar (<a href="https://github.com/akirk/friends/pull/400" rel="nofollow ugc">#400</a>)</li> </ul> <h3>3.1.9</h3> <ul> <li>Fix bug with loading the main theme (<a href="https://github.com/akirk/friends/pull/398" rel="nofollow ugc">#398</a>)</li> </ul> <h3>3.1.8</h3> <ul> <li>Fix missing JavaScript on the frontend (<a href="https://github.com/akirk/friends/pull/396" rel="nofollow ugc">#396</a>)</li> </ul> <h3>3.1.7</h3> <ul> <li>Add a theme selector (<a href="https://github.com/akirk/friends/pull/393" rel="nofollow ugc">#393</a>)</li> <li>Followers: Add Support for ActivityPub plugins blog profile (<a href="https://github.com/akirk/friends/pull/394" rel="nofollow ugc">#394</a>)</li> <li>Generate the suggested user login from the display name (<a href="https://github.com/akirk/friends/pull/395" rel="nofollow ugc">#395</a>)</li> </ul> <h3>3.1.6</h3> <ul> <li>Site Health: Check if the cron job is enabled (<a href="https://github.com/akirk/friends/pull/391" rel="nofollow ugc">#391</a>)</li> <li>Fix starring of a friend (<a href="https://github.com/akirk/friends/pull/392" rel="nofollow ugc">#392</a>)</li> <li>Layout improvements props @liviagouvea in (<a href="https://github.com/akirk/friends/pull/384" rel="nofollow ugc">#384</a>)</li> </ul> <h3>3.1.5</h3> <ul> <li>Fix next page articles attached in the wrong place (<a href="https://github.com/akirk/friends/pull/388" rel="nofollow ugc">#388</a>)</li> <li>Allow an extra redirect when discovering feeds (<a href="https://github.com/akirk/friends/pull/389" rel="nofollow ugc">#389</a>)</li> </ul> <h3>3.1.4</h3> <ul> <li>Fix Warning: Undefined variable $account (<a href="https://github.com/akirk/friends/pull/385" rel="nofollow ugc">#385</a>)</li> <li>Fixes for Friend Messages (<a href="https://github.com/akirk/friends/pull/387" rel="nofollow ugc">#387</a>)</li> <li>Add Podcast Support (<a href="https://github.com/akirk/friends/pull/386" rel="nofollow ugc">#386</a>)</li> </ul> <h3>3.1.3</h3> <ul> <li>Add AJAX refreshing of feeds (<a href="https://github.com/akirk/friends/pull/382" rel="nofollow ugc">#382</a>)</li> <li>Fix Fatal in the MF2 library (<a href="https://github.com/akirk/friends/pull/381" rel="nofollow ugc">#381</a>)</li> </ul> <h3>3.1.2</h3> <ul> <li>Fix support for threads.net (<a href="https://github.com/akirk/friends/pull/378" rel="nofollow ugc">#378</a>)</li> <li>Add a warning if a user has not enabled ActivityPub on their threads.net account (<a href="https://github.com/akirk/friends/pull/377" rel="nofollow ugc">#377</a>)</li> <li>Upgrade and improve the MF2 library (<a href="https://github.com/akirk/friends/pull/374" rel="nofollow ugc">#374</a>)</li> </ul> <h3>3.1.1</h3> <ul> <li>Improve Name Detection (<a href="https://github.com/akirk/friends/pull/372" rel="nofollow ugc">#372</a>)</li> <li>Add a Button to the Welcome page (<a href="https://github.com/akirk/friends/pull/373" rel="nofollow ugc">#373</a>)</li> </ul> <h3>3.1.0</h3> <ul> <li>Add mark tag CSS to emails to ensure highlighting (<a href="https://github.com/akirk/friends/pull/365" rel="nofollow ugc">#365</a>)</li> <li>Only show the dashboard widgets if the user has enough permissions (<a href="https://github.com/akirk/friends/pull/368" rel="nofollow ugc">#368</a>)</li> <li>Prevent retrieving the same feed in parallel (<a href="https://github.com/akirk/friends/pull/366" rel="nofollow ugc">#366</a>)</li> <li>Add Friend: Use more info from the given URL (<a href="https://github.com/akirk/friends/pull/369" rel="nofollow ugc">#369</a>)</li> <li>Log ActivityPub actions and add the publish date to Announcements (<a href="https://github.com/akirk/friends/pull/364" rel="nofollow ugc">#364</a>)</li> <li>Improve OPML Support (<a href="https://github.com/akirk/friends/pull/370" rel="nofollow ugc">#370</a>)</li> <li>Update blueprints for previewing in WordPress Playground (<a href="https://github.com/akirk/friends/pull/371" rel="nofollow ugc">#371</a>)</li> </ul> <h3>3.0.0</h3> <ul> <li>Show Mutual Followers and allow removing of followers (<a href="https://github.com/akirk/friends/pull/359" rel="nofollow ugc">#359</a>)</li> <li>Add an e-mail notification for new and lost followers (<a href="https://github.com/akirk/friends/pull/358" rel="nofollow ugc">#358</a>)</li> <li>Add the ability to disable notifications per post format and feed parser (<a href="https://github.com/akirk/friends/pull/357" rel="nofollow ugc">#357</a>)</li> <li>Fix 404 on the New private post widget props @liviacarolgouvea (<a href="https://github.com/akirk/friends/pull/361" rel="nofollow ugc">#361</a>)</li> <li>Improve ghost.org ActivityPub compatibility (<a href="https://github.com/akirk/friends/pull/356" rel="nofollow ugc">#356</a>)</li> </ul></div>
101
Alex Kirk @alex.kirk.at · 22/11/2024
alex.kirk.at
Help Make (the) Friends (Plugin) Pretty
While I keep maintaining my Friends plugin for WordPress, there is an area where it could do better because I am not great at it: the visual appeal. From pretty early on, I designed the plugin in a way that it can be mainly used on the frontend (i.e. not in wp-admin), is based on granular template files, and each template file can be overriden. Over time, some of this has changed or improved. For example, you can now see your friends' posts in widgets on your wp-admin dashboard, or, […]
000