Omskrivning af webadresser i WordPress-tip og plugins
De nyeste opdateringer til WordPress har givet udviklere mulighed for at tilpasse deres personlige hjemmeside meget hurtigt. Det er nemt at opdatere områder af dit tema, erstatte widgets i sidelinjen og endda skrive dine egne brugerdefinerede PHP-kodefunktioner. Udvidelsen er enorm - og et område med popularitet omskrives temmelig URL permalinks.
Der er et par metoder, du kan bruge til at gå om opdatering af standard WordPress omskrivningssystemet. I denne vejledning vil jeg dele et par eksempler og demonstrere, hvor enkelt processen kan være. Du skal bruge en forståelse af PHP for at følge, hvad der sker i koden, men det er så nemt at kopiere og indsætte i din egen skabelon, der er praktisk taget intet arbejde involveret.
Forstå WP_Rewrite
Hvis du overhovedet er bekendt med mod_rewrite på Apache-servere, så henter du på WordPress-omskrevet syntaks. Deres system er stadig bygget oven på en .htaccess fil, men alle regler er kodet i PHP. Dette gør faktisk processen lettere, da vi har mere kontrol over at skrive vores egne webadresser.
Jeg anbefaler at skumme $ wp_rewrite klassesiden, da den har masser af info om emnet. Der er endda små eksempler, vi kan henvise til for at gøre alt lettere at forstå. Det meste af koden kan skrives direkte ind i dit tema functions.php fil. Lad os begynde med at se på de standardskrivninger, der allerede er inkluderet i WordPress.
Indhold af $ wp_rewrite-> regler
Ved at erklære $ wp_rewrite
klasse som global har vi adgang til alle de interne data. Når du går til at tilføje dine egne regler, tilføjes disse i en matrix med navnet $ Wp_rewrite-> regler
. Det er vigtigt at huske denne variabel, da du sandsynligvis skal henvise dataene mange gange under udvikling.
regler); ?>
Jeg tilføjede denne blok kode i mit tema page.php fil. Det vil udgive et stort udvalg af data, der ligner et stort rod. Men hvis du Se kilde På din side er det faktisk nemt at se, hvilke omskrivningsregler der matches til hvilket filnavn. For eksempel, lad os se på reglerne for kategori omskrivninger:
[category /(.+?)/?$] => index.php? category_name = $ matches [1]
Biten på venstre side i parentes er vores Apache RewriteRule at kigge efter. Begyndende med afsnittet /kategori/ efterfulgt af enhver streng af tegn. Hvis dette matches, kan serveren henvise til index.php? CATEGORY_NAME =
mens du udskifter variablen på enden.
Indstilling af tilpassede Permalinks
Der er så meget indhold at gå over i $ wp_rewrite-klassen alene. Mange andre egenskaber kan henvises, f.eks $ Wp_rewrite-> category_base
eller $ Wp_rewrite-> author_base
for at trække standard URL-strukturer for disse sider. Men bortset fra at trække WPs standardindstillinger kan vi også opbygge vores egne regler.
Genopbygning af forfatterbase
Når du går ind på siden for Permalinks-indstillinger, har du mulighed for at nulstille kategori- og tagbaser. Men muligheden for at nulstille din forfatter base mangler mærkeligt.
Men vi kan bruge add_rewrite_rule ()
fra WordPress 'codex for at integrere nogle nye indstillinger. I dette tilfælde har jeg udskiftet /forfatter/ med /forfatter/ men du kunne bruge uanset base du kan lide. Derudover har jeg kopieret nogle af de andre omdirigeringer til forfattersider og RSS-feeds. Du kan føje denne blok kode til dit tema's funktioner.php-fil.
add_action ('init', 'add_author_rules'); funktion add_author_rules () add_rewrite_rule ("forfatter / ([^ /] +) /?", "index.php? author_name = $ matches [1]", "top"); add_rewrite_rule ("forfatter / ([^ /] +) / side /? ([0-9] 1,) /?", "index.php? author_name = $ matches [1] & paged = $ matches [2] "," top "); add_rewrite_rule ("skribent / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ matches [1] & feed = $ matches [2]" top"); add_rewrite_rule ("forfatter / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ matches [1] & feed = $ matches [2]" , "top");
Denne funktion kan tilgås selv uden at bruge $ wp_rewrite variablen. Nogle udviklere kan lide denne metode, fordi det er enklere end hardkodning med klasseegenskaber. Men jeg har også bemærket, at denne metode ikke altid er pålidelig for nogle WordPress-installationer. Der er faktisk en anden mulighed for at tilføje disse regler på krogen efter skylning af din .htaccess (se nedenfor).
Forfatter Base ved hjælp af generate_rewrite_rules
Skrive til denne metode vil vi igen have brug for den globale $ wp_rewrite klasse. Jeg har derefter konfigureret en ny variabel, der hedder $ new_rules
som indeholder et associativt array af data. Mit eksempelkode nedenfor ændrer bare til den grundlæggende forfattersektion.
funktion generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("skribent / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> regler;
Men hvis vi ønsker at inkludere flere sider og RSS-feeds, kan vi bøve op i rækken. Du har mulighed for at oprette en PHP-funktion for at skubbe associative array-data, som kan være lidt for kompleks. Vi kunne også opdele datablokkerne via kommaer, som opfører sig som separate enheder i arrayet. Tjek min opdaterede kode igen skrevet i functions.php temafil.
funktion generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("forfatter / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1), "forfatter / ([^ /] +) / side /? ([0-9] 1,) /? "=>" Index.php? Author_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2) "forfatter / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1). $ wp_rewrite-> preg_index (2), "skribent / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite- > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> regler;
Bare husk, at ingen af disse metoder vil fungere, før du har spylt de oprindelige omskrivningsregler. Du bliver nødt til at gøre dette, når du foretager ændringer i disse funktioner, men bagefter vil dine nye regler holde sig på ubestemt tid.
Spylning af omskrivningsreglerne
Når du laver en opdatering til URL-omskrivningskoden, anvendes ændringerne ikke umiddelbart. Du skal skylle reglerne for .htaccess omskrivning, så din nye kode bliver tilføjet. Men at udføre dette på hver side er init ekstremt spildfuld, da den skriver til databasen og opdaterer hardt .htaccess-filen.
En bedre metode er at få adgang til din permalinks-side i admin panelet og gemme ændringerne igen. Dette kalder altid en flush_rewrite_rules, så du behøver aldrig bekymre dig om brugere på frontenden, der oplever problemer med indlæsning. Og det tager kun en gang at genoprette siden og opdatere alle reglerne i dit system. Men hvis det ikke virker, kan du prøve at ringe $ Wp_rewrite-> flush_rules ();
Brug af ikke-WP-regler
Inde i $ wp_rewrite
klasse har vi adgang til snesevis af ejendomme. En af de mere betydningsfulde muligheder er $ Wp_rewrite-> non_wp_rules
som samler en række omdirigeringer, som ikke rammer index.php filen.
Dette bruges faktisk oftest i WordPress plugin udvikling. Du kan skubbe en bestemt brugerdefineret URL-type (f.eks / Kalender / juni-2012 /
) i backend på dit websted (/wp-content/plugins/calendarplug/myscript.php
). Men selvfølgelig er der yderligere anvendelser til dette associative udvalg af brugerdefinerede omskrivningsregler bortset fra plugins. Jeg har givet et glimrende eksempel i nedenstående sammenhæng.
Maskering af dine temafiler
Dette er et almindeligt forslag, jeg ser ofte på WordPress-diskussionsfora. Ideelt set vil vi gerne referere nogle filer inde i / Wp-content / temaer / Mytheme /
mappe med en mere elegant URL. Bemærk, at dette vil kræve et andet sæt af WordPress-omskrivninger for at ændre mappestrukturen.
WordPress 'interne omskrivningssystem skubber altid indhold til en enkelt rutefil. I standard tilfælde bruger vi index.php sammen med eventuelle ekstra forespørgselsstrengsdata. Men for at gemme vores standard skabelon katalog (/ Wp-content / temaer / Mytheme / *
) vi bliver nødt til at vise mange forskellige filer.
add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); funktion themes_dir_add_rewrites () $ theme_name = next (eksplodere ('/ themes /', get_stylesheet_directory ())); global $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-indhold / temaer /'. $ temanavn. '/ css / $ 1', 'js /(.*)' => 'wp-indhold / temaer / '. $ theme_name.' / js / $ 1 ',' images / wordpress-urls-rewrite /(.*) '=>' wp-indhold / temaer / '. $ theme_name.' / images / wordpress-urls-rewrite / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;
Jeg har skrevet en ny funktion themes_dir_add_rewrites ()
at trække alt det store indhold fra disse længere webadresser og omdirigere dem i backend. Bemærk, at vi bruger denne anden mystiske ejendom af $ wp_rewrite klassen navngivet non_wp_rules
. Ifølge docs er disse regler, der ikke henvender sig til WPs index.php-fil og vil blive håndteret på serverens ende.
Hvad der er så godt med disse ikke-WP-regler, er, at du stadig nemt kan styre den ældre URL-metode. Der er ikke noget, der forhindrer dig i at forbinde til:
/wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg
.
Men det ser en hel del pænere ud, hvis du kan henvise til:
/images/wordpress-urls-rewrite/logo.jpg
i stedet.
Nyttige værktøjer og plugins
Der er kun et par værktøjer, du kan bruge, hvis du sidder fast med at kode dine egne smukke webadresser. Processen er meget vanskeligt at forstå, så tag dig ikke modløs, hvis du kæmper i et par uger. Jeg føler, at indholdet bliver lettere, da du bruger mere tid på at øve.
Men for at komme i gang skal du tjekke nogle af disse handy omskrivningsværktøjer og plugins. Du har nok ikke brug for dem alle, men det er dejligt at finde en så stor udviklerbase, der arbejder omkring WP-omskrivninger.
Monkeyman Omskrivningsanalysator
Når du først hopper ind i omskrivningsregler, er dette plugin et must-have. Det ændrer ikke nogen af reglerne for dit websted - det giver dig kun mulighed for at teste kode og se hvilke omdirigeringer, der går til hvilke sider. Det vil endda fungere for at teste tilpassede forespørgselsvariabler til alle brugerdefinerede posttyper.
AskApache RewriteRules Viewer
Dette ligner pluginet ovenfor, medmindre det ikke giver dig mulighed for at teste dine egne regler. I stedet vil dette plugin vise alle dine hjemmesides standard WP-regler og hvor de omdirigeres til. Dette vil omfatte alle de vigtigste egenskaber af $ wp_rewrite
f.eks. dine permalinkindstillinger og side / kategori / tags baser.
WP htaccess Control
Her har du et andet sæt regler for at lave nye omdirigeringer. Plugin har sit eget admin panel, hvor du kan redigere variabler som din forfatter base, sidebaser og endda tilføje dine egne brugerdefinerede .htaccess regler.
Denne metode er anderledes end at bygge din egen ved hjælp af wp_rewrite. Det kan dog være nemmere for teknikere, der virkelig kender webservere og føler sig mere trygge, skriver direkte ind i .htaccess.
Omskriv Regel Tester
Dette er faktisk ikke et WordPress-plugin, men er bestemt et praktisk værktøj til at holde på filen. Du kan kopiere over omskrivningsregler og teste dem for dit websted uden at skulle redigere din .htaccess-fil. Dette er den perfekte metode til at fjerne bugs ud af din syntaks, før du starter live på nettet.
DW ReWrite
DW Omskrivning er et meget simpelt plugin, der skaber 3 unikke smukke webadresser umiddelbart efter installationen. Som standard vil det ændre admin, login og registreringslinks til / admin
, /Log på
, og /Tilmeld
henholdsvis.
Dette kan være fantastisk, hvis du har brug for en hurtig løsning til en blog, der indeholder flere forfattere. Det vil specifikt skjule det pinligt indviklede WordPress-registreringslink (/wp-login.php?action=register
).
Konklusion
Jeg håber, at denne vejledning kan give nogle eksempler for at få dig til at tænke på WordPress-omskrivninger. CMS er meget populær, og udviklere producerer stadig nye funktioner hver dag. Tilpasning af dine egne webadresser er et så stort stykke brugerbaseret funktionalitet. Det giver din hjemmeside sin egen unikke tilstedeværelse og branding i forhold til standardindstillingerne.
Hvis du har problemer med omskrivningsregler, bør det aldrig være svært at fortryde skaden. Ved blot at slette funktionskoden og spole dine .htaccess-regler ser det ud til, at intet er ændret. Sørg for at tjekke nogle andre lignende artikler, du kan finde om emnet. Og hvis du har spørgsmål eller kommentarer, kan du dele dem med os i det efterfølgende diskussionsområde.