Wordpress

Slik deaktiverer du WordPress-plugins fra lasting på bestemte sider og innlegg

Når det kommer til WordPress-ytelse, har vi mye å si om plugins. Hver plugin legger til PHP-kode som må kjøres, inkluderer vanligvis skript og stiler, og kan til og med utføre flere spørringer mot databasen. Dette betyr at unødvendige plugins kan påvirke sidehastigheten og kan ha en negativ innvirkning på brukeropplevelsen og siderangeringen din.

Som et eksempel kan du vurdere en plugin som bygger og viser tilpassede skjemaer på forsider, som Kontaktskjema 7. Vanligvis trenger du bare ett skjema på en enkelt side, men ideelt sett kan det være lurt å bygge inn et skjema på en hvilken som helst side ved å bruke pluginens kortkode. Av denne grunn laster Kontaktskjema 7 skript og stiler på hver side på nettstedet ditt.

Men vil du virkelig kjøre plugin-koden og inkludere skript og stiler på hver side på WordPress-nettstedet ditt?

I dette innlegget vil jeg vise deg hvordan du forhindrer at unødvendige plugins lastes inn på spesifikke innlegg/sider, slik at du kan installere ekstra plugins (ikke gå gale selvfølgelig), og fortsatt få WordPress-nettsiden din til å laste raskt. For å utføre denne oppgaven, skal vi deaktivere WordPress-plugins programmatisk på bestemte innlegg og sider. Dette er en fire-trinns prosess:

  • Velg de mest populære pluginene som passer dine behov, og sammenlign deres funksjoner og effekter på sidehastighet.
  • List og filtrer programtillegg før siden lastes inn.
  • Filtrer og deaktiver unødvendige plugins programmert med en mu-plugin.
  • Filtrer og deaktiver unødvendige plugins ved hjelp av en plugin.
  • Spor nettstedets ytelse.

La oss dykke dypt.

Selektivt deaktivering av WordPress-plugins fra lasting på spesifikke sider/innlegg/sidewide kan bidra til å øke hastigheten på nettstedet ditt! 🚀Klikk for å Tweet

Tre generelle regler å følge når du velger en plugin

Følgende generelle regler kan være nyttige når du velger en plugin:

  • Installer bare godt kodede plugins fra pålitelige utviklere: vurder aktive installasjoner, brukervurdering, klientstøtte, oppdateringsfrekvens og all nyttig informasjon som kommer fra WordPress-fellesskapet.
  • Foretrekk skalerbare plugins: sammenlign lignende plugins når det gjelder ytelse, bruk nettleserutviklerverktøy og/eller nettjenester som Google Pagespeed Insights, Pingdom og GTmetrix for å evaluere virkningen av hver plugin på sidens lastetid.
  • Ikke installer unødvendige plugins: det bør være åpenbart, men det er verdt å nevne at du aldri bør installere en plugin du egentlig ikke trenger av sikkerhets- og ytelsesgrunner. Pass også på at du går gjennom pluginene dine fra tid til annen og avinstallerer de du ikke trenger og bruker lenger.
WordPress repository rykte
WordPress Plugin Directory gir relevant informasjon vi alltid bør ta hensyn til når vi velger en plugin

Et eksempel på virkelige liv

Contact Form 7 er en flott plugin som bygger og viser skjemaer i WordPress. Det gir et perfekt eksempel for våre formål, fordi det inkluderer følgende filer på hver side, selv om siden ikke inneholder et skjema:

  • style.css
  • scripts.js
Chrome DevTools nettverkspanel
Chrome DevTools Network-panelet gir detaljert informasjon om nettverksforespørsler som gjøres når en side lastes inn

En plugin kan bremse nettstedet ditt, men vi kan tvinge WordPress til selektivt å deaktivere plugins avhengig av forespørsels-URLen. Hvis du er en utvikler, les over den neste delen hvor vi lærer hvordan du programmerer kan administrere plugins og bygge en mu-plugin som filtrerer unødvendige plugins. Hvis du ikke er en utvikler, kan du gjerne hoppe over til delen dedikert til plugins som lar deg filtrere og organisere plugins.

