Code Engine – PHP Snippets, AI Functions & Automation for WordPress
Code Engine is a snippets manager that doesn’t stop at snippets. Yes, it runs your PHP and JavaScript exactly where and when you want: frontend, backend, on a schedule, or inside your content. But its real magic is what happens after you write a function: the same little piece of code instantly becomes a tool your AI chatbots can call, a step you can drag into a visual workflow, and an endpoint the outside world can trigger. One function, three superpowers. Most “code snippets” plugins stop at a textarea and a toggle. Code Engine treats your functions as first-class building blocks for the whole Meow Apps ecosystem, and for anything that can speak REST. Think out of the box, let your creativity flow, because the possibilities really are endless! ✨ For more, check the official website and come say hi on the Discord. Quick Intro Hello! ☀️ I built Code Engine because I was tired of pasting mystery snippets into functions.php and praying. I wanted a place where small bits of code are organized, safe, AI-assisted, and reusable everywhere. Here’s the idea. You write a function (or let the AI write it for you from a plain-English description). That function immediately shows up in three places: AI Engine: your chatbots and MCP clients (Claude, ChatGPT, Claude Code) can call it as a tool, with real arguments. Ask “how many orders shipped today?” and your chatbot runs your function to answer. Workflow Engine: your function appears in the step picker as its very own block. Drag it onto the canvas, wire it between an AI step and a Slack step, done. No glue code. REST / External tools: give it a secure endpoint and a token, then trigger it from Make.com, n8n, Zapier, a cron job, or a webhook. You never wrote an “integration.” You just wrote a function. Code Engine did the rest. 🤝 Core Modules 🧩 Snippets Manager Backend, Frontend, Persistent, Scheduled, Functions, and in-content (PHP/JS) snippets, all in one clean dashboard with tags, search, scope filters, and priorities. 🪄 AI-Assisted Coding Describe what you want in plain English and let AI Engine write the snippet: code, name, arguments, and scope included. Refine existing code or implement it straight from your comments. 🤖 Functions as AI Tools Every Function snippet becomes a function-calling tool and an MCP tool, so your AI Engine chatbots (and external AI agents) can actually do things on your site, not just talk. 🔀 Functions as Workflow Steps Workflow Engine surfaces each of your functions as its own draggable step. Your custom logic becomes a first-class citizen on the automation canvas. 🌐 External Access (REST) Expose any runnable snippet through a secured REST endpoint with a bearer token. Perfect for Make.com, n8n, webhooks, and scheduled external jobs. 🛡️ Safe Mode A snippet that throws a fatal error is automatically caught and disabled before it can take your site down. Code with confidence. ⏰ Scheduling Run a snippet daily at a chosen time via WP-Cron (reports, cleanups, syncs) without touching the server crontab. 🧱 Code Blocks & Shortcodes (Pro) Drop PHP or JS straight into a post or page with a Gutenberg block or the [code-engine] shortcode, with safety guards. 🧩 Snippets, the way they should be Code Engine organizes your code by scope, so each snippet runs exactly where it belongs: Persistent: runs everywhere (frontend and backend). Your everyday “add this to functions.php” code, but managed. Frontend: runs only on the public site. Backend: runs only in the admin. Function: a named, callable function with typed arguments and defaults. This is the reusable building block (see below). Scheduled: runs on a WP-Cron schedule, at the hour and minute you pick. Content (PHP / JS): runs inside a specific post or page, via a Gutenberg Code Block or the [code-engine] shortcode (Pro). Everything is searchable, taggable, sortable by priority, and importable/exportable. The CodeMirror editor gives you proper syntax highlighting and keyboard shortcuts (Cmd+S to save, Cmd+Enter to run). A nikic/php-parser pass validates your PHP before it ever runs. 🪄 Let AI write it for you Don’t feel like writing the boilerplate? Describe the snippet in plain language and Code Engine, powered by AI Engine, generates the whole thing: the code, a sensible name, a description, the right scope, and, for functions, the argument list with names, types, and defaults. Already have code? Ask the AI to modify it from a prompt, or write a few comments describing what you want and let it fill in the implementation. It’s pair programming, right inside your dashboard. ✨ The big idea: write once, use everywhere This is what makes Code Engine different. A Function snippet is not just code you call from other code. It’s a reusable capability that the rest of your stack can plug into. The moment you save it, the same function is available in three places at once: 1. As an AI tool, for chatbots and AI agents With AI Engine active, your functions are exposed through function calling and over MCP (Model Context Protocol). Your on-site chatbot can run them mid-conversation, and external AI agents (Claude, Claude Code, ChatGPT, OpenClaw) can call them too. Want a chatbot that checks stock, looks up a booking, or kicks off a process? Write the function; the chatbot gains the skill. 2. As a workflow step, for automation With Workflow Engine, every active function shows up in the Add-step picker as its own block, named after your snippet, with one input per argument. Drag it onto the canvas and wire it between other steps: an AI step that summarizes, your function that saves, a Social Engine step that posts. There’s also a generic “Execute snippet (by ID / by name)” step when you want to call one dynamically. You never write integration code; your function is the integration. 3. As a REST endpoint, for the outside world Give a snippet a custom endpoint name and a bearer token, and it’s instantly callable from anywhere: POST /wp-json/code-engine/v1/snippets-endpoint/your-endpoint Pass arguments as JSON in the body, secure it with a token, and trigger it from Make.com, n8n, Zapier, GitHub Actions, or a humble cron job. Automation without a middleware bill. 🛡️ Safe by default Running arbitrary code is powerful, so Code Engine takes safety seriously: Safe Mode catches fatal errors and auto-disables the offending snippet, so a typo never white-screens your site. REST whitelisting means global snippets only run on trusted REST routes by default, so you choose what to open up. Per-snippet tokens secure your external endpoints. Validation with a real PHP parser before code is saved. For developers who want fewer guardrails, there’s a “Bypass REST Security” option and filters (mwcode_rest_authorized, mwcode_rest_whitelist) to tailor exactly what’s allowed. Works beautifully with the Meow Apps family Code Engine is one engine in a connected set, each one useful alone, magical together: AI Engine: chatbots, content generation, and MCP. Turns your functions into AI tools. Workflow Engine: visual automation. Turns your functions into draggable steps. SEO Engine: smart, lightweight AI SEO. Social Engine: schedule and automate social posts. Why Code Engine? Reusable, not throwaway Other snippet plugins give you a place to paste code. Code Engine gives you a place to build capabilities that your AI, your workflows, and your external tools can all use. Native to WordPress Clean, fast, and built the WordPress way. No clunky external dashboards, no bloat. AI-native Write snippets with AI, expose them to AI. The whole loop lives in your wp-admin. Developer friendly REST API, MCP tools, function calling, scheduling, import/export, and plenty of filters to hook into. Cared for Part of the Meow Apps family, with regular updates and a real human behind it. 💕
Top keywords
- code32×2.48%
- engine25×1.94%
- ai22×1.71%
- function18×1.40%
- rest13×1.01%
- snippet13×1.01%
- code engine11×0.85%
- functions11×0.85%
- write10×0.78%
- runs9×0.70%
- snippets9×0.70%
- step9×0.70%
Code Embed
IMPORTANT: If updating from an earlier version of the plugin, please check the section named “Plugin Behaviour Changes”, below, for anything which could impact your existing set-up Code Embed allows you to embed code (JavaScript, CSS and HTML – it can’t be used for server-side code, such as PHP) in a post, without the content being changed by the editor. This is incredibly useful for embedding third-party scripts, etc. The plugin is used by many large sites, including Mozilla. Key features include… Add HTML or JavaScript to posts or pages – particularly useful for embedding videos! Embed in widgets using the Widget Logic plugin. Global embedding allows you to set up some code in one post or page and then access it from another. Modify the keywords or identifiers used for embedding the code to your own choice. Search for embedding code via a simple search option. Add a simple suffix to the embed code to convert videos to responsive output. Embed an external script directly using just the URL. Conforms to WCAG 2.1 AA standards. And much, much more! Iconography is courtesy of the very talented Janki Rathod. Please visit the Github page for the latest code development, planned enhancements and known issues. Getting Started To use this plugin, you need to have custom fields enabled on your site. If you’re using the block editor, you may need to switch this on first – please scroll down to the next section to learn how to do this. If you’re using the classic editor, then you’ll find the custom fields at the bottom of the editor screen. Although this plugin works for both posts and pages, for simplicity I will simply refer to posts – bear in mind that pages work in the same way. Once you have custom fields switched on, here’s how easy it is to use… Once you have the plugin installed, start a new post. Scroll down to the bottom of the screen and look for the “Custom Fields” section. Under “Add New Custom Field”, enter a name of CODE1 and your embed code as the value. In your post content, add {{CODE1}} where you wish the embed code to appear. And that’s it – when the post is viewed or previewed, {{CODE1}} will be replaced with the code that you asked to be embedded. This should get you started – for more information and advanced options, please see below. Alternatively, there’s a fantastic guide at Elftronix which I would recommend. Using this plugin with the block editor (aka Gutenberg) By default, custom fields are hidden inside the block editor but can be revealed. Edit or create a post. Click the settings button (three dots) in the top right-hand corner. Go to Preferences. Click the Panels tab. You will find a button to toggle the ‘Custom Fields’ meta box – make sure this is toggled to “on”. A button should appear titled “Enable & Reload” – you’ll need to click on that and wait for the page to reload before the custom fields will appear. Check out the screenshots for how the custom fields should look. I can’t find the custom fields For block editor users, I’m assuming you’ve done the above. For classic editor users, the custom fields should be present by default. In all cases they should appear at the bottom of the editor screen. From version 2.4, anyone without the “unfiltered HTML” capability won’t be able to use custom fields, for added security. Please see the section “Custom Field Security”, below, for more details. If none of the above applies, then you may have a theme or plugin that removes this or may have a problem with your WordPress installation – you will need to try the usual diagnostics to try and resolve this, including requesting help on the WordPress support forum. The Code Embed Options Screen While in WP Admin, if you go to Settings -> Code Embed, you’ll be able to access the options that are available for this plugin. Code embedding is performed via a special keyword that you must use to uniquely identify where you wish the code to appear. This consists of an opening identifier (something that goes at the beginning), a keyword and then a closing identifier. You may also add a suffix to the end of the keyword if you wish to embed multiple pieces of code within the same post. From this options screen, you can specify the above identifier that you wish to use. By default, the opening and closing identifiers are double braces and the keyword is CODE. During these instructions these will be used in all examples. The options screen is only available to those with a capability to manage options or greater. All the other Code Embed menu options are available to users with a capability to edit posts or greater. How to Embed Code To embed in a post, you need to find the meta box under the post named “Custom Fields”. If this is missing, you may need to add it by clicking on the “Screen Options” tab at the top of the new post screen. Now create a new custom field with the name of your keyword – e.g. CODE. The value of this field will be the code that you wish to embed. Save this custom field. Now, wherever you wish the code to appear in your post, simply put the full identifier (opening, keyword and closing characters). For example, {{CODE}}. If you wish to embed multiple pieces of code within a post, you can add a suffix to the keyword. So we may set up 2 custom fields named CODE1 and CODE2. Then in our post we would specify either {{CODE1}} or {{CODE2}} depending on which you wish to display. Don’t forget – via the options screen you can change any part of this identifier to your own taste. How to Embed Code from an External URL If you specify a URL within your post, surrounded by your choice of identifiers, then the contents of the URL will be embedded within your post. Obviously, be careful when embedding a URL that you have no control over, as this may be used to hijack your post by injecting, for example, dangerous JavaScript. For example, using the default options, you could embed the contents of a URL using the following method… {{http://www.example.com/code.php}} or {{https://www.example.com/code.html}} How to Use Global Embedding You can also create global embeds – that is, creating one piece of embed code and using it in multiple posts or pages. To do this, simply make reference to an already defined (but unique) piece of embed code from another post or page. So, let’s say in one post you define a custom field named CODE1. You can, if you wish, place {{CODE1}} not just in that post but also in another and it will work. However, bear in mind that the embed code name must be unique – you can’t have defined it in multiple posts, otherwise the plugin won’t know which one you’re referring to (although it will report this and list the posts that it has been used in). In the administration menu, there is a sidebar menu named “Tools”. Under this is a sub-menu named “Code Search”. Use this to search for specific embed names and it will list all the posts/pages that they’re used on, along with the code for each. Embedding in Widgets Natively, you cannot use the embed facilities within sidebar widgets. However, if you install the plugin Widget Logic, then Code Embed has been set up to make use of this and add the ability. Install Widget Logic and activate. In Administration, select the Widgets page from the Appearance menu. At the bottom there will be a set of Widget Logic options. Ensure ‘Use widget_content filter’ is ticked and press Save. Although you cannot set up embed code within a widget, you can make reference to it, for example by writing {{CODE1}} in the widget. Responsive Output Conversion Responsive output is where an element on a web page dynamically resizes depending upon the current available size. Most video embeds, for instance, will be a fixed size. This is fine if your website is also of a fixed size; however, if you have a responsive site then this is not suitable. Code Embed provides a simple suffix that can be added to an embed code and will convert the output to being responsive. This works best with videos. To use, when adding the embed code onto the page, simply add _RES to the end, before the final identifier. For example, {{CODE1_RES}}. The _RES should not be added to the custom fields definition. This will now output the embedded code at full width, dynamically resizing as required. If you don’t wish the output to be full width, you can specify a maximum width by adding an additional _x on the end, where x is the required width in pixels. For example, {{CODE1_RES_500}} will output CODE1 as responsive but with a maximum width of 500 pixels. It should be noted that this is an experimental addition and will not work in all circumstances. Embedding in excerpts By default, embed code will not appear in excerpts. However, you can switch this ability on via the Code Embed options screen. If you do this, then the standard rules of excerpts will still apply but only once the code embed has been applied. For example, excerpts are just text, a specific length, etc. Filtering of code By default, WordPress allows unfiltered HTML to be used by users in post custom fields, even if their role is set up otherwise. This opens up the possibility of leaving a site vulnerable, if any plugins that use this data don’t check it appropriately. “Out of the box,” neither the contributor nor author roles have unfiltered HTML capabilities but can access custom post fields. As this plugin requires the use of unfiltered HTML, we need to ensure that only authorized users can use it. From version 2.5, any users without this permission that update a post containing embeds from this plugin will cause the code to be filtered. Plugin Behaviour Changes Security hardening has meant that some changes to behaviour have had to change after specific releases. Here I’ll document any known changes… Version 2.6.4 – A global embed will now have scripts stripped on any post authored by a user without unfiltered_html. Safe-HTML global embeds (iframes, video, etc.) are unaffected. Previously scripts rendered everywhere. Version 2.6.4 – Global embeds stored on a draft/private post stop resolving on the front end. If you (or your users) deliberately keep a “global embed library” as an unpublished post, that pattern breaks – they’d need to publish it Version 2.6.3 – Global embeds are now case-sensitive (which it always should have been). If any existing live content relies on accidental case-insensitive matching (e.g. {{CODE1}} pulling a code1 field), it will stop resolving Reviews & Mentions “Works like a dream. Fantastic!” – Anita. “Thank you for this plugin. I tried numerous other iframe plugins and none of them would work for me! This plugin worked like a charm the FIRST time.” – KerryAnn May. Embedding content – WSD Blogging Server. Animating images with PhotoPeach – Cómo hago.