Prepisovanie adries URL v tipoch a doplnkoch WordPress
Najnovšie aktualizácie programu WordPress umožnili vývojárom veľmi rýchlo prispôsobiť svoje webové stránky. Je jednoduché aktualizovať oblasti vášho motívu, nahradiť miniaplikácie v bočnom paneli a napísať aj vlastné vlastné funkcie kódu PHP. Rozloha je obrovská - a jedna oblasť popularity prepisuje pekné URL permalinks.
Existuje niekoľko metód, ktoré môžete použiť na aktualizáciu predvoleného prepisovacieho systému WordPress. V tejto príručke budem zdieľať niekoľko príkladov a ukáže, aký jednoduchý proces môže byť. Budete potrebovať nejaké pochopenie PHP, aby ste sa riadili tým, čo sa deje v kóde, ale je jednoduché kopírovať a vkladať do svojej vlastnej šablóny, prakticky neexistuje žiadna práca.
Pochopenie WP_Rewrite
Ak ste oboznámení s mod_rewrite na serveroch Apache, potom vyberiete syntax pre prepísanie WordPress. Ich systém je stále postavený na vrchole .htaccess súbor, ale všetky pravidlá sú kódované v PHP. To skutočne robí proces trochu jednoduchšie, pretože máme väčšiu kontrolu nad napísaním vlastných adries URL.
Odporúčam skimmerovať stránku triedy $ wp_rewrite, pretože má veľa informácií o tejto téme. Existujú aj malé príklady, na ktoré môžeme hovoriť, aby bolo všetko ľahšie pochopiteľné. Väčšinu kódu môžete napísať priamo do vášho témy functions.php súboru. Začnime tým, že sa pozrieme na predvolené prepísania už zahrnuté do programu WordPress.
Obsah $ wp_rewrite-> pravidiel
Vyhlásením $ wp_rewrite
triedy ako globálne máme prístup ku všetkým interným údajom. Keď pripojíte svoje vlastné pravidlá, pridá sa do poľa s menom $ Wp_rewrite-> Pravidlá
. Je dôležité pamätať si na túto premennú, pretože budete pravdepodobne musieť počas vývoja často uviesť údaje.
pravidlá); ?>
Pridal som tento blok kódu do mojej témy page.php súboru. Výsledkom bude veľké množstvo dát, ktoré vyzerajú ako veľký neporiadok. Ale ak vy Zdroj pohladu na vašej stránke je skutočne ľahké zistiť, ktoré pravidlá prepisovania sa zhodujú s názvom súboru. Pozrime sa napríklad na pravidlá pre prepisy kategórií:
[category /(.+?)/?$] => index.php? category_name = $ zhody [1]
Bit na ľavej strane v zátvorkách je náš Apache RewriteRule, ktorý hľadáte. Počnúc oddielom / Kategórie / nasleduje reťazec znakov. Ak je toto nastavenie porovnané, server vie, že má odkazovať index.php? category_name =
pri nahradení premennej na konci.
Nastavenie vlastných odkazov
V triede $ wp_rewrite je toľko obsahu. Mnoho odkazuje na iné vlastnosti, ako napr $ Wp_rewrite-> category_base
alebo $ Wp_rewrite-> author_base
na vytiahnutie predvolených štruktúr adries URL pre tieto stránky. Okrem vytiahnutia predvolených nastavení WP môžeme tiež vytvoriť vlastné pravidlá.
Prebudovanie databázy autorov
Keď vstúpite na stránku s nastaveniami služby Postih máte možnosť vynulovať základy kategórií a značiek. Možnosť obnoviť autorskú základňu však čudne chýba.
Ale môžeme použiť príkaz add_rewrite_rule ()
z WordPress 'codex na integráciu niektorých nových nastavení. V tomto prípade som nahradila / Autor / s / Spisovateľ / ale môžete použiť akúkoľvek základňu, ktorá sa vám páči. Navyše som skopíroval niektoré ďalšie presmerovania pre stránky autorov a RSS kanály. Tento blok kódu môžete pridať do súboru functions.php vášho témy.
add_action ('init', 'add_author_rules'); funkcia add_author_rules () add_rewrite_rule ("spisovateľ / ([^ /] +) /?", "index.php? author_name = $ zhody [1]", "hore"); add_rewrite_rule ("spisovateľ / ([^ /] +) / page /? (0-9) 1,) /?", "index.php? author_name = $ matches [1] & paged = "," hore "); add_rewrite_rule ("spisovateľ / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ matches [1] & feed = top "); add_rewrite_rule ("spisovateľ / ([^ /] +) / feed / (zdroj | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ matches [1] & feed = $ matches [2]" , "hore");
Táto funkcia je dostupná aj bez použitia premennej $ wp_rewrite. Niektorí vývojári túto metódu páčia, pretože je to jednoduchšie ako tvrdé kódovanie s vlastnosťami triedy. Avšak som si tiež všimol, že táto metóda nie je vždy spoľahlivá pre niektoré inštalácie WordPress. Existuje vlastne druhá možnosť pridať tieto pravidlá na hák po vyprázdnení .htaccess (pozri nižšie).
Základňa autorov pomocou generovania_jméno_reťazcov
Pri písaní tejto metódy budeme opäť potrebovať globálnu triedu $ wp_rewrite. Potom som nastavil novú menovanú premennú $ new_rules
ktorý obsahuje asociatívne pole údajov. Môj príkladový kód uvedený nižšie iba prepisuje sekciu základnej autorskej stránky.
funkcia generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("spisovateľ / ([^ /] +) /?" => "index.php? autor_name =". wp_rewrite-> preg_index (1); $ wp_rewrite-> pravidlá = $ new_rules + $ wp_rewrite-> pravidlá;
Ak však chceme zahrnúť viacero stránok a RSS kanály, môžeme rozšíriť pole. Máte možnosť vytvoriť funkciu PHP na posúvanie údajov asociatívnych polí, ktoré môžu byť príliš zložité. Mohli by sme tiež rozdeliť bloky údajov čiarkami, ktoré sa chovajú ako samostatné entity v poli. Pozrite si môj aktualizovaný kód znova napísaný v súbore témy functions.php.
funkcia generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("spisovateľ / ([^ /] +) /?" => "index.php? author_name =" .wp_rewrite-> preg_index (1) /? ([0-9] 1,) /? "=>" Index.php? Author_name = ". Wp_rewrite-> preg_index (1) "spisovateľ / ([[^ /] +) / (zdroj | rdf | rss | rss2 | atom) /?" => "index.php? autor_name =". $ wp_rewrite-> preg_index (2), "spisovateľ / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name = > preg_index (1). "& feed =" .wp_rewrite-> preg_index (2)); $ wp_rewrite-> pravidlá = $ new_rules + $ wp_rewrite-> pravidlá;
Len si pamätajte, že ani jedna z týchto metód nebude fungovať až po tom, čo ste zrušili pôvodné pravidlá prepisovania. Budete to musieť urobiť kedykoľvek budete robiť zmeny v týchto funkciách, ale potom sa vaše nové pravidlá držia na neurčito.
Vyprázdnenie pravidiel prepísania
Kedykoľvek vykonáte aktualizáciu kódu na opätovné zadanie adresy URL, zmeny sa nepoužijú okamžite. Musíte vyprázdniť pravidlá prepisovania .htaccess tak, aby bol váš nový kód pridaný. Avšak vykonávanie tohto úkonu na každej stránke init je veľmi zbytočné, pretože zapisuje do databázy a obnovuje hardvér súbor .htaccess.
Lepšia metóda je prístup na stránku permalinks v administrátorskom paneli a opätovné uloženie zmien. To vždy vyvoláva flush_rewrite_rules, aby ste sa nikdy nemuseli obávať používateľov na fronte, ktorí majú problémy s načítaním. Na obnovenie stránky a aktualizáciu všetkých pravidiel vo vašom systéme trvá iba raz. Ak to však nefunguje, môžete skúsiť zavolať $ Wp_rewrite-> flush_rules ();
Používanie pravidiel, ktoré neplatí pre WP
Vnútri $ wp_rewrite
triede máme prístup k desiatkam nehnuteľností. Jednou z významnejších možností je $ Wp_rewrite-> non_wp_rules
ktorý zhromažďuje množinu presmerovaní, ktoré nenasahujú do súboru index.php.
Toto sa v skutočnosti používa najčastejšie vo vývoji modulov WordPress. Môžete stlačiť konkrétny vlastný typ adresy URL (napr / Kalendár / jún 2012 /
) do backend vašej webovej stránky (/wp-content/plugins/calendarplug/myscript.php
). Samozrejme, existujú ďalšie použitia pre toto asociatívne pole vlastných pravidiel prepisovania, ktoré nie sú ako doplnky. V nasledujúcom kontexte som poskytol vynikajúci príklad.
Maskovanie súborov tému
Toto je bežný návrh, ktorý často vidím na diskusných fórach programu WordPress. V ideálnom prípade by sme chceli odkazovať na niektoré súbory vo vnútri / Wp-content / themes / Myth /
priečinok s elegantnejšou adresou URL. Všimnite si, že to bude vyžadovať inú sadu revízií WordPress na zmenu štruktúry adresárov.
Vnútorný prepisovací systém WordPress vždy tlačí obsah do jedného smerovacieho súboru. V predvolenom prípade používame index.php spolu s ďalšími dátovými reťazcami dotazu. Ale pre skrytie nášho štandardného adresára šablón (/ Wp-content / themes / Myth / *
), budeme musieť zobraziť veľa rôznych súborov.
add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); funkcia themes_dir_add_rewrites () $ theme_name = ďalšia (explode ('/ themes /', get_stylesheet_directory ())); globálne $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-content / themes /'. '/ 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;
Napísal som novú funkciu themes_dir_add_rewrites ()
vytiahnuť všetok hlavný obsah z týchto dlhších adries URL a presmerovať ich do backendu. Všimnite si, že používame túto inú záhadnú vlastnosť triedy $ wp_rewrite s názvom non_wp_rules
. Podľa dokumentov sú to pravidlá, ktoré nesmerujú k indexovému súboru WP a budú spracované na konci servera.
Čo je také dobré pre tieto pravidlá, ktoré nepatria medzi WP, je, že stále môžete spravovať staršiu metódu URL pomerne ľahko. Nie je nič, čo by vás nebránilo v prepojení na:
/wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg
.
Ale vyzerá to celkom oveľa hezky, ak môžete spomenúť:
/images/wordpress-urls-rewrite/logo.jpg
namiesto.
Užitočné nástroje a doplnky
Existuje len niekoľko nástrojov, ktoré môžete využiť, ak ste prilepení kódovaním vlastných pekných adries URL. Tento proces je veľmi ťažké pochopiť, takže sa nemusíte odradiť, ak bojujete niekoľko týždňov. Mám pocit, že obsah bude ľahší, keď budete tráviť viac času cvičením.
Ale začať skúmať niektoré z týchto šikovných nástrojov na prepisovanie a pluginy. Pravdepodobne nebudete potrebovať všetky z nich, ale je skvelé nájsť takú veľkú základňu pre vývojárov, ktorá pracuje okolo prepísaní WP.
Monkeyman Rewrite Analyzer
Pri prvom skoku do pravidiel prepisovania je tento doplnok nutnosťou. V skutočnosti sa nezmení žiadna z pravidiel pre vaše webové stránky - umožňuje vám len otestovať kód a zistiť, ktoré presmerovania idú na ktoré stránky. Dokonca bude pracovať aj na testovanie vlastných premenných dotazov pre všetky typy príspevkov.
AskApache RewriteRules Viewer
Toto je podobné vyššie uvedenému doplnku, s výnimkou, že vám neumožňuje otestovať vlastné pravidlá. Namiesto tohto pluginu sa budú zobrazovať všetky predvolené pravidlá WP vašej webovej lokality a kam sa presmerujú. To bude zahŕňať všetky hlavné vlastnosti $ wp_rewrite
ako sú nastavenia permalink a stránky / kategória / značky.
WP htaccess Control
Tu máte iný súbor pravidiel pre nové presmerovania stránok. Plugin má vlastný administrátorský panel, kde môžete upravovať premenné, ako je napríklad autorská základňa, stránky stránok a dokonca pridať svoje vlastné pravidlá .htaccess.
Táto metóda je iná v porovnaní s vytváraním vlastných súborov pomocou wp_rewrite. Avšak môže to byť jednoduchšie pre techie, ktorí skutočne poznajú webové servery a cítia sa pohodlnejšie písať priamo do .htaccess.
Prepísať tester pravidiel
To v skutočnosti nie je plugin pre WordPress, ale určite je to jeden praktický nástroj, ktorý môžete uchovávať. Môžete skopírovať pravidlá prepisovania a otestovať ich na svojich webových stránkach bez toho, aby ste museli upravovať súbor .htaccess. Ide o dokonalú metódu na odstránenie chýb z vašej syntaxe pred spustením naživo na webe.
DW ReWrite
DW Prepis je veľmi jednoduchý plugin, ktorý bezprostredne po inštalácii vytvorí 3 unikátne pekné adresy URL. V predvolenom nastavení sa zmenia odkazy admin, prihlásenie a registrácia / admin
, /Prihlásiť sa
, a /Registrovať
príslušne.
To môže byť skvelé, ak potrebujete rýchlu opravu pre blog s viacerými autormi. Bude sa konkrétne skrývať trapné spletitý WordPress registračný odkaz (/wp-login.php?action=register
).
záver
Dúfam, že tento tutoriál môže poskytnúť niekoľko príkladov, ktoré vám pomôžu premýšľať o revíziách programu WordPress. CMS je veľmi populárny a vývojári stále produkujú nové funkcie každý deň. Prispôsobenie vlastných adries URL je taký veľký kus užívateľských funkcií. Poskytuje vašim webovým stránkam vlastnú jedinečnú prítomnosť a značku v porovnaní s predvolenými možnosťami.
Ak máte problémy s pravidlami prepisovania, nikdy by nebolo ťažké vrátiť späť poškodenie. Jednoduchým odstránením kódu funkcie a vyprázdnením pravidiel .htaccess sa zdá, že sa nič nezmenilo. Nezabudnite sa pozrieť na niektoré ďalšie podobné články, ktoré nájdete na tému. A ak máte akékoľvek otázky alebo pripomienky, môžete sa s nimi zdieľať v diskusnej oblasti.