
WordPress Debloat: 11 sposobów, których używam, by odchudzić stronę
Spis treści
WordPress to potężne narzędzie, ale jego filozofia “wszystko dla każdego” sprawia, że na start dostajemy mnóstwo dodatków, których większość nowoczesnych projektów po prostu nie potrzebuje. Przez lata wypracowałem zestaw konkretnych fragmentów kodu, które pozwalają mi pozbyć się zbędnego balastu bez wpływu na kluczowe działanie strony.
Ten przewodnik to nie tylko lista rzeczy do usunięcia, to strategiczne podejście do wydajności. Inspiracją był dla mnie doskonały artykuł Terence’a Edena, który uzupełniłem o własne rozwiązania sprawdzone w boju.
Dlaczego warto odchudzić WordPressa?
Po co zawracać sobie głowę kilkoma małymi skryptami? Bo one się sumują. Każda zbędna linia to potencjalny konflikt, milisekundy opóźnienia w renderowaniu czy po prostu niepotrzebne bajty wysyłane do użytkownika.
Nasze cele:
- Rozmiar DOM – usunięcie nieużywanych stylów inline.
- Liczba zapytań HTTP – wyłączenie skryptów, których nie powinno tam być.
- Bezpieczeństwo – wyłączenie przestarzałych protokołów jak XML-RPC.
- Core Web Vitals – bezpośredni wpływ na LCP i CLS poprzez usunięcie blokujących renderowanie elementów.
[!IMPORTANT] Zachowaj ostrożność: Nie każdy “bloat” jest bezużyteczny. Jeśli polegasz na specyficznym stylowaniu klasycznego edytora lub Twoi użytkownicy korzystają z bardzo starych przeglądarek wymagających skryptów emoji, niektóre z tych poprawek mogą nie być dla Ciebie. Zawsze testuj zmiany na środowisku testowym.
Kompletny skrypt optymalizacji
Dodaj poniższy kod do pliku functions.php Twojego motywu. Każda sekcja jest opatrzona komentarzami i linkami do źródeł.
1. Usuń style Classic Theme
WordPress dodaje “classic-theme-styles” nawet w niestandardowych motywach. Usuń je:
// Usuń wymuszony classic theme.
function disable_classic_theme_styles() {
wp_deregister_style( "classic-theme-styles" );
wp_dequeue_style( "classic-theme-styles" );
}
add_action( "wp_enqueue_scripts", "disable_classic_theme_styles" );
2. Usuń obsługę emoji
WordPress konwertuje tekstowe emoji na obrazy i dodaje skrypty wykrywające. Jeśli Twoi odwiedzający mają obsługę emoji (co mają wszystkie nowoczesne przeglądarki), to jest zbędne:
// Usuń WP Emoji.
// http://www.denisbouquet.com/remove-wordpress-emoji-code/
remove_action( "wp_head", "print_emoji_detection_script", 7 );
remove_action( "wp_print_styles", "print_emoji_styles" );
remove_action( "admin_print_scripts", "print_emoji_detection_script" );
remove_action( "admin_print_styles", "print_emoji_styles" );
// https://wordpress.org/support/topic/remove-the-new-dns-prefetch-code/
add_filter( "emoji_svg_url", "__return_false" );
// Zatrzymaj zamianę emoji na obrazy w RSS / Atom Feeds
// https://danq.me/2023/09/04/wordpress-stop-emoji-images/
remove_filter( "the_content_feed", "wp_staticize_emoji" );
remove_filter( "comment_text_rss", "wp_staticize_emoji" );
3. Wyłącz automatyczne formatowanie tekstu
WordPress “teksturyzuje” Twoją treść, zamieniając proste cudzysłowy na typograficzne, podwójne myślniki na półpauzy itp. Może to psuć przykłady kodu:
// Usuń automatyczne formatowanie.
// https://css-tricks.com/snippets/wordpress/disable-automatic-formatting/
remove_filter( "the_content", "wptexturize" );
remove_filter( "the_excerpt", "wptexturize" );
remove_filter( "comment_text", "wptexturize" );
remove_filter( "the_title", "wptexturize" );
// Więcej formatowania.
add_action("init", function() {
remove_filter( "the_content", "convert_smilies", 20 );
foreach ( array( "the_content", "the_title", "wp_title", "document_title" ) as $filter ) {
remove_filter( $filter, "capital_P_dangit", 11 );
}
remove_filter( "comment_text", "capital_P_dangit", 31 );
remove_filter( "the_content", "do_blocks", 9 );
}, 11);
Uwaga: Filtr
capital_P_dangitto sposób WordPress na automatyczną korektę “Wordpress” na “WordPress”. Jest agresywny i często niepożądany.
4. Usuń style i skrypty Gutenberga
Jeśli używasz własnego motywu i nie polegasz na frontendowych stylach Gutenberga, usuń je:
// Usuń style Gutenberga.
// https://wordpress.org/support/topic/how-to-disable-inline-styling-style-idglobal-styles-inline-css/
remove_action( "wp_enqueue_scripts", "wp_enqueue_global_styles" );
// Usuń widgety edycji Gutenberga.
// Z https://wordpress.org/plugins/classic-widgets/
add_filter( "gutenberg_use_widgets_block_editor", "__return_false" );
add_filter( "use_widgets_block_editor", "__return_false" );
// Usuń CSS biblioteki bloków Gutenberga z frontendu.
// https://smartwp.com/remove-gutenberg-css/
function remove_wp_block_library_css() {
wp_dequeue_style( "wp-block-library" );
wp_dequeue_style( "wp-block-library-theme" );
wp_dequeue_style( "wp-components" );
}
add_action( "wp_enqueue_scripts", "remove_wp_block_library_css", 100 );
5. Usuń meta tagi z nagłówka
Wyczyść sekcję <head> usuwając niepotrzebne meta tagi:
// Usuń shortlink.
// https://stackoverflow.com/questions/42444063/disable-wordpress-short-links
remove_action( "wp_head", "wp_shortlink_wp_head" );
// Usuń RSD.
// https://wpengineer.com/1438/wordpress-header/
remove_action( "wp_head", "rsd_link" );
// Usuń dodatkowe linki feed.
// https://developer.wordpress.org/reference/functions/feed_links/
add_filter( "feed_links_show_comments_feed", "__return_false" );
add_filter( "feed_links_show_posts_feed", "__return_false" );
// Usuń link api.w.org.
// https://wordpress.stackexchange.com/questions/211467/remove-json-api-links-in-header-html
remove_action( "wp_head", "rest_output_link_wp_head" );
remove_action( "template_redirect", "rest_output_link_header", 11, 0 );
6. Usuń ulepszenia obrazów
WordPress dodaje atrybuty sizes i inne ulepszenia do obrazów. Jeśli obsługujesz je samodzielnie, usuń je:
// Usuń wymuszony rozmiar obrazu WordPress
// https://core.trac.wordpress.org/ticket/62413#comment:40
add_filter( "wp_img_tag_add_auto_sizes", "__return_false" );
// Usuń ulepszenia <img>
// https://developer.wordpress.org/reference/functions/wp_filter_content_tags/
remove_filter( "the_content", "wp_filter_content_tags", 12 );
// Zatrzymaj przepisywanie URL http:// dla głównej domeny.
remove_filter( "the_content", "wp_replace_insecure_home_url", 10 );
// Usuń elementy załączników
remove_filter( "the_content", "prepend_attachment" );
// Usuń filtr bloków
remove_filter( "the_content", "apply_block_hooks_to_content_from_post_object", 8 );
7. Usuń sprawdzanie przeglądarki i inne funkcje admina
// Usuń sprawdzanie przeglądarki z panelu admina.
if ( !empty( $_SERVER["HTTP_USER_AGENT"] ) ) {
add_filter( "pre_site_transient_browser_" . md5( $_SERVER["HTTP_USER_AGENT"] ), "__return_null" );
}
// Usuń hovercards na linkach komentarzy w panelu admina.
add_filter( "akismet_enable_mshots", "__return_false" );
Moje dodatkowe rekomendacje
Poza powyższymi technikami, oto moje własne rozwiązania dla dalszej optymalizacji:
8. Wyłącz XML-RPC
Jeśli nie używasz zewnętrznych aplikacji do publikowania w WordPress, wyłącz XML-RPC dla lepszego bezpieczeństwa:
// Całkowicie wyłącz XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );
// Usuń link XML-RPC z nagłówka
remove_action( 'wp_head', 'rsd_link' );
9. Usuń jQuery Migrate
Nowoczesne motywy i wtyczki WordPress rzadko potrzebują jQuery Migrate. Jeśli Twoja strona działa bez niego, usuń go:
function remove_jquery_migrate( $scripts ) {
if ( ! is_admin() && isset( $scripts->registered['jquery'] ) ) {
$script = $scripts->registered['jquery'];
if ( $script->deps ) {
$script->deps = array_diff( $script->deps, array( 'jquery-migrate' ) );
}
}
}
add_action( 'wp_default_scripts', 'remove_jquery_migrate' );
10. Wyłącz oEmbed
Jeśli nie osadzasz treści z innych stron (YouTube, Twitter itp.), wyłącz oEmbed:
// Usuń linki wykrywania oEmbed
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
// Usuń endpoint REST API oEmbed
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
// Wyłącz auto wykrywanie oEmbed
add_filter( 'embed_oembed_discover', '__return_false' );
11. Odrocz ładowanie JavaScript
Dodaj defer do niekrytycznych skryptów dla lepszej wydajności:
function add_defer_attribute( $tag, $handle ) {
// Skrypty, które NIE powinny być odroczone
$scripts_to_not_defer = array( 'jquery-core' );
if ( in_array( $handle, $scripts_to_not_defer ) ) {
return $tag;
}
return str_replace( ' src', ' defer src', $tag );
}
add_filter( 'script_loader_tag', 'add_defer_attribute', 10, 2 );
Mierzenie efektów
Po wdrożeniu tych zmian, przetestuj swoją stronę używając:
- Google PageSpeed Insights – Sprawdź Core Web Vitals
- GTmetrix – Szczegółowa analiza waterfall
- WebPageTest – Wiele lokalizacji testowych i prędkości połączenia
Powinieneś zobaczyć:
- Zmniejszony rozmiar strony (mniej bajtów CSS/JS)
- Mniej zapytań HTTP
- Lepszy Time to First Byte (TTFB)
- Lepszy Largest Contentful Paint (LCP)
Podsumowanie
Podejście WordPress “wszystko w zestawie” jest świetne dla początkujących, ale deweloperzy szukający maksymalnej wydajności muszą przyciąć zbędny kod. Techniki w tym przewodniku, zainspirowane doskonałym skryptem optymalizacji Terence’a Edena, pomogą Ci osiągnąć lżejszą, szybszą instalację WordPress.
Pamiętaj: mniej znaczy więcej. Każda linia kodu, którą usuniesz, to o jeden potencjalny punkt awarii mniej, o jeden bajt do pobrania mniej i o jeden krok bliżej do idealnego wyniku PageSpeed.