Hvordan få en liste over alle aktive plugins programmert

For det første kan du få en liste over alle aktive plugins på WordPress-nettstedet ditt med en enkel kodebit med PHP. Du kan legge til følgende kode enten i en egendefinert plugin, eller i editoren til en gratis WordPress-plugin som Code Snippets. Hvis du bestemmer deg for å gå med din egendefinerte plugin, bare ikke glem å legge til plugin-overskriften som vist nedenfor.

Aktive WordPress-plugins
Aktive plugins i wp_options-tabellen

Hver aktive plugin er lagret i wp_options tabell hvor options_name is active_plugins. Så vi kan trekke ut listen over disse pluginene med en enkel get_option anrop. Her er koden:

 0 ){
		$plugins = "
    "; foreach ( $active_plugins as $plugin ) { $plugins .= "
  • " . $plugin . "
  • "; } $plugins .= "
"; } return $plugins; });

Endre plugin-detaljene, og lagre deretter active-plugins.php fil og last den opp til din /wp-content/plugins/ mappe. Lag et nytt blogginnlegg og ta med [activeplugins] kort kode. Den skal nå vise en liste over alle aktive plugins.

Aktive plugin-liste
Listen over aktive plugins viser mappen og navnet på hver plugin

Når det er gjort, kan vi gå et skritt videre og legge til eller fjerne programtillegg ved å dra nytte av option_active_plugins filter. Dette filteret tilhører gruppen option_$option_name med filtre, som gjør det mulig å filtrere ethvert alternativ etter at det er hentet fra databasen. Siden alle aktive plugins er lagret i wp_options tabell hvor option_value is active_pluginsden option_active_plugins filteret gir en måte å programmere aktivere eller deaktivere plugins.

Så vi kan aktivere en plugin programmatisk. La oss si at du for eksempel vil aktivere ACF-plugin. Her er koden:

add_filter( 'option_active_plugins', function( $plugins ){

	$myplugin = "advanced-custom-fields/acf.php";

	if( !in_array( $myplugin, $plugins ) ){
		$plugins[] = $myplugin;
	}

	return $plugins;

} );

I dette eksemplet antar vi at plugin-en er installert og ikke er aktivert ennå.

Koden ovenfor legger ganske enkelt til plugin-en til listen over aktive plugins på hver side på nettstedet vårt. Ikke veldig nyttig, men du skjønner poenget.

Dessuten bør plugin-en lastes før alle andre plugin-moduler, ellers kunne ikke koden vår fungere som forventet. For å prioritere plugin-belastningen vår, må vi legge til skriptet vårt i en må-bruke plugin.

Hvordan bygge en må-bruke plugin for å programmere deaktivere plugins

Vi skal bygge en må bruke plugin, som er en plugin som ligger i en bestemt /wp-content undermappe, og kjører før et vanlig plugin.

Dessverre, i denne situasjonen har vi ikke lov til å bruke betingede tagger, fordi betingede spørringskoder fungerer ikke før spørringen kjøres. Før da returnerer de alltid falskt. Så vi må sjekke betingelsene våre ellers, for eksempel ved å analysere forespørsels-URI og sjekke den tilsvarende URL-banen.

Legg til følgende kode til active-plugins.php fil, og flytt den deretter til /wp-content/mu-plugins:

$request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );

$is_admin = strpos( $request_uri, '/wp-admin/' );

if( false === $is_admin ){
	add_filter( 'option_active_plugins', function( $plugins ){

		global $request_uri;

		$is_contact_page = strpos( $request_uri, '/contact/' );

		$myplugin = "contact-form-7/wp-contact-form-7.php";

		$k = array_search( $myplugin, $plugins );

		if( false !== $k && false === $is_contact_page ){
			unset( $plugins[$k] );
		}

		return $plugins;

	} );
}

