Varför ska du inte koda webbadresser i WordPress-teman eller plugins

När du utvecklar ett tema eller ett plugin, hittar du ofta att du måste inkludera en URL i din kod. Till exempel i en plugin kan du behöva en länk till ett stilark som buntas med pluginet, medan du i ett tema säkert vill koda webbplatsens URL i din rubrik.

Det kan vara frestande att bara koda webbadressen på samma sätt som du kanske på en statisk sida, men det är en dålig idé. I den här handledningen ska jag förklara varför du inte ska göra det här - och visa vilka funktioner du kan använda för att skapa webbadresser dynamiskt.

Varför ska du inte koda webbadresser i dina teman och plugins

Låt oss börja med teman. Om du utvecklar ett tema för användning på en viss webbplats kanske det inte verkar vara skadligt att lägga till domänens domän i temafilerna någonstans, men det finns vissa bestämda risker och nackdelar:

  • Om du någonsin bestämmer dig för att ändra webbplatsens domännamn måste du redigera alla webbadresser du har hårdkodad.
  • Om du arbetar på en utvecklingswebbplats som du flyttar till en live-server vid lanseringen måste du ändra alla webbadresser du har hårdkodad.
  • Om du väljer att använda temat på en annan webbplats måste du redigera alla dessa webbadresser.
  • Om du bestämmer dig för att släppa ut temat för allmänheten eller låta andra utvecklare använda det, kommer det att bryta.
  • Om du använder temat som grund för ett annat tema som du utvecklar för en annan webbplats måste du redigera alla webbadresser.
  • Om din webbplats finns i en underkatalog i din domäns rotkatalog men du har sagt att WordPress ska använda rotkatalogen för webbadressen kan dina hårdkodade webbadresser peka på fel plats.
  • Om du någonsin glömmer att göra något av ovanstående kommer din webbplats att få 404 fel, och länkar till resurser som bilder och stylesheets kommer inte att fungera.

Så gör det inte!

Men hur är det med plugins? Tja, det här är ännu mer riskabelt. Det är inte ovanligt att utveckla ett tema bara för en webbplats, men de flesta plugins kommer att användas på flera webbplatser. Det är osannolikt att du någonsin skulle hårdkoda en fullständig URL till ett plugin, men du kan vara frestad att använda en funktion för att hämta webbplatsens URL och sedan koda sökvägen till plugin-katalogen. Återigen är detta riskabelt:

  • Om ditt plugin flyttas till en annan katalog (t.ex. den måste använda katalogen) kommer alla länkar att brytas.
  • Om ditt plugin är installerat i ett Multisite-nätverk som kör en äldre version av WordPress kan dina länkar bryta.
  • Om ditt plugin är installerat på en webbplats med en annan katalogstruktur till den du har använt för dina webbadresser, kommer dina länkar att bryta igen.

Detta kan leda till att din plugin helt enkelt inte fungerar alls.

Så, vad gör du för att undvika hårdkodande webbadresser i WordPress?

Funktioner som ska användas istället för hårdkodade webbadresser

Det finns en mängd olika funktioner som du använder för att undvika hårdkodande webbadresser i WordPress. Jag ska dela upp dem i fem kategorier:

  • funktioner för att hämta webbplatsens hemsida
  • funktioner för att hämta andra frontlinks länkar (inklusive inlägg, sidor, bilagor och arkiv)
  • Funktioner för att hämta webbadresser för administratörsskärmarna
  • Funktioner för att hämta webbadresser för filer i plugin och temat kataloger
  • funktioner för att hämta stilark och skript

Låt oss börja med funktionerna för att hämta och skriva ut en länk till hemsidan.

Hämtar hemsidan URL

