Disabling Unused WordPress Features
Disabling unused WordPress features can reduce background requests, shrink front-end payload, and lower the attack surface. The key is to disable only what you understand and can test - some "performance" toggles can break checkout, dashboards, or editor behavior.
Test changes on staging first. After each change, purge caches and verify key flows (login, forms, search, cart/checkout, wp-admin).
Quick Wins (Usually Safe)
These features are commonly disabled on performance-focused sites.
Disable Emojis and Embeds
If you use Perfmatters, enable its toggles (recommended for simplicity). Otherwise you can use a small MU plugin.
<?php
/**
* Plugin Name: MU - Disable Emojis and Embeds
*/
// Emojis
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_styles', 'print_emoji_styles');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
// Embeds
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');
add_filter('embed_oembed_discover', '__return_false');
Place it in wp-content/mu-plugins/.
Disable Pingbacks / Trackbacks
wp option update default_ping_status closed
Disable Comments (If You Don't Use Them)
wp option update default_comment_status closed
wp option update comment_moderation 0
Tune Instead of Disabling (Commonly Safer)
Post Revisions
Instead of disabling revisions entirely, cap them.
wp config set WP_POST_REVISIONS 10 --raw
Autosave
Instead of trying to remove autosave via theme code, increase the interval.
wp config set AUTOSAVE_INTERVAL 300 --raw
High-Risk Toggles
REST API
Many modern plugins (and WooCommerce) rely on REST endpoints. Disabling it is rarely worth the risk.
If you must restrict it, do it intentionally and test thoroughly.
Example: block REST API for non-logged-in users (use with caution)
add_filter('rest_authentication_errors', function($access) {
if (is_user_logged_in()) {
return $access;
}
return new WP_Error('rest_disabled', 'REST API disabled.', ['status' => 403]);
});
WP-Cron
Disabling WP-Cron can reduce random background work on page loads, but you must replace it with a real cron.
wp config set DISABLE_WP_CRON true --raw
Example server cron (WP-CLI-based):
*/5 * * * * cd /var/www/html && wp cron event run --due-now --quiet
Validate Your Changes
- Confirm constants were written:
grep -E "WP_POST_REVISIONS|AUTOSAVE_INTERVAL|DISABLE_WP_CRON" wp-config.php
- Use DevTools Network to confirm removed scripts are no longer requested.
- Re-run PageSpeed Insights for the same URL and compare metrics.