Wanneer u een thema of een plug-in ontwikkelt, zult u vaak merken dat u een URL in uw code moet opnemen. In een plug-in kunt u bijvoorbeeld een link naar een stylesheet gebruiken die bij de plug-in is geleverd, terwijl u in een thema de URL van de site in uw header waarschijnlijk wilt coderen.
Het is misschien verleidelijk om de URL gewoon op dezelfde manier te coderen als op een statische site, maar het is een slecht idee. In deze tutorial leg ik uit waarom je dit niet zou moeten doen - en laat je de functies zien die je kunt gebruiken om URL's dynamisch te maken.
Laten we beginnen met thema's. Als u een thema aan het ontwikkelen bent voor gebruik op een specifieke site, lijkt het misschien niet te schadelijk om het domein van die site ergens in de themabestanden toe te voegen, maar er zijn enkele duidelijke risico's en nadelen:
Dus doe het niet!
Maar hoe zit het met plug-ins? Nou, dit is nog riskanter. Het is niet ongebruikelijk om een thema te ontwikkelen voor slechts één site, maar de meeste plug-ins worden op meerdere sites gebruikt. Het is onwaarschijnlijk dat u ooit een volledige URL in een plug-in zou coderen, maar u kunt in de verleiding komen om een functie te gebruiken om de URL van de site op te halen en vervolgens het pad naar de plugin-directory te coderen. Nogmaals, dit is riskant:
Dit kan ertoe leiden dat uw plug-in simpelweg niet werkt.
Wat doet u dan om hardcoderings-URL's in WordPress te vermijden??
Er zijn verschillende functies die u gebruikt om hardcoderings-URL's in WordPress te vermijden. Ik ga ze opsplitsen in vijf categorieën:
Laten we beginnen met de functies om een link naar de startpagina op te halen en uit te voeren.
De volgende sjabloonlabels zullen de URL van de startpagina voor uw site ophalen of uitvoeren:
bloginfo ('url')
: geeft de persoonlijke URL weer zoals opgegeven in uw leesinstellingen in de beheerder.get_bloginfo ('url')
: haalt de site-URL op zonder deze weer te geven.HOME_URL ()
: haalt de startpagina-URL op zonder deze weer te geven: gebruik echo esc_url (home_url ('/'));
om de eigen URL weer te geven met een slash. Hiervoor zijn twee optionele parameters nodig: $ path
als u een pad aan een specifieke pagina wilt toevoegen of een trash-schuine streep wilt toevoegen, en $ regeling
om het schema voor de URL op te geven, zoals http
, https
en familielid
.get_home_url ()
haalt de URL op voor de startpagina en ondersteunt Multisite: u kunt de blog-ID opnemen als een parameter.SITE_URL ()
: de URL waar WordPress is opgeslagen, dus als uw WordPress-installatie zich in de submap wordpress bevindt, zal dit de URL ophalen http://mysite.com/wordpress
. get_site_url ()
: Haalt de site-URL op zonder deze uit te voeren. Kan ook worden gebruikt met parameters om de URL voor een site in een multisite-netwerk uit te voeren, een pad toe te voegen en een specifiek schema te gebruiken.network_home_url ()
: de persoonlijke URL voor de hoofdsite in een multisite-netwerk, handig als u bijvoorbeeld een link naar de hoofdsite wilt opnemen in de voettekst van elke site op het netwerk, bijvoorbeeld.network_site_url ()
: de site-URL voor de hoofdsite in een multisite-netwerk.Zoals u kunt zien, zijn er een paar verschillende tags die u kunt gebruiken om de URL weer te geven. Welke u gebruikt, is afhankelijk van een aantal acteurs:
U moet een van deze gebruiken in uw themasjabloonbestanden waar u een link naar de startpagina wilt invoegen, bijvoorbeeld als een logo in de hoofdkop van uw site naar de startpagina verwijst. Er kunnen ook gevallen zijn waarbij een plug-in de startpagina-URL moet ophalen of weergeven.
Naast de URL van de startpagina, kan het voorkomen dat u links naar andere pagina's op uw site wilt coderen. Dit omvat pagina's, berichten, bijlagen en aangepaste berichttypen. Dit zijn de functies die u moet gebruiken:
post_permalink ()
geeft een link naar een bericht uit, met de bericht-ID als parameter.get_page_link ()
haalt de link naar een pagina op, maar voert deze niet uit, met de pagina-ID als een parameter.get_permalink ()
haalt de permalink voor een bericht of pagina op, maar voert deze niet uit, met de post- of pagina-id als parameter.get_category_link ()
haalt de koppeling naar een categoriearchief op, met de categorie-ID als parameter.get_tag_link ()
haalt de koppeling naar de archiefpagina van een tag op, met de tag-ID als parameter.get_post_type_archive_link ()
haalt de koppeling op naar het archief van een berichttype, met het berichttype als parameter.get_term_link ()
haalt de link op naar een taxonomie-term, met de term en de taxonomie als parameters.the_attachment_link ()
geeft de koppeling naar een bijlage uit, met de bijlage-ID als eerste parameter. Gebruik andere parameters om de afbeeldingsgrootte te definiëren en of de koppeling naar het bestand zelf of naar de bijlagepagina leidt.get_attachment_link ()
haalt de link op voor een bijlage, met de bijlage-ID als parameter.wp_get_attachment_link ()
haalt ook de koppeling naar een bijlage op, maar laat u ook de afbeelding weergeven als de bijlage een afbeelding is, op een formaat dat u opgeeft.get_search_link ()
haalt de link naar de zoekpagina op. U kunt een query als parameter definiëren of deze leeg laten, in welk geval de huidige query wordt gebruikt.Als u een plug-in of thema aanmaakt met instellingenschermen in de WordPress-beheerder, of als u de beheerdersschermen aanpast, wilt u misschien koppelingen toevoegen aan beheerdersschermen. Nogmaals, u moet uw URL's niet hardcoden, maar een van deze tags gebruiken:
admin_url ()
haalt een URL op in de admin (maar deze wordt niet uitgevoerd). U moet het pad naar de URL als een parameter opnemen en het schema indien nodig ook opnemen. Dus, bijvoorbeeld om de URL voor het scherm uit te voeren om een nieuw bericht te maken, zou je gebruiken echo admin_url ('post-new.php');
.get_admin_url ()
is gelijkaardig aan admin_url ()
maar ondersteunt Multisite-netwerken: u kunt de blog-ID opnemen als een parameter.edit_post_link ()
toont een link naar de bewerkingspagina voor een bericht. Het kan worden gebruikt in de lus of buiten de lus met de bericht-ID als een parameter.get_edit_post_link ()
haalt de koppeling naar het bewerkingsscherm van een bericht op, met de bericht-ID als parameter.Net zoals bij het coderen van URL's in de front-end- of admin-schermen, moet u ook URL's en paden correct coderen als u naar bestanden in uw plug-in of themamappen verwijst.
Ten eerste, hier zijn de functies die u zou moeten gebruiken in themabestanden:
get_stylesheet_directory ()
haalt het volledige serverpad (niet de URL) op voor de directory van het actueel geactiveerde thema. Gebruik dit om include-bestanden aan te roepen in plaats van links uit te voeren.get_stylesheet_directory_uri ()
haalt de URL op voor het actueel geactiveerde thema, zonder een trash. Gebruik het in sjabloonbestanden om bronnen op te halen die zijn opgeslagen in uw themamap: om bijvoorbeeld een afbeelding weer te geven die is opgeslagen in de map met afbeeldingen van uw thema, gebruikt u
.get_bloginfo ('stylesheet_directory')
haalt de URL op voor het actueel geactiveerde thema: gebruiken get_stylesheet_directory_uri ()
is netter.get_template_directory_uri ()
is gelijkaardig aan get_stylesheet_directory_uri ()
maar als u een kindthema gebruikt, haalt het de URL op voor het bovenliggende thema. evenzo, get_template_directory ()
werkt op dezelfde manier als get_stylesheet_directory ()
maar voor het ouderthema.Er zijn ook functies voor gebruik in plug-in bestanden:
plugins_url ()
haalt de absolute URL naar de map met plug-ins (zonder een schuine streep). Er zijn twee optionele parameters nodig: het pad dat moet worden toegevoegd na de URL en de plug-in waaraan u de URL wilt relateren.plugin_dir_url ()
haalt de URL op voor de map waarin een bestand zich bevindt (met een trash naar achteren), met dat bestand als parameter. Normaal zou je gebruiken __HET DOSSIER__
als zijn parameter om het huidige bestand aan te duiden.Hier is een voorbeeld van elk van de bovenstaande. Ten eerste bevat het ophalen van de URL voor een bestand in de huidige plug-ins de map:
plugins_url ('includes / myfile.php', __FILE__);
En om dezelfde URL op te halen met plugin_dir_url ()
:
plugin_dir_url (__FILE__). 'includes / myfile.php';
Merk op dat je bij het tweede voorbeeld het pad na de functie moet herhalen: ik geef de voorkeur aan het eerste als het netter is. Vergeet niet dat de tweede een slash teruggeeft en de eerste niet.
U mag nooit links naar stylesheets en scripts hardcoderen in uw sjabloonbestanden of plug-ins: gebruik in plaats daarvan een functie en koppel deze aan de juiste haak. Dit voorkomt problemen met bestanden die worden verplaatst, zorgt ervoor dat u de juiste scripts gebruikt zonder duplicatie, en is ook efficiënter.
Gebruik. Om een stylesheet te bellen wp_register_style ()
en wp_enqueue_style ()
in een functie en haak het aan de wp_enqueue_scripts
haak. De onderstaande functie zou dit doen in een plug-in:
Merk op dat ik heb gebruikt __HET DOSSIER__
hierboven, die WordPress vertelt dat het pad naar het stylesheet relatief is ten opzichte van het huidige bestand.
Het aanroepen van een script is vergelijkbaar, maar gebruikt wp_register_script ()
en wp_enqueue_script ()
in uw functie en koppelt die aan de wp_enqueue_scripts
haak. Het onderstaande voorbeeld registreert een nieuw script en roept het:
function register_my_scripts () wp_register_script ('my_script', plugins_url ('/js/script.js', __FILE__)); wp_enqueue_script ('mijn_script'); add_action ('wp_enqueue_scripts', 'register_my_scripts');
Als uw script een script gebruikt dat is gebundeld met WordPress, zoals jQuery, hoeft u het niet te registreren; gewoon in de wacht slepen als volgt:
function register_my_scripts () wp_enqueue_script ('my_script', plugins_url ('/js/script.js', __FILE__), 'jquery',, 'true'); add_action ('wp_enqueue_scripts', 'register_my_scripts');
Lees meer over de wp_enqueue_scripts
haak in deze tutorial over het toevoegen van JavaScript en CSS in uw thema's en plug-ins.
Hopelijk heb ik je ervan overtuigd dat hardcoderings-URL's in WordPress een slecht idee zijn: het kan in de toekomst tot allerlei problemen leiden en is minder efficiënt. Afhankelijk van waar u naartoe moet linken, biedt WordPress een functie om elke hard-gecodeerde URL te vervangen, in uw thema's of plug-ins. U kunt functies en sjabloontags gebruiken om naar pagina's in de voorkant van uw site te linken, inclusief de startpagina, naar schermen op de WordPress-beheerder en naar bestanden in uw sjablonen of invoegtoepassingen..