La oss dykke ned i denne koden:

  • parse_url returnerer banen til den forespurte nettadressen.
  • strpos finner posisjonen til den første forekomsten av '/wp-admin/', og returnerer false hvis strengen ikke blir funnet. $is_admin variabel lagrer den returnerte verdien.
  • Tilstanden forhindrer at filteret kjøres i administrasjonspanelet, slik at vi trygt kan få tilgang til sidene med plugin-innstillinger. Hvis forespørselens URI ikke inneholder '/wp-admin/', så påkaller vi option_active_plugins filter.
  • Til slutt, hvis gjeldende plugin ikke er i rekken av aktive plugins, og gjeldende sides URI ikke inneholder /contact/, så fjerner vi plugin-en fra $plugins.

Lagre nå plugin-en og last den opp til din /wp-content/mu-plugins/ mappe. Fjern hurtigbufferen og legg til [activeplugins] kortkode til flere sider. Det skal bare vises i listen på /contact/ side.

Ikke noe CF7-skript
script.js-filen forsvant fra listen over sideelementer

Vi kan deretter deaktivere en rekke plugins samtidig med bare litt ekstra PHP.

$request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );

$is_admin = strpos( $request_uri, '/wp-admin/' );

if( false === $is_admin ){
	add_filter( 'option_active_plugins', function( $plugins ){

		global $request_uri;

		$is_contact_page = strpos( $request_uri, '/contact/' );

		$myplugins = array( 
			"contact-form-7/wp-contact-form-7.php", 
			"code-snippets/code-snippets.php",
			"query-monitor/query-monitor.php",
			"autoptimize/autoptimize.php" 
		);

		if( false === $is_contact_page ){
			$plugins = array_diff( $plugins, $myplugins );
		}

		return $plugins;

	} );
}

I dette eksemplet har vi først definert en rekke plugins som skal fjernes, deretter fjerner vi dem med array_diff. Denne funksjonen "sammenligner array1 mot en eller flere andre arrays og returnerer verdiene i array1 som ikke er tilstede i noen av de andre arrays".

Du kan laste ned hele koden til denne plugin-en fra Gist.

Nå kan du laste opp plugin-en til mu-plugins mappe og inspiser hvilken som helst side på nettstedet ditt. Mu-pluginet kan være svært tilpasset ved å legge til flere betingelser og sjekke flere URIer, men hver tilstand må legges til manuelt i koden, og i det lange løp kan dette enkle mu-pluginet være vanskelig og en problemfri å vedlikeholde.

Av denne grunn kan det være lurt å sjekke ut følgende plugins.

Plugins som filtrerer plugins

Som et alternativ kan vi se på en rekke gode plugins som lar oss legge til filtre som kan administreres fra WordPress admin panel.

Plugin-belastningsfilter

Plugin Load Filter er et gratis alternativ for WordPress-brukere som trenger å filtrere plugins under flere forhold.

Plugin-belastningsfilter
Plugin Load Filter lar deg filtrere plugins i administrasjonspanelet så vel som på nettstedssider

For øyeblikket støtter den følgende funksjoner:

  • Innleggsformater
  • Egendefinerte innleggstyper
  • Jetpack-moduler
  • WP Embed innholdskort
  • URL-filter for ekspert (REST API / Heartbeat / AJAX / AMP / etc)

Når et filter er aktivert, kan adminbrukeren spesifisere hvor på nettstedet det skal brukes, som vist på bildet nedenfor.

Kategorien Aktivering av filter for sidetype
Når filteret er aktivert, kan nettstedadministratorer angi unntakene sine i kategorien Aktivering av filter for sidetype

Plugin Organizer