Följande malltaggar hämtar eller matar ut webbsidans webbadress för din webbplats:

  • bloginfo ('url'): visar hemadressen som anges i dina läsinställningar i admin.
  • get_bloginfo ('url'): hämtar webbplatsens webbadress utan att visa den.
  • HOME_URL (): hämtar webbadressen till hemsidan utan att visa den: använd echo esc_url (home_url ('/')); för att visa hemadressen med en slående slash. Det tar två valfria parametrar: $ väg om du vill lägga till en sökväg till en viss sida eller lägga till en efterföljande snedstreck, och $ schema att ange schemat för webbadressen, t.ex. http, https och släkting.
  • get_home_url () hämtar webbadressen för hemsidan och stöder multisite: du kan inkludera blogg-id som en parameter.
  • SITE_URL (): URL: n där WordPress är lagrad, så om din WordPress-installation finns i underkatalogen wordpress kommer den att hämta webbadressen http://mysite.com/wordpress
  • get_site_url (): Hämtar webbplatsens URL utan att mata ut den. Kan också användas med parametrar för att utmata webbadressen för en webbplats i ett Multisite-nätverk, lägga till en sökväg och använda ett visst schema.
  • network_home_url (): Hemadressen för huvudsidan i ett Multisite-nätverk, användbart om du vill inkludera en länk till huvudwebbplatsen i sidfoten på varje webbplats i nätverket, till exempel.
  • network_site_url (): Webbadressens webbadress för huvudwebbplatsen i ett Multisite-nätverk.

Som du kan se finns det några olika taggar du kan använda för att visa webbadressen. Vilket du använder beror på ett antal aktörer:

  • Vill du bara hämta webbadressen eller visa den?
  • Vill du lägga till en sökväg efter hemadressen? (Du kan undvika detta i vissa fall med funktionerna i nästa avsnitt.)
  • Vill du ange systemet?
  • Vill du hämta webbadressen till hemsidan eller webbplatsens webbadress, om dessa är olika?
  • Vill du hämta webbadressen för en webbplats i ett Multisite-nätverk?

Du bör använda en av dessa i dina templatsmallfiler där du vill infoga en länk till hemsidan, till exempel om en logotyp i webbplatsens huvud länkar till hemsidan. Det kan också finnas fall där ett plugin måste hämta eller visa webbadressen till hemsidan.

Hämtar andra främre slutadresser

Förutom hemsidanadressen kan det finnas tider när du vill koda länkar till andra sidor på din webbplats. Detta kommer att innehålla sidor, inlägg, bilagor och anpassade inläggstyper. Här är de funktioner du ska använda:

  • post_permalink () utmatar en länk till ett inlägg, med post-ID som dess parameter.
  • get_page_link () hämtar (men matar inte ut) länken till en sida, med sid-ID som en parameter.
  • get_permalink () hämtar (men skickar inte) permalinken för ett inlägg eller en sida, med post- eller sid-ID som dess parameter.
  • get_category_link () hämtar länken till ett kategoriarkiv med kategorin ID som dess parameter.
  • get_tag_link () hämtar länken till en etiketts arkivsida, med tagg-ID som dess parameter.
  • get_post_type_archive_link () hämtar länken till en posttyps arkiv, med posttyp som dess parameter.
  • get_term_link () hämtar länken till en taxonomi term, med termen och taxonomin som dess parametrar.
  • the_attachment_link () Utmatar länken till en bilaga, med bilaga ID som sin första parameter. Använd andra parametrar för att definiera bildstorleken och om länken kommer att leda till själva filen eller dess bilagasida.
  • get_attachment_link () hämtar länken för en bilaga, med bilaga ID som parameter.
  • wp_get_attachment_link () hämtar också länken till en bilaga, men dessutom kan du visa bilden om bilagan är en bild i en storlek du anger.
  • get_search_link () hämtar länken till söksidan. Du kan definiera en fråga som dess parameter, eller lämna den tom, i vilket fall den kommer att använda den aktuella frågan.

Hämtar administratörsadresser

Om du skapar ett plugin eller ett tema med inställningsskärmar i WordPress-administratören, eller du anpassar administratörsskärmarna, kanske du vill lägga till länkar till administratörsskärmar. Återigen ska du inte koda dina webbadresser, men använd en av dessa taggar:

  • admin_url () hämtar (men skickar inte ut) en URL i admin. Du måste inkludera sökvägen till webbadressen som en parameter och kan även inkludera systemet om det behövs. Så, till exempel, att utmata webbadressen för skärmen för att skapa ett nytt inlägg, du skulle använda echo admin_url ('post-new.php');.
  • get_admin_url () liknar admin_url () men stöder multisite-nätverk: du kan inkludera blogg-id som en parameter.
  • edit_post_link () visar en länk till redigeringssidan för ett inlägg. Den kan användas i slingan eller utanför slingan med post-ID som en parameter.
  • get_edit_post_link () hämtar länken till ett inläggs redigeringsskärm, med post-ID som dess parameter.

