Hjemmeside » WordPress » Omskrivning av nettadresser i WordPress-tips og pluginprogrammer

    Omskrivning av nettadresser i WordPress-tips og pluginprogrammer

    De nyeste oppdateringene til WordPress har gitt utviklere mulighet til å tilpasse sin personlige nettside veldig raskt. Det er enkelt å oppdatere områder av temaet ditt, erstatte widgets i sidefeltet, og til og med skrive egne tilpassede PHP-kodefunksjoner. Utvidelsen er enorm - og et område med popularitet er omskriving av ganske nettadresseprenalinks.

    Det er noen metoder du kan bruke til å gå om å oppdatere standard WordPress-omskrivningssystemet. I denne opplæringen vil jeg dele noen eksempler og demonstrere hvor enkelt prosessen kan være. Du trenger litt forståelse av PHP for å følge det som skjer i koden, men det er så enkelt å kopiere og lime inn i din egen mal, det er praktisk talt ingen jobb involvert.

    Forstå WP_Rewrite

    Hvis du i det hele tatt er kjent med mod_rewrite på Apache-servere, vil du hente på WordPress-omskrevet syntaks. Deres system er fortsatt bygget på toppen av en .htaccess fil, men alle reglene er kodet i PHP. Dette gjør faktisk prosessen litt lettere siden vi har mer kontroll over å skrive våre egne nettadresser.

    Jeg anbefaler å skumme $ wp_rewrite klassesiden som den har tonnevis av informasjon om emnet. Det er enda små eksempler vi kan referere til for å gjøre alt lettere å forstå. Mesteparten av koden kan skrives direkte inn i temaet ditt functions.php fil. La oss begynne med å se på standardoverskrivelsene som allerede er inkludert i WordPress.

    Innhold av $ wp_rewrite-> regler

    Ved å erklære $ wp_rewrite klasse som global har vi tilgang til alle interne data. Når du går for å legge til dine egne regler, blir de lagt inn i en matrise med navnet $ Wp_rewrite-> regler. Det er viktig å huske denne variabelen siden du sannsynligvis trenger å referere dataene mange ganger under utviklingen.

    reglene); ?>

    Jeg la denne koden med i temaet mitt page.php fil. Det vil utgjøre et stort utvalg av data som ser ut som et stort rot. Men hvis du Se kilde på siden din er det faktisk enkelt å se hvilke omskrivningsregler som er matchet til hvilket filnavn. For eksempel, la oss se på reglene for kategori omskrivninger:

    [category /(.+?)/?$] => index.php? category_name = $ matches [1] 

    Biten på venstre side i parentes er vår Apache RewriteRule å se etter. Fra og med delen /kategori/ etterfulgt av en hvilken som helst streng av tegn. Hvis dette matches, vet serveren å referere index.php? category_name = mens du erstatter variabelen på slutten.

    Angir egendefinerte Permalinks

    Det er så mye innhold å gå over i $ wp_rewrite-klassen alene. Mange andre egenskaper kan refereres, for eksempel $ Wp_rewrite-> category_base eller $ Wp_rewrite-> author_base for å trekke standard URL-strukturer for disse sidene. Men bortsett fra å trekke WPs standardinnstillinger, kan vi også bygge våre egne regler.

    Ombygging av forfatterbasen

    Når du går inn på siden for Permalinks-innstillinger, har du muligheten til å tilbakestille kategori- og koder for baser. Men muligheten til å tilbakestille forfatterbasen din mangler merkelig.

    Men vi kan bruke add_rewrite_rule () fra WordPress 'kodeks for å integrere noen nye innstillinger. I dette tilfellet har jeg erstattet /forfatter/ med /forfatter/ men du kan bruke hvilken base du liker. I tillegg har jeg kopiert noen av de andre omadressene til forfattersider og RSS-feeder. Du kan legge denne koden med i temaets funksjoner.php-fil.

    add_action ('init', 'add_author_rules'); funksjon add_author_rules () add_rewrite_rule ("forfatter / ([^ /] +) /?", "index.php? author_name = $ matches [1]", "top"); add_rewrite_rule ("skribent / ([^ /] +) / side /? ([0-9] 1,) /?", "index.php? author_name = $ matches [1] & paged = $ matches [2] "," topp "); add_rewrite_rule ("skribent / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ matches [1] & feed = $ matches [2] topp"); add_rewrite_rule ("skribent / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ matches [1] & feed = $ matches [2] , "topp");  

    Denne funksjonen kan nås selv uten å bruke $ wp_rewrite-variabelen. Noen utviklere liker denne metoden fordi det er enklere enn hardkoding med klassegenskaper. Men jeg har også lagt merke til at denne metoden ikke alltid er pålitelig for noen WordPress-installasjoner. Det er faktisk et andre alternativ å legge til disse reglene på kroken etter å ha spurt din .htaccess (se nedenfor).

    Forfatterbasen bruker generasjons_revalueringsruller

    Skrive for denne metoden vil vi igjen trenge den globale $ wp_rewrite-klassen. Jeg har så satt opp en ny variabel som heter $ new_rules som inneholder en assosiativ rekke data. Min eksempelkode nedenfor endres bare for den grunnleggende forfattersiden.

    funksjon generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> regler;  

    Men hvis vi ønsker å inkludere flere sider og RSS-feeder, kan vi bøte opp samlingen. Du har muligheten til å opprette en PHP-funksjon for å skyve assosiativ array-data som kan være litt for komplisert. Vi kan også dele datablokkene via kommaer, oppfører seg som separate enheter i gruppen. Sjekk ut min oppdaterte kode igjen skrevet i functions.php temafil.

    funksjon generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("skribent / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1), "skribent / ([^ /] +) / side /? ([0-9] 1,) /? "=>" Index.php? Author_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2) "skribent / ([^ /] +) / (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 av disse metodene vil fungere før du har spylt de opprinnelige omskrivningsreglene. Du må gjøre dette når du gjør endringer i disse funksjonene, men etterpå vil de nye reglene holde deg på ubestemt tid.

    Spyler omskrivningsreglene

    Når du lager en oppdatering til URL-omskrivingskoden, blir endringene ikke brukt umiddelbart. Du må skylle reglene for .htaccess omskrivning, slik at den nye koden blir lagt til. Men å utføre dette på hver side er init ekstremt sløsing som det skriver til databasen og oppdaterer hardt .htaccess-filen.

    En bedre metode er å få tilgang til permalinks-siden i administrasjonspanelet og lagre endringene på nytt. Dette kaller alltid en flush_rewrite_rules slik at du aldri trenger å bekymre deg for brukere på frontenden som opplever problemer med å laste inn. Og det tar bare en gang å lagre siden og oppdatere alle reglene i systemet. Men hvis dette ikke virker, kan du prøve å ringe $ Wp_rewrite-> flush_rules ();

    Bruk av ikke-WP-regler

    Inne i $ wp_rewrite klasse har vi tilgang til dusinvis av eiendommer. En av de mer betydelige alternativene er $ Wp_rewrite-> non_wp_rules som samler en rekke omdirigeringer som ikke rammer index.php-filen.

    Dette brukes faktisk oftest i WordPress plugin-utvikling. Du kan trykke på en bestemt egendefinert URL-type (for eksempel / Kalender / juni-2012 /) inn i baksiden av nettstedet ditt (/wp-content/plugins/calendarplug/myscript.php). Men selvfølgelig finnes det flere bruksområder for dette assosiative utvalg av tilpassede omskrivningsregler enn plugins. Jeg har gitt et utmerket eksempel i sammenhengen nedenfor.

    Maskere temafilene dine

    Dette er et vanlig forslag jeg ofte ser på WordPress diskusjonsfora. Ideelt sett vil vi gjerne referere til noen filer inni / Wp-content / themes / Mytheme / mappe med en mer elegant nettadresse. Legg merke til at dette vil kreve et annet sett med WordPress-omskrivninger for å endre katalogstrukturen.

    WordPress 'interne omskrivningssystem skaper alltid innhold mot en enkelt rutefil. I standard tilfellet bruker vi index.php sammen med eventuelle ekstra søkeordstrengdata. Men for å gjemme vår standardmallkatalog (/ Wp-content / themes / Mytheme / *) Vi må vise mange forskjellige filer.

    add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); funksjon themes_dir_add_rewrites () $ theme_name = next (eksplodere ('/ themes /', get_stylesheet_directory ())); global $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-innhold / temaer /'. $ theme_name. '/ css / $ 1', 'js /(.*)' => 'wp-innhold / temaer / '. $ theme_name.' / js / $ 1 ',' images / wordpress-urls-rewrite /(.*) '=>' wp-innhold / temaer / '. $ theme_name.' / images / wordpress-urls-rewrite / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;  

    Jeg har skrevet en ny funksjon themes_dir_add_rewrites () å trekke alt stort innhold fra disse lengre nettadressene og omdirigere dem i backend. Legg merke til at vi bruker denne andre mystiske egenskapen til $ wp_rewrite-klassen som heter non_wp_rules. I følge doksene er disse reglene som ikke henvender seg til WPs index.php-fil og vil bli håndtert på serverens slutt.

    Det som er så bra med disse ikke-WP-reglene er at du fortsatt kan administrere den eldre nettadressemetoden ganske enkelt. Det er ingenting som hindrer deg fra å koble til:

    /wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg.

    Men det ser mye bedre ut om du kan referere:

    /images/wordpress-urls-rewrite/logo.jpg i stedet.

    Nyttige verktøy og pluginprogrammer

    Det er bare noen få verktøy du kan bruke hvis du sitter fast med å kode dine egne fine nettadresser. Prosessen er veldig vanskelig å forstå, så ikke bli motløs hvis du sliter i et par uker. Jeg føler at innholdet blir enklere når du bruker mer tid på å praktisere.

    Men for å komme i gang, sjekk ut noen av disse nyttige omskrivningsverktøyene og pluginene. Du trenger sannsynligvis ikke alle, men det er flott å finne en så stor utviklerbase som arbeider rundt WP rewrites.

    Monkeyman Rewrite Analyzer

    Når du først hopper inn i rewriting-reglene, er dette plugin et must-ha. Det endrer ikke noen av reglene for nettstedet ditt - det tillater deg bare å teste koden og se hvilke omdirigeringer som går til hvilke sider. Det vil til og med fungere for å teste tilpassede spørringsvariabler for alle egendefinerte innleggstyper.

    AskApache RewriteRules Viewer

    Dette ligner på pluginet ovenfor, bortsett fra at det ikke lar deg teste dine egne regler. I stedet vil denne plugin vise alle nettstedets standard WP-regler og hvor de viderekobles til. Dette vil inkludere alle de store egenskapene til $ wp_rewrite for eksempel dine permalink-innstillinger og side / kategori / tagger baser.

    WP htaccess Control

    Her har du et annet sett med regler for å gjøre nye omdirigeringer av siden. Pluggen har sitt eget admin panel hvor du kan redigere variabler som forfatterbasen din, sidebasene, og til og med legge til dine egne tilpassede .htaccess-regler.

    Denne metoden er forskjellig i forhold til å bygge din egen ved hjelp av wp_rewrite. Men det kan være lettere for teknikere som virkelig kjenner webservere og føler seg mer komfortable å skrive direkte inn i .htaccess.

    Omskriv Regel Tester

    Dette er faktisk ikke et WordPress-plugin, men er definitivt et nyttig verktøy for å fortsette filen. Du kan kopiere over omskrivningsregler og teste dem for ditt nettsted uten å redigere .htaccess-filen din. Dette er den perfekte metoden for å fjerne bugs ut av syntaxen din før du starter live på nettet.

    DW ReWrite

    DW Rewrite er en veldig enkel plugin som skaper 3 unike, fine nettadresser umiddelbart etter installasjonen. Som standard vil det endre admin, login og registreringslenkene til / admin, /Logg Inn, og /registrere henholdsvis.

    Dette kan være bra hvis du trenger en rask løsning for en blogg som inneholder flere forfattere. Det vil spesielt gjemme den pinlig innviklede WordPress-registreringslenken (/wp-login.php?action=register).

    Konklusjon

    Jeg håper denne opplæringen kan gi noen eksempler for å få deg til å tenke på WordPress rewrites. CMS er veldig populært, og utviklere produserer fortsatt nye funksjoner hver dag. Tilpasse dine egne nettadresser er et så stort stykke brukerbasert funksjonalitet. Det gir nettstedet ditt egen unik tilstedeværelse og merkevarebygging sammenlignet med standardalternativene.

    Hvis du har problemer med omskrivningsregler, bør det aldri være vanskelig å forkaste skaden. Ved å slette funksjonskoden og spyle dine .htaccess-regler ser det ut til at ingenting har endret seg. Husk å sjekke ut noen andre lignende artikler du kan finne på emnet. Og hvis du har noen spørsmål eller kommentarer, kan du dele dem med oss ​​i det etterfølgende diskusjonsområdet.