{"id":6977,"date":"2026-02-26T10:57:41","date_gmt":"2026-02-26T09:57:41","guid":{"rendered":"https:\/\/vienna.wordcamp.org\/2026\/?post_type=wcb_session&#038;p=6977"},"modified":"2026-04-20T09:46:57","modified_gmt":"2026-04-20T07:46:57","slug":"build-your-first-ai-powered-wordpress-plugin","status":"publish","type":"wcb_session","link":"https:\/\/vienna.wordcamp.org\/2026\/session\/build-your-first-ai-powered-wordpress-plugin\/","title":{"rendered":"Build your first AI-Powered WordPress plugin"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">So you&#8217;ve heard about the WordPress Core AI projects. Maybe you&#8217;ve read the blog posts, skimmed the GitHub repositories, or watched a talk about what&#8217;s coming. But there&#8217;s a massive difference between understanding something conceptually and actually building with it. If that\u2019s the case, then this workshop is for you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this workshop, you\u2019ll learn to build a working AI-powered WordPress plugin from scratch. You&#8217;ll leave with functioning code on your laptop and a solid understanding of how each of these tools works, so you can start experimenting on your own.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What we&#8217;ll build:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We&#8217;re going to create a plugin that registers custom abilities, exposes them via the Model Context Protocol, and uses the WP AI Client to add intelligent behaviour. By the end, you&#8217;ll have a plugin that lets an AI assistant interact with your WordPress site\u2014discovering what&#8217;s possible and taking actions on your behalf.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prerequisites:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A laptop with a local WordPress development environment that you are familiar with (I\u2019ll be using <a href=\"https:\/\/developer.wordpress.com\/studio\/\">WordPress Studio<\/a>)<\/li>\n\n\n\n<li><a href=\"https:\/\/wordpress.org\/news\/2026\/03\/wordpress-7-0-release-candidate-2\/\">WordPress 7.0-RC2 installed<\/a><\/li>\n\n\n\n<li>Familiarity with WordPress plugin development, PHP, and JavaScript<\/li>\n\n\n\n<li><a href=\"https:\/\/git-scm.com\/\">Git<\/a>, <a href=\"https:\/\/getcomposer.org\/\">Composer<\/a> and <a href=\"http:\/\/node.js\/\">Node.js<\/a> installed and working, the latest stable versions<\/li>\n\n\n\n<li>An API key from one of the following AI model providers:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/aistudio.google.com\/app\/api-keys\">Google<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/console.anthropic.com\/settings\/keys\">Anthropic<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/platform.openai.com\/\">OpenAI<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>If you prefer not to register an API Key with one of these providers, you can also install <a href=\"https:\/\/ollama.com\/\">Ollama<\/a> and a local model of your choice, but you will need to do this before the workshop.\n<ul class=\"wp-block-list\">\n<li>These models should give you a working offline experience:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/ollama.com\/library\/gemma4\">Google Gemma<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/ollama.com\/library\/qwen3.5\">Qwen<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/ollama.com\/library\/mistral\">Mistral<\/a>\/<a href=\"https:\/\/ollama.com\/library\/ministral-3\">Ministral<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>One of the following MCP-compatible agentic AI applications:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/claude.com\/download\">Claude Desktop<\/a>\u00a0<\/li>\n\n\n\n<li><a href=\"https:\/\/code.visualstudio.com\/\">VS Code<\/a> with <a href=\"https:\/\/code.visualstudio.com\/docs\/copilot\/overview\">GitHub Copilot<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cursor.com\/\">Cursor<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/claude.com\/product\/claude-code\">Claude Code<\/a> is also acceptable if you use that.<\/li>\n\n\n\n<li>You may use your own MCP-compatible AI agent, but I won\u2019t be able to support you if things go wrong.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>The patience to troubleshoot if things don&#8217;t work the first time (they rarely do, and that&#8217;s part of learning)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Fair warning: once you see an AI assistant execute an ability you wrote yourself, you&#8217;ll probably spend the rest of the weekend thinking of things to build. Don&#8217;t say I didn&#8217;t warn you.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So you&#8217;ve heard about the WordPress Core AI projects. Maybe you&#8217;ve read the blog posts, skimmed the GitHub repositories, or watched a talk about what&#8217;s coming. But there&#8217;s a massive difference between understanding something conceptually and actually building with it. If that\u2019s the case, then this workshop is for you. In this workshop, you\u2019ll learn [&hellip;]<\/p>\n","protected":false},"author":7511363,"featured_media":0,"template":"","meta":{"_crdt_document":"","jetpack_post_was_ever_published":false,"_wcpt_session_time":1775831400,"_wcpt_session_duration":3600,"_wcpt_session_type":"session","_wcpt_session_slides":"https:\/\/vienna.wordcamp.org\/2026\/files\/2026\/04\/Build-your-first-AI-Powered-WordPress-plugin.pptx","_wcpt_session_video":"","_wcpt_speaker_id":[7077],"footnotes":""},"session_track":[34],"session_category":[],"class_list":["post-6977","wcb_session","type-wcb_session","status-publish","hentry","wcb_track-workshop-3"],"jetpack_sharing_enabled":true,"session_date_time":{"date":"April 10, 2026","time":"4:30 pm"},"session_speakers":[{"id":"7077","slug":"jonathan-bossenger","name":"Jonathan Bossenger","link":"https:\/\/vienna.wordcamp.org\/2026\/speaker\/jonathan-bossenger\/"}],"session_cats_rendered":null,"_links":{"self":[{"href":"https:\/\/vienna.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions\/6977","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vienna.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions"}],"about":[{"href":"https:\/\/vienna.wordcamp.org\/2026\/wp-json\/wp\/v2\/types\/wcb_session"}],"version-history":[{"count":3,"href":"https:\/\/vienna.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions\/6977\/revisions"}],"predecessor-version":[{"id":8616,"href":"https:\/\/vienna.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions\/6977\/revisions\/8616"}],"speakers":[{"embeddable":true,"href":"https:\/\/vienna.wordcamp.org\/2026\/wp-json\/wp\/v2\/speakers\/7077"}],"author":[{"embeddable":true,"href":"https:\/\/vienna.wordcamp.org\/2026\/wp-json\/wporg\/v1\/users\/psykro"}],"wp:attachment":[{"href":"https:\/\/vienna.wordcamp.org\/2026\/wp-json\/wp\/v2\/media?parent=6977"}],"wp:term":[{"taxonomy":"wcb_track","embeddable":true,"href":"https:\/\/vienna.wordcamp.org\/2026\/wp-json\/wp\/v2\/session_track?post=6977"},{"taxonomy":"wcb_session_category","embeddable":true,"href":"https:\/\/vienna.wordcamp.org\/2026\/wp-json\/wp\/v2\/session_category?post=6977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}