Når du utvikler et tema eller et plugin, finner du ofte at du må inkludere en URL i koden din. For eksempel, i et plugin kan du trenge en lenke til et stilark som følger med pluginet, mens du i et tema vil sannsynligvis kodes nettstedets URL i overskriften.
Det kan være fristende å bare kode URL-adressen på samme måte som mulig i et statisk område, men det er en dårlig ide. I denne opplæringen vil jeg forklare hvorfor du ikke bør gjøre dette - og vise deg de funksjonene du kan bruke til å opprette URL-er dynamisk.
La oss starte med temaer. Hvis du utvikler et tema for bruk på et bestemt nettsted, kan det hende at det ikke virker for skadelig å legge til domenet på dette nettstedet i temafilene et sted, men det er noen konkrete farer og ulemper:
Så ikke gjør det!
Men hva med plugins? Vel, dette er enda mer risikabelt. Det er ikke uvanlig å utvikle et tema bare for ett nettsted, men de fleste plugins vil bli brukt på flere nettsteder. Det er usannsynlig at du noensinne vil kode en fullstendig URL til et plugin, men du kan bli fristet til å bruke en funksjon for å hente nettstedets URL og kode deretter banen til plugin-katalogen. Igjen er dette risikabelt:
Dette kan føre til at pluginet bare ikke fungerer i det hele tatt.
Så, hva gjør du for å unngå hardkodende nettadresser i WordPress?
Det finnes en rekke funksjoner som du bruker for å unngå hardkodende nettadresser i WordPress. Jeg skal dele dem i fem kategorier:
La oss starte med funksjonene for å hente og sende ut en link til hjemmesiden.
Følgende maletiketter henter eller sender ut nettadressen til nettstedet ditt:
bloginfo ('url')
: Viser hjemmeadressen som angitt i innstillingsinnstillingene i administrasjonen.get_bloginfo ('url')
: henter nettstedet URL uten å vise det.HOME_URL ()
: henter hjemmesiden URL uten å vise den: bruk ekko esc_url (home_url ('/'));
for å vise hjemmeadressen med et skråstrek. Dette tar to valgfrie parametere: $ path
hvis du vil legge til en bane til en bestemt side eller legge til et skråstrek, og $ ordningen
å spesifisere ordningen for nettadressen, for eksempel http
, https
og slektning
.get_home_url ()
henter URL-adressen til hjemmesiden, og støtter multisite: du kan inkludere blogg-IDen som en parameter.site_url ()
: URL-adressen der WordPress er lagret, så hvis din WordPress-installasjon er i underkatalogen for wordpress, vil dette hente URL-adressen http://mysite.com/wordpress
. get_site_url ()
: Henter nettstedet URL uten å utføre det. Kan også brukes med parametere for å utføre nettadressen for et nettsted i et Multisite-nettverk, legge til en bane og bruke en bestemt ordning.network_home_url ()
: Hjemadressen til hovedstedet i et multisitalt nettverk, nyttig hvis du vil inkludere en lenke til hovedstedet i bunnteksten til hvert nettsted på nettverket, for eksempel.network_site_url ()
: Nettstedets nettadresse for hovedstedet i et multisitalt nettverk.Som du kan se, finnes det noen få forskjellige koder du kan bruke til å vise nettadressen. Som du bruker vil avhenge av en rekke aktører:
Du bør bruke en av disse i temmalatfiler hvor du vil sette inn en lenke til hjemmesiden, for eksempel hvis en logo i nettstedets hode kobler til hjemmesiden. Det kan også være tilfeller der et plugin må hente eller vise hjemmesiden URL.
I tillegg til hjemmesidenes URL kan det være ganger når du vil kode koblinger til andre sider på nettstedet ditt. Dette vil inkludere sider, innlegg, vedlegg og tilpassede innleggstyper. Her er de funksjonene du bør bruke:
POST_PERMALINK ()
sender ut en kobling til et innlegg, med post-ID som parameter.get_page_link ()
henter (men utfører ikke) lenken til en side, med sidens ID som en parameter.get_permalink ()
henter (men utsender ikke) permalinken for et innlegg eller en side, med post eller sidens ID som parameter.get_category_link ()
henter linken til et kategoriarkiv, med kategori-ID som parameter.get_tag_link ()
henter linken til en etiketts arkivside, med tag-ID som parameter.get_post_type_archive_link ()
henter linken til en posttype arkiv, med posttypen som dens parameter.get_term_link ()
henter linken til en taksonomi, med begrepet og taksonomien som parametere.the_attachment_link ()
Utgir lenken til et vedlegg, med vedleggs-ID som sin første parameter. Bruk andre parametere til å definere bildestørrelsen og om koblingen vil føre til selve filen eller vedleggssiden.get_attachment_link ()
henter linken for et vedlegg, med vedleggs-ID som parameter.wp_get_attachment_link ()
Henter også lenken til et vedlegg, men i tillegg lar du vise bildet hvis vedlegget er et bilde, i en størrelse du angir.get_search_link ()
henter linken til søksiden. Du kan definere en forespørsel som sin parameter, eller la den være tom, i så fall vil den bruke gjeldende spørring.Hvis du lager et plugin eller et tema med innstillingsskjermbilder i WordPress-administratoren, eller du tilpasser administrasjonsskjermbildene, kan du legge til linker til administrasjonsskjermbilder. Igjen, bør du ikke hardkode dine nettadresser, men bruk en av disse kodene:
admin_url ()
henter (men utsender ikke) en URL i administrasjonen. Du må inkludere banen til nettadressen som en parameter, og kan også inkludere ordningen hvis nødvendig. For eksempel, for å skrive ut nettadressen for skjermen for å opprette et nytt innlegg, vil du bruke echo admin_url ('post-new.php');
.get_admin_url ()
den er lik admin_url ()
men støtter multisite-nettverk: du kan inkludere blogg-IDen som en parameter.edit_post_link ()
viser en lenke til redigeringssiden for et innlegg. Den kan brukes i løkken eller utenfor løkken med post-ID som en parameter.get_edit_post_link ()
henter linken til et innleggs redigeringsskjerm med post-ID som parameter.Akkurat som når du kodes nettadresser i front-end eller admin-skjermene, bør du også kode URL-adresser og stier riktig når du henviser til filer i plugin- eller temamapper.
Først, her er de funksjonene du bør bruke i temafiler:
get_stylesheet_directory ()
henter hele serverbanen (ikke URL-adressen) for katalogen som er aktivert for øyeblikket. Bruk dette til å ringe inkludere filer i stedet for å sende ut koblinger.get_stylesheet_directory_uri ()
henter nettadressen for det aktuelt aktiverte temaet, uten et skråstrek. Bruk den i malfiler for å hente ressurser som er lagret i temamappen din: for eksempel å vise et bilde som er lagret i temaets bildermappe, bruk
.get_bloginfo ('stylesheet_directory')
henter nettadressen for det aktuelt aktiverte temaet: bruk get_stylesheet_directory_uri ()
er penere.get_template_directory_uri ()
den er lik get_stylesheet_directory_uri ()
men hvis du bruker et barnemne, henter det nettadressen for foreldetemaet. på samme måte, get_template_directory ()
fungerer på samme måte som get_stylesheet_directory ()
men for overordnet tema.Det finnes også funksjoner for bruk i pluginfiler:
plugins_url ()
henter den absolutte nettadressen til plugin-katalogen (uten et skråstrek). Det krever to valgfrie parametre: banen til å legge til etter nettadressen, og pluginet som du vil at nettadressen skal være relatert til.plugin_dir_url ()
henter nettadressen for katalogen en fil er i (med et skråstrek), med den filen som dens parameter. Normalt vil du bruke __FIL__
som parameter for å angi gjeldende fil.Her er et eksempel på hver av de ovennevnte. For det første, for å hente nettadressen for en fil i gjeldende plugin, inneholder katalogen:
plugins_url ('includes / myfile.php', __FILE__);
Og for å hente den samme nettadressen ved hjelp av plugin_dir_url ()
:
plugin_dir_url (__FILE__). 'inkluderer / myfile.php';
Merk at med det andre eksemplet må du ekko ut banen etter funksjonen: Jeg foretrekker den første som den er finere. Ikke glem at den andre returnerer et skråstrek og den første ikke gjør det.
Du bør aldri koble harddiskkoblinger til stilark og skript i malfiler eller plugins: bruk i stedet en funksjon og fest den til riktig krok. Dette unngår problemer med at filene flyttes, sikrer at du bruker de riktige skriptene uten duplisering, og er også mer effektive.
For å ringe et stilark, bruk wp_register_style ()
og wp_enqueue_style ()
i en funksjon og hek det til wp_enqueue_scripts
kroken. Funksjonen nedenfor ville gjøre dette i et plugin:
Legg merke til at jeg har brukt __FIL__
ovenfor, som forteller WordPress at banen til stilarket er i forhold til gjeldende fil.
Å ringe et skript er lik, men bruker wp_register_script ()
og wp_enqueue_script ()
i din funksjon, og legger dem til wp_enqueue_scripts
kroken. Eksempelet nedenfor registrerer et nytt skript og kaller det:
funksjon register_my_scripts () wp_register_script ('my_script', plugins_url ('/js/script.js', __FILE__)); wp_enqueue_script ('my_script'); add_action ('wp_enqueue_scripts', 'register_my_scripts');
Hvis skriptet ditt bruker et skript som er buntet med WordPress, for eksempel jQuery, trenger du ikke å registrere det. bare enqueue det som følger:
funksjon register_my_scripts () wp_enqueue_script ('my_script', plugins_url ('/js/script.js', __FILE__), 'jquery', 'true'); add_action ('wp_enqueue_scripts', 'register_my_scripts');
Les mer om wp_enqueue_scripts
koble i denne opplæringen om å inkludere JavaScript og CSS i dine temaer og plugins.
Forhåpentligvis har jeg overbevist deg om at hardkodende nettadresser i WordPress er en dårlig ide: det kan føre til alle slags problemer i fremtiden, og er mindre effektiv. Avhengig av hvor du trenger å koble til, gir WordPress en funksjon for å erstatte alle hardkodede nettadresser, enten i dine temaer eller plugins. Du kan bruke funksjoner og maltekoder til å koble til sider i frontendens side, inkludert hjemmesiden, til skjermbilder på WordPress-administrasjonen, og til filer i maler eller plugins.