En av de viktigste grunnene til WordPress 'fortsatte popularitet er den enkle måten det kan utvides og tilpasses med plugins.
Å bygge et plugin kan virke som en umulig oppgave, men det er enklere enn du kanskje tror. I dag begynner vi vår "Bygg din første WordPress plugin" -serie som dekker de viktigste prinsippene og prosessen.
Ved slutten av serien vil du være fullt forberedt på å gjøre ytterligere eksperimenter av deg selv, avhengig av beste praksis og konvensjoner vedtatt av det omfattende WordPress-fellesskapet.
Det er et PHP-skript som endrer eller utvider den innfødte funksjonaliteten til WordPress.
Ved å gi en veldig enkel, men fleksibel Plugin API , WordPress forsyner hver utvikler med følgende fordeler for plugin bruk:
Uavhengig av PHP-kodingsopplevelsen din, skrev du virkelig hennes første plugin etter at du har ferdig med en "PHP for Dummies" -bok - du er et lite skritt unna å lage ditt første plugin for WordPress. La oss ta det skrittet sammen.
Den primære oppgaven vi skal utforske i dag, er å bygge et solid plugin-fundament. Dette grunnlaget må oppfylle WordPress-kravene og gjøre pluggen gjenkjennelig av kjernen. Samtidig bør det følge felles praksis og konvensjoner, akseptert av fellesskap, for å unngå mulige konflikter med andre plugins som kan installeres på et nettsted.
Først av alt må du sikre at pluginnavnet ditt er unikt. Selv om du ikke skal gjøre arbeidet ditt til en offentlig utgave, må du i hvert fall være sikker på at det ikke er noen mulighet for ditt eget nettsted ved å bruke to plugins med samme navn. Det enkle plugins repository (og Google) søk er din venn når du unngår feil valg.
For å øke sannsynligheten for at et navn er unikt, oppretter mange utviklere merke prefiks, som er en forkortelse av utviklerens navn (eller kallenavn). Dette prefikset med kort referanse til pluginnavnet skal senere brukes overalt - i navn på filer, funksjoner, klasser, variabler etc. Det hjelper å unngå å navngi konflikter med andre plugins, temaer og selve kjerne.
La oss starte med et eksempel. Vi bruker navnet "Hello World Plugin" og for å øke sjansene for å være unik bruker vi "My Super Prefix" konvertert til forkortelse "MSP". Som gir oss det helt unike navnet "MSP Hello World Plugin"; Søker gjennom plugins-depotet, bekrefter at ingen andre bruker det.
Vårt neste skritt er å lage pluginens filer. Det anbefales sterkt at du lagrer dem i en egen mappe i en dedikert plugin-mappe. Denne mappen skal navngis i samsvar med selve plugin-modulen, i tilfelle det kan være 'msp-helloworld'. Mappen skal inneholde hoved pluginfilen med samme navn: 'msp-helloworld.php'.
De WordPress Codex anbefaler også at du inkluderer en readme.txt-fil. Denne filen inneholder informasjonen om pluginet ditt et standardisert format . Hvis du skal sende inn pluginet til WordPress-depotet, er eksistensen av readme.txt obligatorisk. Men ikke tenk på det som en byrde, det er mange fordeler med å gjøre dette.
Hvis pluginet ditt skal ha flere filer eller laste inn noen ressurser (bilder, css og js-filer), bør de organiseres i undermapper. Riktig filorganisasjon er et tegn på faglig arbeid. Du kan stole på følgende mønster:
Hver plugin burde ha det obligatoriske Overskrift . Det hjelper WordPress til å gjenkjenne skriptet som en gyldig plugin og sende riktig informasjon på pluginens administrasjonsskjerm.
Denne overskriften er en PHP-kommentarblokk plassert øverst i hovedprogrammets fil:
/*Plugin Name: MSP Hello WorldDescription: Create hello world messageVersion: 1.0Author: Author's nameAuthor URI: http://authorsite.com/Plugin URI: http://authorsite.com/msp-helloworld*/
Headerens informasjon vil bli presentert i den tilsvarende plugin-raden på styringsskjermbildet.
Ordrenes rekkefølge er ikke viktig, men filen må være i UTF-8-koding.
Vær oppmerksom på at det er viktig å være konsistent med versionsnummereringsmønsteret du har valgt (f.eks. Xxxx), for WordPress-oppgraderingsmekanismen for å oppdage det riktig.
Så langt har vi opprettet forskjellige filer for pluginet vårt (i riktige undermapper), nå må vi bestemme de riktige banene (eller nettadressene) til dem i plugin-koden. Tatt i betraktning det faktum at wp-innholdmappen kunne flyttes fra standardplasseringen, blir det klart at baner til pluginfiler ikke skal være hardkodede, men heller skal detekteres.
WordPress har to funksjoner, plugin_dir_path og plugin_dir_url for å løse problemet, men vi kan gå videre ved å bruke følgende triks:
define('MSP_HELLOWORLD_DIR', plugin_dir_path(__FILE__));define('MSP_HELLOWORLD_URL', plugin_dir_url(__FILE__));
Med denne lille brikken (inkludert i hovedpluginfilen) registrerer vi banen og nettadressen til vår plugin-mappe inne i WordPress-installasjonen og tilordner dem til passende konstanter. Deretter kan vi bruke disse konstantene i kombinasjon med kjente relative veier til undermapper, for eksempel MSP_HELLOWORLD_DIR.'assets/img/image.jpg'
.
Ved å bruke disse konstantene kan vi også enkelt inkludere pluginfiler fra undermapper i hovedfilen:
function msp_helloworld_load(){if(is_admin()) //load admin files only in adminrequire_once(MSP_HELLOWORLD_DIR.'includes/admin.php');require_once(MSP_HELLOWORLD_DIR.'includes/core.php');}msp_helloworld_load();
Etter installasjonen kan pluginet være i aktiv eller inaktiv tilstand.
Aktiv tilstand betyr at den ble aktivert av brukeren, og koden vil bli utført av WordPress hver gang en side blir bedt om.
Plugin kan også deaktiveres av brukeren, som betyr at filene holdes på plass, men koden kjøres ikke.
(Plugin kan også bli fullstendig avinstallert av en bruker, noe som betyr at filene slettes fra plugin-mappen.)
WordPress kan fange endringer i disse statene og utføre en kode som er planlagt for slike endringer. Hvis noen kode er planlagt for aktivering eller deaktivering, vil den kun bli utført på dette tidspunktet, ikke på hver sidebelastning.
Hvis for eksempel pluginet skal manipulere med omskrivningsregler, bør det slette dem ved aktivering / deaktivering. Hvis plugin oppretter noen oppføringer i en database, for eksempel ved å lagre alternativer, er sunn praksis å slette dem når plugin er avinstallert.
Hvordan kan det gjøres?
For aktivering og deaktivering kan vi registrere en såkalt 'aktiveringskrok' og 'deaktiveringskrok'. De er bare et stykke kode som forteller WordPress å utføre en bestemt funksjon ved aktivering og en annen bestemt funksjon ved deaktivering. Her er et eksempel på en slik kode:
register_activation_hook(__FILE__, 'msp_helloworld_activation');register_deactivation_hook(__FILE__, 'msp_helloworld_deactivation');function msp_helloworld_activation() {//actions to perform once on plugin activation go here}function msp_helloworld_deactivation() {// actions to perform once on plugin deactivation go here}
For avinstalleringshandlinger har vi to alternativer.
Ett alternativ er å opprette en uninstall.php-fil i plugin-mappen (sammen med hovedpluginfilen og readme.txt) og inkludere all nødvendig kode der. Hvis en uninstall.php eksisterer, vil WordPress kjøre den automatisk når pluginet er slettet av brukeren. Alternativt kan vi registrere en avinstallasjonshake på nesten samme måte som vi gjorde med aktiverings- og deaktiveringskrokene. Den vanskelige delen er å ringe den bare én gang, ved aktivering. Her er et eksempel:
register_activation_hook(__FILE__, 'msp_helloworld_activation');function msp_helloworld_activation() {//actions to perform once on plugin activation go here//register uninstallerregister_uninstall_hook(__FILE__, 'msp_helloworld_uninstall');}function msp_helloworld_uninstall(){//actions to perform once on plugin uninstall go here}
Det er viktig å vite at bare ett av alternativene som er beskrevet, vil fungere: Hvis uninstall.php eksisterer, vil den bli utført, og noen avinstalleringshook vil ikke bli avfyrt.
Oppsummerer alt over, her er en oversikt over å skape et solid grunnlag for et WordPress-plugin:
Etter alle disse trinnene er du klar til å lage pluginet ditt for å gjøre noe ved å opprette koden. Vi blir kjent med noen nyttige konsepter som gjør WordPress-plugins spennende og fleksible i neste artikkel i denne serien. Men noen viktige aspekter kan bli fremhevet akkurat nå:
Jeg håper denne innledende informasjonen inspirerer deg til å begynne å utvikle med WordPress. Se opp for neste del av serien i nær fremtid.
Hvilke tips vil du legge til i denne introduksjonen? Hva vil du se dekket i neste artikkel i serien? Gi oss beskjed i kommentarene!