WordPress ships with everything turned on
WordPress is built to support every kind of site, so every feature is on by default. Emoji scripts in wp_head. Embeds for oEmbed providers. jQuery Migrate for legacy themes. A public REST API that responds to anyone. Heartbeat polling every 60 seconds.
Most of these you'll never use. They're just bytes you ship to every visitor, and a handful of attack surface you don't need.
What most people do
wp-content/mu-plugins/. Works fine. But it's invisible to other admins and needs FTP to change.A better way: toggle with one command
Open the navigator. Type disable feature. Pick what you want gone. Hit enter.
TrueCommander registers it as a startup command, which means it runs on every page load from then on. Want it back? Type enable feature, pick the same item, gone from the disable list. Features return on the next page load.
wp_headEach feature is its own startup row. Disable five features, you get five separate startup entries. Want one back? enable feature only touches that one. Nothing else moves.
The 14 features you can disable
Every option is reversible. Most affect the frontend (page weight, requests); a few affect the admin (heartbeat polling, file editing).
| Feature | What it does |
|---|---|
comments | Disable comments and trackbacks across all post types |
emojis | Remove WordPress emoji scripts and styles |
xmlrpc | Disable XML-RPC endpoint (attack-surface reduction) |
rest-api | Block unauthenticated REST API requests |
wp-cron | Disable internal WP-Cron (use system cron instead) |
heartbeat | Disable admin heartbeat polling |
embeds | Disable oEmbed functionality |
dashicons | Disable dashicons for non-logged-in visitors |
jquery-migrate | Remove jQuery Migrate dependency |
file-editing | Disable theme/plugin file editor in admin |
user-registration | Disable public user registration |
admin-bar | Disable the frontend admin bar |
wp-version | Remove WordPress version meta tag |
query-strings | Remove ?ver= from script and style URLs |
How it works
disable feature with a comma-separated listEach feature in the list becomes its own startup row.enable feature to bring something backOnly the named feature's row is removed. Everything else stays disabled.| Detail | Value |
|---|---|
| Command names | disable feature, enable feature |
| Persistence | Stored as startup commands (per-feature rows) |
| Reversibility | One enable feature call per feature you want back |
| Can be used in |
Real example
You're prepping a client site for launch. The site doesn't use comments. It doesn't embed Twitter or YouTube. The theme is built on a modern JavaScript stack — no jQuery anywhere. The site is private to the client until launch — REST API for guests is just attack surface.
You run: disable feature -feature=comments,emojis,embeds,jquery-migrate,rest-api,xmlrpc
Six features off in one command. Six startup rows in your TrueCommander admin. Three months later the client says "actually we want comments." You run enable feature -feature=comments. That row is gone, comments are back, every other feature stays off.
Goes further with TrueCommander
enable feature with whatever's currently off. Useful when debugging a theme that suddenly needs jQuery Migrate.