Plugin Organizer er en populær plugin med over 10,000 5 aktive installasjoner og imponerende 5 av XNUMX stjerner. Det er en mer omfattende plugin som lar nettstedadministratorer:

  • Deaktiver selektivt plugins etter posttype og forespørsels-URL
  • Deaktiver selektivt plugins etter brukerroller
  • Lag grupper av plugins
  • Endre rekkefølgen for innlasting av plugin
  • Andre funksjoner
Innstillinger-siden for programtilleggsorganisering
Innstillinger-siden for programtilleggsorganisering

Alternativersiden for globale plugins gir en dra-og-slipp-funksjon som lar administratorbrukeren deaktivere plugins globalt, og hindrer WordPress i å kjøre ett eller flere plugins hvor som helst på nettstedet, med mindre det er annerledes spesifisert for enkeltinnlegg eller sider. Den samme funksjonen er tilgjengelig for søkeside- og innleggstyper.

Plugin-arrangør deaktiverer CF7 globalt
CF7 har blitt deaktivert globalt

Programtillegget legger til en metaboks i innleggsredigeringsskjermen slik at administratoren har lov til å overstyre globale og posttypeinnstillinger. Denne funksjonen kan også aktiveres for innleggstyper ved å krysse av for det tilsvarende elementet i skjermbildet Generelle innstillinger. En flott funksjon er Plugin Organizer Debug Message, som gir nettstedadministratoren nyttig informasjon om plugins som påvirker hver side.

Mer informasjon finner du i dokumentasjonen deres.

Plugin Organizer tilpasset metaboks på kontaktsiden
Plugin Organizer tilpasset metaboks på kontaktsiden

Perfmatters-plugin

En delvis annen tilnærming kommer fra Perfmatters-plugin. Det er et premiumalternativ som lar nettstedadministratoren selektivt laste inn tema- og plugin-elementer avhengig av URL eller egendefinert posttype. Det er et flott verktøy for både plugin- og temaoptimalisering. Faktisk er det utviklet av et teammedlem fra Behmaster!

Sliter du med nedetid og WordPress-problemer? Behmaster er hostingløsningen designet for å spare deg tid! Sjekk ut funksjonene våre
Perfmatters script manager
Perfmatters script manager

Plugin-en har en funksjon kalt Script Manager, hvor alt er gruppert sammen etter plugin- eller temanavnet. Dette gjør det superenkelt å deaktivere en hel plugin på en gang, eller individuelle CSS- og JavaScript-filer i den.

Du kan til og med deaktivere skript med regulært uttrykk. Dette er spesielt nyttig for nettsteder som har en mer kompleks URL-struktur eller dynamisk genererte sider.

Dette er veldig kraftig og kan drastisk øke hastigheten på WordPress-sidene dine (spesielt hjemmesiden din). Noen eksempler på hva dette kan brukes til:

  • Plugins for deling av sosiale medier skal bare lastes inn på innleggene dine. Du kan enkelt deaktivere den overalt og bare laste inn på innleggstyper, eller til og med tilpassede innleggstyper.
  • Det populære kontaktskjemaet 7-plugin laster seg selv på hver side og hver post. Du kan enkelt deaktivere den overalt med ett klikk og aktivere kun på kontaktsiden din.
  • Hvis du har oppgradert til WordPress 5.0, men ikke bruker Gutenberg-blokkredigeringsprogrammet, kanskje du fortsatt bruker den klassiske editoren, er det to ekstra front-end-skript som legges til på hele nettstedet som du kan deaktivere: /wp-includes/css/dist/block-library/style.min.css og /wp-includes/css/dist/block-library/theme.min.css

Du kan se fra denne anmeldelsen av perfmatters, det reduserte den totale lastetiden med 20.2 %. Bare på hjemmesiden deres klarte de å redusere antallet HTTP-forespørsler fra 46 ned til 30! Sidestørrelsen krympet også fra 506.3 KB til 451.6 KB.

Hastighetstest med perfmatters-plugin
Hastighetstest med perfmatters-plugin

Slik sporer du ytelse: Nettleserens utviklerverktøy

