WordPress keeps moving toward a setup where AI is part of the core infrastructure rather than a flashy sidebar tool. The release of WordPress AI 0.9.0 is another step in that direction. While the marketing teams talk about “magic,” developers need to look at the actual plumbing: the hooks, the CLI commands, and the model selection logic that decides how these features behave on production sites.
Why 0.9.0 matters
In earlier versions of the AI plugin, we were basically dealing with a black box. You would enable a feature, and it would call a predefined endpoint with very little room for oversight. WordPress AI 0.9.0 adds a “Developer Mode” that goes beyond a UI toggle: you can now configure the provider and model on a per-feature basis.
Why does that matter? Using GPT-4o for a simple “slugify” task wastes tokens and adds latency. You might want a high-parameter model for comment sentiment analysis but something faster and cheaper for bulk alt-text generation. This release lets you make those calls.
Experiment: automated comment moderation
The new Comment Moderation experiment is probably the most practical addition for high-traffic sites. It uses sentiment analysis and toxicity detection to flag comments. If you have ever dealt with a site hit by a coordinated spam attack, you know the native wp_blacklist_keys is a blunt instrument. This new approach acts more like a scalpel.
Technically, this hooks into the pre_comment_approved filter. It looks at intent, not only “bad words.” The catch is that AI is not perfect. I have seen sentiment analysis flag legitimate technical critiques as “toxic” just because the tone was blunt. Always keep a human in the loop for the final moderation step.
Scaling with WP-CLI: bulk alt-text generation
If you are managing a media library with 50,000 images, clicking an “AI Generate” button in the admin UI is a joke. WordPress AI 0.9.0 finally handles this with a dedicated WP-CLI command, which is how heavy lifting like this should work.
# Generate alt text for all images in the media library that are missing it
wp ai alt-text generate --all --missing-only
# Or target a specific attachment ID for testing
wp ai alt-text generate 1024
This command is a lifesaver for accessibility compliance audits. I would run it in a screen session or a background job, since processing thousands of images through an LLM vision model takes a while and you do not want it timing out in your browser.
Fixing the image filename mess
I honestly thought I had seen every way a media library could get messy. Until recently, AI-generated images were often saved with generic, timestamp-based filenames. It was an SEO disaster. In WordPress AI 0.9.0, the plugin slugifies filenames based on the post title or the generation prompt. It is a small refactor that makes a real difference to how the library is organized.
For those of us building custom wrappers around the AI API, you can still filter these outputs. Here is an example of how to append a custom string to these filenames so you can track AI-originated assets:
<?php
/**
* Append a suffix to AI-generated filenames for tracking.
*/
add_filter( 'wp_ai_generated_image_filename', function( $filename ) {
$path_info = pathinfo( $filename );
return $path_info['filename'] . '-ai-generated.' . $path_info['extension'];
}, 10, 1 );
If this WordPress AI 0.9.0 work is eating up your dev hours, I can handle it. I have been wrestling with WordPress since the 4.x days.
Preparing for 1.0.0
The road to version 1.0.0 includes “experiments” like type-ahead suggestions and C2PA provenance tracking. The goal is to make AI a quiet utility inside the editor rather than to brand WordPress as “an AI tool.” If you are building for clients, now is the time to test these features on a staging environment. Do not wait for 1.0.0 to find out that your custom comment filters conflict with the new toxicity detection logic.
For more on integrating these tools, see my guide on building a custom image generation plugin or read about the upcoming WordPress 7.0 AI framework hurdles. For official specs, the WP-CLI command reference is the place to look.