Sign inBlogSupportContact
Performance

Disable the WordPress features you don't use

Emojis, embeds, jQuery Migrate, public REST API. 14 features you can turn off with one command — and turn back on just as fast.

4 min read May 2026 disable feature

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

"Speed up WordPress" pluginsInstall a 2MB optimisation plugin to disable a few KB of emoji scripts. The fix weighs more than the problem.
Snippets in functions.phpPaste 14 different code snippets you found on Stack Overflow. Forget which theme has them. Lose them on the next theme switch.
MU-pluginsWrite a must-use plugin, drop it in 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.

TrueCommander
Disable feature
Disabled 3 features
Emojis — removed from wp_head
Embeds — oEmbed disabled
jQuery Migrate — dequeued

Each 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).

FeatureWhat it does
commentsDisable comments and trackbacks across all post types
emojisRemove WordPress emoji scripts and styles
xmlrpcDisable XML-RPC endpoint (attack-surface reduction)
rest-apiBlock unauthenticated REST API requests
wp-cronDisable internal WP-Cron (use system cron instead)
heartbeatDisable admin heartbeat polling
embedsDisable oEmbed functionality
dashiconsDisable dashicons for non-logged-in visitors
jquery-migrateRemove jQuery Migrate dependency
file-editingDisable theme/plugin file editor in admin
user-registrationDisable public user registration
admin-barDisable the frontend admin bar
wp-versionRemove WordPress version meta tag
query-stringsRemove ?ver= from script and style URLs

How it works

1
Run disable feature with a comma-separated listEach feature in the list becomes its own startup row.
2
Startup commands apply the hook on every page loadThe feature is gone the next time WordPress renders anything.
3
Run enable feature to bring something backOnly the named feature's row is removed. Everything else stays disabled.
DetailValue
Command namesdisable feature, enable feature
PersistenceStored as startup commands (per-feature rows)
ReversibilityOne 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

Ready?

Trim your WordPress before launch.

One of 91 commands. All included with every license.

Cookies. The short version.

Essential cookies keep the cart and theme working. Analytics only fire if you say yes. Read our policy.