Hämtar filer i plugin och temapapper

Precis som när du kodar webbadresser i front-end eller admin-skärmar, bör du också koda webbadresser och sökvägar korrekt när du hänvisar till filer i plugin- eller temamappor. 

Först här är de funktioner du ska använda i temafiler:

  • get_stylesheet_directory () hämtar hela serverbanan (inte webbadressen) för det aktuella aktiverade tematkatalogen. Använd detta för att ringa inkludera filer istället för att utmata länkar.
  • get_stylesheet_directory_uri () hämtar URL-adressen för det aktuellt aktiverade temat, utan ett slående slash. Använd det i mallfiler för att hämta resurser som är lagrade i tematmappen: t.ex. om du vill visa en bild som är lagrad i tematets bildmapp, använd .
  • get_bloginfo ('stylesheet_directory') hämtar URL-adressen för det aktuellt aktiverade temat: använder get_stylesheet_directory_uri () är snyggare.
  • get_template_directory_uri () liknar get_stylesheet_directory_uri () men om du använder ett barntema hämtar det webbadressen för modertemat. Liknande, get_template_directory () fungerar på samma sätt som get_stylesheet_directory () men för moderens tema.

Det finns också funktioner för användning i pluginfiler:

  • plugins_url () hämtar den absoluta URL-adressen till plugins-katalogen (utan slash). Det tar två valfria parametrar: sökvägen att lägga till efter webbadressen och plugin som du vill att webbadressen ska vara relaterad till.
  • plugin_dir_url () hämtar URL-adressen för katalogen en fil är i (med en slående slash), med den filen som dess parameter. Normalt skulle du använda __FIL__ som dess parameter för att ange den aktuella filen.

Här är ett exempel på var och en av ovanstående. För det första, för att hämta webbadressen för en fil i det aktuella pluginet ingår katalogen:

plugins_url ('includes / myfile.php', __FILE__);

Och för att hämta samma webbadress med plugin_dir_url ():

plugin_dir_url (__FILE__). 'inkluderar / myfile.php';

Observera att med det andra exemplet måste du eko ut sökvägen efter funktionen: Jag föredrar den första som den är snyggare. Glöm inte att den andra returnerar ett slash och det första gör det inte.

Hämtar stilark och skript

Du bör aldrig hårdkodslänkar till stylesheets och skript i dina mallfiler eller plugins: använd istället en funktion och fäst den i rätt krok. Detta undviker problem med att filerna flyttas, så att du använder rätt skript utan dubblering och är också effektivare.

För att ringa ett stilark, använd wp_register_style () och wp_enqueue_style () i en funktion och haka den till wp_enqueue_scripts krok. Funktionen nedan skulle göra detta i ett plugin:

Observera att jag har använt __FIL__ ovan, som berättar WordPress att sökvägen till stilarket är relativt den aktuella filen.

Ringa ett skript är likartat men använder wp_register_script () och wp_enqueue_script () i din funktion och fäster dem till wp_enqueue_scripts krok. I exemplet nedan registreras ett nytt skript och kallar det:

funktionsregister_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');

Om ditt skript använder ett skript som är buntat med WordPress, t.ex. jQuery, behöver du inte registrera det. bara enqueue det som följer:

funktionsregister_my_scripts () wp_enqueue_script ('my_script', plugins_url ('/js/script.js', __FILE__), 'jquery', 'true');  add_action ('wp_enqueue_scripts', 'register_my_scripts');

Läs mer om wp_enqueue_scripts koppla i den här handledningen om att inkludera JavaScript och CSS i dina teman och plugins.

Sammanfattning

Förhoppningsvis har jag övertygat er om att hårdkodande webbadresser i WordPress är en dålig idé: det kan leda till alla möjliga problem i framtiden och är mindre effektivt. Beroende på var du behöver länka till, tillhandahåller WordPress en funktion som ersätter någon hårdkodad URL, antingen i dina teman eller plugins. Du kan använda funktioner och malltaggar för att länka till sidor på webbplatsens främre del, inklusive hemsidan, till skärmar på WordPress-administratören och till filer i dina mallar eller plugins.