Et grunnleggende skritt på motorveien til ytelsesoptimalisering er måling av lastetid. Vi har en rekke plugins og nettverktøy vi kan bruke for å spore nettstedets ytelse, som Google Pagespeed Insights og Pingdom. Men først og fremst kan vi bruke nettleserens Dev Tools, som gir mye meningsfylt informasjon.

Hver nettleserinspektør har et nettverkspanel som viser en liste over nettverksforespørsler og relatert informasjon. Følg disse lenkene for detaljert dokumentasjon:

  • Firefox Dev Verktøy
  • Chrome Dev Tools
  • Microsoft Edge F12 Dev Tools
  • Safari Web Inspector Guide

I en WordPress-installasjon med atten aktive plugins, har vi gjentatte ganger inspisert en postside med Firefox Dev Tools. Vi har først målt sidehastighet og listet opp forespurte ressurser før vi installerer noen filtreringsplugin. Følgende bilde viser resultatet av ytelsesanalyseverktøyet som er tilgjengelig i Firefox-nettverksmonitoren.

Firefox Ytelsesanalyseverktøy
Firefox Ytelsesanalyseverktøy

Nettverksmonitoren gir følgende resultater (tom cache):

  • størrelse: 255.19 Kb
  • lastetid: 1.24 sekunder
  • forespørsler: 12

Følgende har vi installert Plugin Organizer for å hindre WordPress fra å kjøre CF7-plugin. Sektordiagrammet endrer seg litt.

Firefox Ytelsesanalyseverktøy
Firefox Ytelsesanalyseverktøy

Nå laster siden raskere (tom cache):

  • størrelse: 104.21 Kb
  • lastetid: 0.80 sekunder
  • forespørsler: 8

Deretter har vi deaktivert flere unødvendige plugins, og det neste bildet viser hvor mye vi har forbedret sideytelsen.

Firefox Ytelsesanalyseverktøy
Firefox Ytelsesanalyseverktøy

Etter å ha deaktivert alle unødvendige plugins, returnerer den tomme nettleserbufferen til nettverksmonitoren følgende data:

  • størrelse: 101.98 Kb
  • lastetid: 0.46 sekunder
  • forespørsler: 8

Vi kan sammenligne resultatene av testene våre. Ressursstørrelsen er redusert med 60.04 % lastetiden ble redusert fra 1.24 sekunder til 0.46 sekunder, og antallet HTTP-forespørsler gikk ned fra 12 til 8. Dette bekrefter at plugins kan påvirke sideytelsen, og at vi kan øke sidehastigheten ved å dra nytte av et plugin-filter.

Oppsummering

Enten du bygger dine egne skript eller installerer tredjepartsverktøy, er organisering og filtrering av plugins noe du alltid bør vurdere når det kommer til ytelsesoptimalisering. Husk at ikke alle plugins er utviklet med ytelse i tankene. Derfor kan det være lurt å ta litt tid og finne ut hvilke plugin-ressurser (CSS og JS) som laster og hvor.

Men å lære hvordan du deaktiverer WordPress-plugins er bare en blant mange andre teknikker som har som mål å øke hastigheten på nettstedet. Her er en liste over noen andre nyttige guider og veiledninger relatert til nettstedets ytelse:

  • Hvordan få fart på WordPress (Ultimate Guide)
  • En nybegynnerveiledning for optimalisering av nettstedhastighet
  • Hvordan redusere TTFB for å forbedre WordPress-sideinnlastingstider
  • Slik diagnostiserer du høy Admin-Ajax-bruk på WordPress-nettstedet ditt
  • Slik rydder du opp i wp_options-tabellen og automatisk lastede data
  • Slik deaktiverer du WordPress-plugins (ingen tilgang til WP-Admin)

Relaterte artikler

0 kommentarer
Inline tilbakemeldinger
Se alle kommentarer
Tilbake til toppen-knappen