Managing access with WordPress custom capabilities
How to replace scattered current_user_can checks with real WordPress custom capabilities: register them, assign them to roles, and wrap the checks, with a CRM example.
How to replace scattered current_user_can checks with real WordPress custom capabilities: register them, assign them to roles, and wrap the checks, with a CRM example.
My honest read on the WordPress AI Abilities API coming in 6.9, and why I tell clients to build on the core API instead of bolting on a beta library that breaks every update.
A WordPress agency published solid dev tutorials and still landed no clients. The fix was not more SEO, it was writing content around what clients actually struggle with.
Why I stopped building one-off REST endpoints for a client AI integration and used the WordPress 6.9 Abilities API instead, with the code to register a single ability.
After watching a junior dev burn hours on Gutenberg boilerplate, I finally tried the AI tools for web development everyone talks about. The two that stuck were Copilot and Cursor.
An agency told a client WordPress couldn’t handle their e-commerce project. Most WordPress myths about security, speed, and scale come down to bad implementation, not the platform itself.
A WooCommerce store stuffed all its product attributes into post meta, and the filters buckled under thousands of products. The fix was a custom taxonomy for the shared, filterable data.
A client wanted an AI assistant for his WooCommerce store. Wiring an LLM straight to the database is risky, but the WooCommerce MCP Beta and the Abilities API give AI a structured, safer set of actions to work with.
A client’s AI-built WordPress site looked generic because his prompts were vague. The fix is to treat the AI like a junior developer and write a detailed brief, not a wish. Here is what that looks like.
A client wanted the same URL list on an admin page, a homepage block, and an external API. The old way meant duplicating logic. The WordPress Abilities API lets you define the feature once and reuse it everywhere.