URL-ide ümberkirjutamine WordPressi nõuetes ja pluginates
WordPressi uusimad värskendused on võimaldanud arendajatel oma isiklikku veebisaiti väga kiiresti kohandada. Teema teemasid on lihtne värskendada, külgribal asendada vidinaid ja kirjutada isegi oma kohandatud PHP koodifunktsioone. Laius on tohutu - ja üks populaarsuse valdkond on üsna URL-ide ümberkirjutamine.
WordPressi vaikimisi ümberkirjutamise süsteemi uuendamiseks on mõned meetodid. Selles juhendis jagan mõningaid näiteid ja näitan, kui lihtne protsess on. Teil on vaja mõningast arusaamist PHP-st, et jälgida, mis koodis toimub, kuid see on nii lihtne kopeerida ja kleepida oma mallile, praktiliselt pole tööd tehtud.
WP_Rewrite mõistmine
Kui sa oled üldse tuttav Apache serverite mod_rewrite'iga, siis saate selle WordPressi ümberkirjutamise süntaksilt. Nende süsteem on ikka veel üles ehitatud .htaccess fail, kuid kõik reeglid on PHP-s kodeeritud. See muudab protsessi natuke lihtsamaks, kuna meil on rohkem oma URL-ide kirjutamise üle.
Soovitan $ wp_rewrite klassi lehekülje koorimist, kuna sellel on tonni infot. Meil on isegi väikesed näited, mis viitavad sellele, et kõik oleks kergemini mõistetav. Enamik koodi saab kirjutada otse teie teema funktsioonid.php faili. Alustame vaadates WordPressiga juba kaasatud vaikimisi ümberkirjutamist.
$ Wp_rewrite-> reeglite sisu
Deklareerides $ wp_rewrite
klass kui globaalne, meil on juurdepääs kõikidele sisemistele andmetele. Oma reeglite lisamisel lisatakse need nimega massiivile $ wp_rewrite-> reeglid
. Oluline on see muutuja meelde jätta, kuna peate tõenäoliselt andmeid arendamise ajal mitu korda viite.
eeskirjad); ?>
Lisasin selle teema ploki oma teema juurde page.php faili. See väljastab suure hulga andmeid, mis näevad välja nagu suur segadus. Aga kui sa Vaata allikat teie lehel on tegelikult lihtne näha, millised ümberkirjutamise reeglid on vastavuses failinimega. Näiteks vaatame kategooriate ümberkirjutamise reegleid:
[category /(.+?)/?$] => index.php? category_name = $ sobib [1]
Vasakul pool sulgudes on meie Apache RewriteRule, mida otsida. Alustades sektsioonist / kategooria / järgneb suvaline tähemärk. Kui see sobitatakse, teab server seda index.php? category_name =
asendades muutuja lõppu.
Kohandatud Permalinkide seadistamine
Ainuüksi $ wp_rewrite klassis on nii palju sisu. Võib viidata paljudele teistele omadustele, näiteks $ wp_rewrite-> category_base
või $ wp_rewrite-> author_base
nende lehtede URL-i struktuuride tõmbamiseks. Kuid peale WP vaikesätete tõmbamise saame ehitada ka oma reeglid.
Autori baasi taastamine
Kui sisestate lehe Permalinks seadete lehele, on teil võimalik kategooria ja märgiste alused lähtestada. Kuid autori baasi lähtestamise võimalus on imelik.
Aga me saame kasutada add_rewrite_rule ()
WordPress 'koodist, et integreerida mõned uued seaded. Sel juhul olen asendanud / autor / koos / kirjanik / kuid sa võiksid kasutada mis tahes alust. Lisaks olen kopeerinud mõned muud redigeerimised autori lehekülgedele ja RSS-voogudele. Selle koodiploki saate lisada oma teema funktsioonidesse.php.
add_action ('init', 'add_author_rules'); funktsioon add_author_rules () add_rewrite_rule ("writer / ([^ /] +) /?", "index.php? autor_name = $ sobib [1]", "top"); add_rewrite_rule ("kirjanik / ([^ /] +) / leht /? ([0-9] 1,) /?", "index.php? autor_name = $ sobib [1] & paged = $ vastet [2] "," top "); add_rewrite_rule ("kirjanik / ([^ /] +) / (sööda | rdf | rss | rss2 | aatom) /?", "index.php? autor_name = $ sobib [1] & feed = $ vasted [2]", " top "); add_rewrite_rule ("kirjanik / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? autor_name = $ sobib [1] & feed = $ vasted [2]" , "top");
Seda funktsiooni saab kasutada isegi ilma $ wp_rewrite muutujat kasutamata. Mõned arendajad soovivad seda meetodit, sest see on lihtsam kui klassi omadustega kodeerimine. Kuid olen ka märganud, et see meetod ei ole mõne WordPressi installatsiooni puhul alati usaldusväärne. Tegelikult on teine võimalus lisada need reeglid konksule pärast .htaccess-i loputamist (vt allpool).
Autori baas genereerimine_rewrite_rules
Selle meetodi kirjutamine nõuab taas globaalset $ wp_rewrite klassi. Siis olen seadistanud uue nimega muutuja $ new_rules
mis sisaldab assotsieeruvat andmekogumit. Minu allolev näide kood kirjutab lihtsalt üle autori põhilehele.
funktsioon create_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("kirjanik / ([^ /] +) /?" => "index.php? autor_nimi =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> reeglid = $ new_rules + $ wp_rewrite-> reeglid;
Aga kui me tahame lisada mitu lehekülge ja RSS-vooge, siis saame massiivi suurendada. Teil on võimalus luua PHP funktsioon, et lükata assotsiatiivseid massiivi andmeid, mis võivad olla natuke liiga keerulised. Samuti võime andmeplokid jagada komadega, käitudes massiivis eraldi üksustena. Vaata minu uuendatud koodi uuesti funktsioone.
funktsioon create_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("kirjanik / ([^ /] +) /?" => "index.php? autor_nimi =". $ wp_rewrite-> preg_index (1), "kirjanik / ([^ /] +) / leht /? ([0-9] 1,) /? "=>" Index.php? Author_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2), "kirjanik / ([^ /] +) / (sööda | rdf | rss | rss2 | aat) /?" => "index.php? autor_name =". $ wp_rewrite-> preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2), "kirjanik / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?" => "index.php? autor_name =". $ wp_rewrite- > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> reeglid = $ new_rules + $ wp_rewrite-> reeglid;
Pea meeles, et kumbki neist meetoditest ei toimi enne, kui olete algsed ümberkirjutamise reeglid loputanud. Te peate seda tegema alati, kui teete neid funktsioone, kuid pärast seda jäävad uued reeglid lõputult kinni.
Ümberkirjutamise reeglite loputamine
Kui teete URL-i ümberkirjutamise koodi värskenduse, ei rakendata muudatusi kohe. Te peate .htaccess'i ümberkirjutamise reeglid loputama, nii et teie uus kood lisatakse. Siiski on see iga lehekülje init korral äärmiselt raiskav, kuna see kirjutab andmebaasi ja värskendab .htaccess-faili.
Parem meetod on pääseda oma permalinkide lehele administraatori paneelil ja salvestada muudatused uuesti. See nõuab alati flush_rewrite_rules-i, nii et sa ei pea kunagi muretsema kasutajate pärast, kellel on laadimisprobleeme. Ja see võtab ainult ühe korra, et leht uuesti salvestada ja teie süsteemi kõiki reegleid uuendada. Aga kui see ei tööta, võite proovida helistada $ wp_rewrite-> flush_rules ();
Kasutades mitte-WP reegleid
Sisse $ wp_rewrite
klassil on juurdepääs kümnetele omadustele. Üks olulisemaid võimalusi on $ wp_rewrite-> non_wp_rules
mis kogub hulga redirectse, mis ei tabanud index.php faili.
Seda kasutatakse tegelikult kõige sagedamini WordPressi plugina arendamisel. Saate vajutada kindlat kohandatud URL-i tüüpi (nt / kalender / juuni 2012 /
) oma veebisaidi taustaprogrammi (/wp-content/plugins/calendarplug/myscript.php
). Kuid muidugi on selle assotsieerunud kohandatud ümberkirjutamise reeglite, välja arvatud pluginad, edasised kasutused. Mul on allpool toodud kontekstis suurepärane näide.
Teemafailide peitmine
See on üldine soovitus, mida ma tihti näen WordPressi vestluskaartidel. Ideaalis tahaksime viidata mõnedele failidele / wp-content / themes / mytheme /
kausta elegantsema URL-iga. Pange tähele, et see nõuab kataloogistruktuuri muutmiseks teist WordPressi ümberkirjutamist.
WordPressi sisemine ümberkirjutamise süsteem surub alati sisu ühe marsruudifaili poole. Vaikimisi kasutame indeksiga index.php koos võimalike täiendavate päringute stringide andmetega. Kuid meie standardse malli kataloogi peitmiseks (/ wp-content / themes / mytheme / *
) peame kuvama palju erinevaid faile.
add_action ('create_rewrite_rules', 'themes_dir_add_rewrites'); funktsioon themes_dir_add_rewrites () $ theme_name = next (plahvatada ('/ themes /', get_stylesheet_directory ())); globaalne $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-content / themes /'. $ theme_name. '/ css / $ 1', 'js /(.*)' => 'wp-content / themes / '. $ theme_name.' / js / $ 1 ',' images / wordpress-urls-rewrite /(.*) '=>' wp-content / themes / '. $ theme_name.' / images / wordpress-urls-rewrite / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;
Olen kirjutanud uue funktsiooni themes_dir_add_rewrites ()
pikemate URL-ide peamine sisu tõmmata ja suunata need taustaprogrammi. Pange tähele, et me kasutame seda nime saanud $ wp_rewrite klassi teist salapärast omadust non_wp_rules
. Dokumentide kohaselt on need reeglid, mis ei suunata WP indeksfaili failile ja mida käsitletakse serveri lõpus.
Mis on nende mitte-WP reeglite puhul nii suur, on see, et ikka saate vanemat URL-i meetodit siiski üsna kergesti hallata. Miski ei lase sul linkida:
/wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg
.
Aga see näib olevat palju kenamaks, kui saate viidata:
/images/wordpress-urls-rewrite/logo.jpg
selle asemel.
Kasulikud tööriistad ja pluginad
On vaid mõned tööriistad, mida saate kasutada, kui olete kinni oma päris URL-ide kodeerimisest. Protsessi on väga raske aru saada, nii et ärge heiduge, kui te paar nädalat võitlete. Ma tunnen, et sisu muutub lihtsamaks, kui te rohkem aega harjutate.
Kuid selleks, et alustada, vaadake mõnda neist käepärastest tööriistadest ja pluginatest. Sa ilmselt ei vaja neid kõiki, kuid see on tore leida nii suur arendaja baas, mis töötab WP ümberkirjutamise ümber.
Monkeyman Rewrite Analyzer
Kui hüpata esimest korda ümberkirjutamise reeglitesse, on see plugin kohustuslik. See ei muuda tegelikult ühtegi teie veebisaidi reeglit - see võimaldab lihtsalt testida koodi ja vaadata, millised ümbersuunamised lähevad millistele lehekülgedele. See töötab isegi kohandatud päringute muutujate testimiseks mis tahes kohandatud postituste tüüpide jaoks.
AskApache RewriteRules Viewer
See on sarnane ülaltoodud pluginaga, välja arvatud see, et see ei lase teil oma reegleid testida. Selle asemel kuvatakse see plugin kõik teie veebisaidi vaikimisi WP reeglid ja kuhu nad suunatakse. See hõlmab kõiki peamisi omadusi $ wp_rewrite
näiteks permalinki seaded ja lehekülje / kategooria / sildi alused.
WP htaccess Control
Siin on teistsugused reeglid uute lehtede ümbersuunamiseks. Lisandmoodulil on oma administraatoripaneel, kus saab muuta selliseid muutujaid nagu autori alus, lehekülje alused ja isegi lisada oma kohandatud .htaccess-reeglid.
See meetod on erinev võrreldes omaenda ehitamisega wp_rewrite abil. Kuid see võib olla lihtsam tehnikutele, kes tõesti tunnevad veebiservereid ja tunnevad end mugavalt .htaccess'isse kirjutamisel.
Reegli testimise ümberkirjutamine
See ei ole tegelikult WordPressi plugin, kuid kindlasti on see üks käepärane vahend failide hoidmiseks. Saate kopeerida üle ümberkirjutamise reeglite ja testida neid oma veebisaidile ilma .htaccess-faili redigeerimata. See on ideaalne meetod vigade eemaldamiseks süntaksist enne veebis elamise alustamist.
DW ReWrite
DW ümberkirjutamine on väga lihtne plugin, mis loob kohe pärast paigaldamist 3 unikaalset päris URL-i. Vaikimisi muudab see administraatori, sisselogimise ja registreerimise lingid / admin
, /Logi sisse
, ja / register
vastavalt.
See võib olla tore, kui vajate kiireid lahendusi blogi jaoks, millel on mitu autorit. See varjab spetsiaalselt piinlikult keerdunud WordPressi registreerimise lingi (/wp-login.php?action=register
).
Järeldus
Loodan, et see õpetus võib pakkuda mõningaid näiteid, et mõelda WordPressi ümberkirjutamisele. CMS on väga populaarne ja arendajad toodavad ikka veel uusi funktsioone. Oma URL-ide kohandamine on nii suur kasutajapõhine funktsioon. See annab teie veebisaidile oma unikaalse kohaloleku ja brändi, võrreldes vaikevariandidega.
Kui teil on probleeme ümberkirjutamise reeglitega, ei tohiks kahjustusi kunagi tühistada. Funktsioonikoodi lihtsalt kustutades ja oma .htaccess-reeglite loputamisel tundub, et midagi ei ole muutunud. Kontrollige kindlasti ka teisi sarnaseid artikleid, mida te leiate teemast. Ja kui teil on küsimusi või kommentaare, saate neid jagada arutelu valdkonnas.