Početna » WordPress » Prepisivanje URL-ova u WordPress savjete i dodatke

    Prepisivanje URL-ova u WordPress savjete i dodatke

    Najnovija ažuriranja WordPressa omogućila su programerima da vrlo brzo prilagode svoju osobnu web-lokaciju. Jednostavno je ažurirati područja svoje teme, zamijeniti widgete u bočnoj traci, pa čak i napisati vlastite prilagođene funkcije PHP koda. Prostor je ogroman - i jedno područje popularnosti prepisuje prilično URL permalinksa.

    Postoji nekoliko metoda koje možete koristiti za ažuriranje zadanog WordPress sustava za prepisivanje. U ovom tutorialu podijelit ću nekoliko primjera i pokazati kako jednostavan proces može biti. Trebat ćete razumijevanje PHP-a da biste pratili što se događa u kodu, ali je tako lako kopirati i zalijepiti u vlastiti predložak, praktički nema posla.

    Razumijevanje WP_Rewrite

    Ako ste uopće upoznati s mod_rewrite na Apache poslužiteljima onda ćete pokupiti sintaksu WordPress rewrite. Njihov sustav još je izgrađen na vrhu .htaccess ali sva pravila su kodirana u PHP-u. To zapravo čini proces malo lakšim jer imamo više kontrole nad pisanjem vlastitih URL-ova.

    Preporučujem skimming $ wp_rewrite stranicu klase kao što je tona informacija na temu. Postoje čak i mali primjeri koje možemo uputiti kako bi sve bilo lakše razumjeti. Većina koda može biti napisana izravno u vašu temu functions.php datoteka. Počnimo gledajući zadane prepravke koje su već uključene u WordPress.

    Sadržaj pravila $ wp_rewrite->

    Objavljivanjem $ wp_rewrite klasa kao globalna imamo pristup svim internim podacima. Kada dodajete vlastita pravila, oni se dodaju u polje s imenom $ Wp_rewrite-> Pravila. Važno je zapamtiti ovu varijablu budući da ćete vjerojatno trebati više puta upoznati podatke u razvoju.

    Pravila); ?>

    Dodao sam ovaj blok koda u svoju temu page.php datoteka. Izlazit će veliki niz podataka koji izgleda kao veliki nered. Ali ako vi Prikaži izvor na vašoj je stranici vrlo lako vidjeti koja su pravila za prepisivanje podudarna s kojim nazivom datoteke. Na primjer, pogledajmo pravila za prepisivanje kategorija:

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

    Bit na lijevoj strani u zagradama je naš Apache RewriteRule tražiti. Počevši od odjeljka /kategorija/ slijedi bilo koji niz znakova. Ako se to podudara, poslužitelj zna referencirati index.php? category_name = zamjenjujući varijablu na kraju.

    Postavljanje prilagođenih dozvola

    Toliko je sadržaja potrebno prenijeti samo u klasi $ wp_rewrite. Mnoga se druga svojstva mogu referencirati, kao što je $ Wp_rewrite-> category_base ili $ Wp_rewrite-> author_base za povlačenje zadanih struktura URL-ova za te stranice. No, osim povlačenja WP-ovih zadanih postavki, možemo izgraditi i vlastita pravila.

    Obnova baze autora

    Kada uđete na stranicu s postavkama dopuštenja, imate opciju poništavanja baza kategorija i oznaka. Međutim, opcija za poništavanje baze autora neobično nedostaje.

    Ali možemo iskoristiti add_rewrite_rule () iz WordPress 'codexa kako bi integrirali neke nove postavke. U ovom slučaju zamijenio sam /Autor/ s /pisac/ ali možete koristiti bilo koju bazu koju želite. Osim toga, kopirao sam neke druge preusmjeravanja za stranice autora i RSS feedove. Ovaj blok koda možete dodati u datoteku functions.php.

    add_action ('init', 'add_author_rules'); funkcija add_author_rules () add_rewrite_rule ("pisac / ([^ /] +) /?", "index.php? author_name = $ odgovara [1]", "vrhu"); add_rewrite_rule ("writer / ([^ /] +) / page /? ([0-9] 1,) /?", "index.php? author_name = $ odgovara [1] & paged = $ odgovara [2] "," vrh "); add_rewrite_rule ("writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ odgovara [1] & feed = $ odgovara [2]", " vrh"); add_rewrite_rule ("writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ odgovara [1] & feed = $ odgovara [2]" , "vrh");  

    Ovoj funkciji se može pristupiti čak i bez korištenja varijable $ wp_rewrite. Neki programeri vole ovu metodu jer je jednostavnija od tvrdog kodiranja s svojstvima klase. Međutim, primijetio sam da ova metoda nije uvijek pouzdana za neke WordPress instalacije. Zapravo postoji i druga mogućnost dodavanja ovih pravila na kuku nakon ispiranja .htaccess (vidi dolje).

    Autor baze pomoću generate_rewrite_rules

    Pišući za ovu metodu, opet ćemo trebati globalnu klasu $ wp_rewrite. Zatim sam postavio novu varijablu pod nazivom $ new_rules koja sadrži asocijativni niz podataka. Moj primjer ispod teksta samo prepisuje za osnovni odjeljak stranice autora.

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

    Ali ako želimo uključiti više stranica i RSS feedove, možemo povećati broj. Imate mogućnost stvaranja PHP funkcije za guranje podataka o asocijativnom nizu koji su možda previše složeni. Također smo mogli podijeliti blokove podataka zarezima, ponašajući se kao odvojeni entiteti u nizu. Provjerite ponovno ažurirani kod u datoteci functions.php.

    funkcija generate_author_rewrite_rules () globalni $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1), "writer / ([^ /] +) / stranica /? ([0-9] 1,) /? "=>" Index.php? Author_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2), "writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2), "writer / ([^ /] +) / 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-> pravila;  

    Samo zapamtite da niti jedna od ovih metoda neće raditi sve dok ne ispraznite izvorna pravila za prepisivanje. Morat ćete to učiniti svaki put kada napravite promjene u tim funkcijama, ali nakon toga će se vaša nova pravila zadržati na neodređeno vrijeme.

    Ispiranje pravila za pisanje

    Kad god izvršite ažuriranje koda za ponovno upisivanje URL-a, promjene se neće odmah primijeniti. Morate isprazniti pravila .htaccess rewrite tako da će vaš novi kôd biti dodan. Međutim, izvođenje ovog na svakoj stranici init je iznimno rasipno jer piše u bazu podataka i teško osvježava .htaccess datoteku.

    Bolji način je pristup stranici permalinka u admin panelu i ponovno spremanje promjena. To uvijek naziva flush_rewrite_rules tako da nikada ne morate brinuti o korisnicima na sučelju koji imaju problema s učitavanjem. I samo jednom treba ponovno spremiti stranicu i ažurirati sva pravila u vašem sustavu. Ali ako to ne uspije, možete pokušati nazvati $ Wp_rewrite-> flush_rules ();

    Korištenje ne-WP pravila

    Unutar $ wp_rewrite klase imamo pristup desetinama nekretnina. Jedna od značajnijih opcija je $ Wp_rewrite-> non_wp_rules koja prikuplja niz preusmjeravanja koja ne pogoduju datoteku index.php.

    To se zapravo najčešće koristi u razvoju WordPressovih dodataka. Možete gurnuti određeni prilagođeni tip URL-a (kao što je / Kalendar / lipanj 2012 /) u pozadinu vaše web-lokacije (/wp-content/plugins/calendarplug/myscript.php). No, naravno, tu su daljnje upotrebe za ovaj asocijativni niz prilagođenih pravila za pisanje koja nisu dodaci. Dao sam izvrstan primjer u kontekstu u nastavku.

    Maskiranje datoteka s temama

    Ovo je zajednički prijedlog koji često vidim na WordPress raspravama. U idealnom slučaju željeli bismo spomenuti neke datoteke unutar / Wp-sadržaja / teme / mytheme / mapu s elegantnijim URL-om. Primijetite da će to zahtijevati drugačiji skup WordPress prepisivanja kako bi se promijenila struktura direktorija.

    WordPress interni sustav prepisivanja uvijek gura sadržaj prema jednoj datoteci usmjeravanja. U zadanom slučaju koristimo index.php zajedno s dodatnim podacima o nizu upita. Ali za skrivanje standardnog predloška predloška (/ Wp-sadržaja / teme / mytheme / *) trebat ćemo prikazati mnogo različitih datoteka.

    add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); funkcija themes_dir_add_rewrites () $ theme_name = next (eksplodira ('/ themes /', get_stylesheet_directory ())); globalni $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-sadržaj / teme /'. $ theme_name. '/ css / $ 1', 'js /(.*)' => 'wp-sadržaj / teme / '. $ theme_name.' / js / $ 1 ',' images / wordpress-urls-rewrite /(.*) '=>' wp-sadržaj / teme / '. $ theme_name.' / images / wordpress-urls-rewrite / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;  

    Napisao sam novu funkciju themes_dir_add_rewrites () povući sve glavne sadržaje s tih duljih URL-ova i preusmjeriti ih u pozadinu. Primijetite da koristimo ovo drugo tajanstveno svojstvo klase $ wp_rewrite non_wp_rules. Prema dokumentima, to su pravila koja se ne odnose na WP-ovu datoteku index.php i obrađuju se na kraju poslužitelja..

    Ono što je toliko dobro u ovim pravilima koja nisu u WP-u je da još uvijek možete vrlo lako upravljati starijom metodom URL-a. Nema ničeg što vas sprečava u povezivanju s:

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

    Ali izgleda puno ljepše ako možete uputiti:

    /images/wordpress-urls-rewrite/logo.jpg umjesto.

    Korisni alati i dodaci

    Postoji samo nekoliko alata koje možete iskoristiti ako ste zapeli s kodiranjem vlastitih lijepih URL-ova. Proces je vrlo teško shvatiti, stoga nemojte se obeshrabriti ako se mučite par tjedana. Osjećam da će vam sadržaj biti lakši dok provodite više vremena.

    No, da biste započeli, provjerite neke od tih praktičnih alata za preradu i dodataka. Vjerojatno vam neće trebati sve, ali sjajno je pronaći tako veliku bazu razvojnih inženjera koja radi oko WP prepisivanja.

    Monkeyman Rewrite Analyzer

    Prilikom prvog skakanja u pravila za prepisivanje, ovaj dodatak je nužan. To zapravo ne mijenja niti jedno pravilo za vašu web stranicu - samo vam omogućuje da testirate kôd i vidite koje preusmjeravanja ići na koje stranice. Čak će raditi i za testiranje prilagođenih varijabli upita za sve prilagođene vrste postova.

    AskApache RewriteRules Viewer

    Ovo je slično gore navedenom dodatku, osim što vam ne omogućuje da testirate vlastita pravila. Umjesto toga, ovaj dodatak će prikazati sva zadana WP pravila vaše web-lokacije i na koje mjesto preusmjeriti. To će uključivati ​​sva glavna svojstva $ wp_rewrite kao što su postavke za permalink i baze / stranice / oznake.

    WP htaccess kontrola

    Ovdje imate drugačiji skup pravila za preusmjeravanje novih stranica. Dodatak ima vlastiti admin panel gdje možete uređivati ​​varijable kao što su baza autora, baze stranica, pa čak i dodati vlastita prilagođena pravila .htaccess.

    Ova metoda je drugačija u odnosu na izgradnju vlastitog pomoću wp_rewrite. Međutim to može biti lakše za techies koji stvarno znaju web poslužitelja i osjećati udobnije pisanje izravno u. Htaccess.

    Ispitivač pravila ponovnog pisanja

    To zapravo nije WordPress plugin, ali je definitivno jedan zgodan alat za čuvanje datoteke. Možete kopirati pravila za ponovno pisanje i testirati ih za svoju web-lokaciju bez ikakvog uređivanja .htaccess datoteke. Ovo je savršena metoda za uklanjanje bugova iz vaše sintakse prije pokretanja uživo na webu.

    DW Rewrite

    DW Rewrite je vrlo jednostavan plugin koji stvara 3 jedinstvena lijepa URL-a odmah nakon instalacije. Prema zadanim se postavkama mijenjaju veze za administraciju, prijavu i registraciju / admin, /prijaviti se, i /Registrirajte se odnosno.

    To može biti sjajno ako trebate brzo rješenje za blog koji sadrži više autora. Posebno će se sakriti neugodno zamršena WordPress veza za registraciju (/wp-login.php?action=register).

    Zaključak

    Nadam se da ovaj udžbenik može pružiti neke primjere kako biste mogli razmišljati o preradbi WordPressa. CMS je vrlo popularan i programeri još uvijek proizvode nove značajke svaki dan. Prilagođavanje vlastitih URL-ova tako je velik dio funkcionalnosti temeljene na korisniku. To daje vašoj web stranici vlastitu jedinstvenu prisutnost i branding u odnosu na zadane opcije.

    Ako imate problema s prepisivanjem pravila, nikada ne bi trebalo biti teško poništiti štetu. Jednostavnim brisanjem koda funkcije i ispuštanjem vaših .htaccess pravila čini se da se ništa nije promijenilo. Budite sigurni da provjerite neke druge slične članke koje možete pronaći na temu. Ako imate bilo kakvih pitanja ili komentara, možete ih podijeliti s nama u području za raspravu.