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.
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:
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:
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?
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:
Låt oss börja med funktionerna för att hämta och skriva ut en länk till hemsidan.
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:
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.
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.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.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.
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.
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.