Pagina principala » WordPress » Rescrierea URL-urilor în Sfaturi și Plugin-uri WordPress

    Rescrierea URL-urilor în Sfaturi și Plugin-uri WordPress

    Cele mai recente actualizări ale WordPress au permis dezvoltatorilor să își personalizeze propriul site personal foarte repede. Este simplu să actualizați zonele din tema dvs., să înlocuiți widget-urile din bara laterală și chiar să vă scrieți propriile funcții de cod PHP personalizate. Amploarea este imensă - și o zonă de popularitate rescrie destul de multe permalinks.

    Există câteva metode pe care le puteți utiliza pentru a actualiza sistemul de rescriere implicit WordPress. În acest tutorial voi împărtăși câteva exemple și voi demonstra cât de simplu poate fi procesul. Veți avea nevoie de o înțelegere a PHP pentru a urma ceea ce se întâmplă în cod, dar este atât de ușor să copiați și să inserați în propriul dvs. șablon, practic nu este implicată nici o muncă.

    Înțelegerea WP_Rewrite

    Dacă sunteți cu toții familiarizați cu mod_rewrite pe serverele Apache, atunci veți prelua sintaxa de rescriere WordPress. Sistemul lor este încă construit pe partea superioară a unui .htaccess fișier, dar toate regulile sunt codificate în PHP. Acest lucru face de fapt un proces ușor mai ușor, deoarece avem mai mult control asupra scrisului propriilor URL-uri.

    Vă recomandăm să schimbați pagina de clasă $ wp_rewrite deoarece are multe informații despre subiect. Există chiar exemple mici pe care le putem face referire pentru a face totul mai ușor de înțeles. Majoritatea codului pot fi scrise direct în tema proprie functions.php fişier. Să începem prin examinarea rescrierilor implicite deja incluse în WordPress.

    Conținutul regulilor $ wp_rewrite->

    Prin declararea $ wp_rewrite clasa globală avem acces la toate datele interne. Când mergeți să adăugați propriile reguli, acestea sunt adăugate într-un tabel cu numele $ Wp_rewrite-> reguli. Este important să vă amintiți această variabilă, deoarece probabil că va trebui să faceți referire la date de mai multe ori în timpul dezvoltării.

    norme); ?>

    Am adăugat acest bloc de cod în tema mea page.php fişier. Acesta va scoate o gamă largă de date, care arată ca o mizerie mare. Dar daca tu Vizualizare sursă pe pagina dvs. este de fapt ușor să vedeți ce reguli de rescriere sunt potrivite cu numele fișierului. De exemplu, să examinăm regulile pentru rescrieri de categorii:

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

    Bitul din partea stângă în paranteze este Apache RewriteRule pe care să îl căutăm. Începând cu secțiunea /categorie/ urmat de orice șir de caractere. Dacă aceasta este potrivită atunci serverul știe să facă referință index.php? CATEGORY_NAME = în timp ce înlocuiește variabila la sfârșit.

    Configurarea Permalinks personalizate

    Există atât de mult conținut în clasa $ wp_rewrite. Multe alte proprietăți pot fi menționate, cum ar fi $ Wp_rewrite-> category_base sau $ Wp_rewrite-> author_base pentru a trage structurile URL implicite pentru aceste pagini. În afară de tragerea setărilor implicite ale WP, putem, de asemenea, să construim propriile reguli.

    Reconstruirea bazei de autor

    Când introduceți pagina de setări pentru Persoane, aveți opțiunea de a reseta categoriile și bazele etichetelor. Cu toate acestea, opțiunea de a reseta baza de autor este lipsește ciudat.

    Dar putem folosi add_rewrite_rule () de la codul WordPress pentru a integra unele setări noi. În acest caz, am înlocuit-o /autor/ cu /scriitor/ dar ai putea folosi orice bază doriți. În plus, am copiat unele dintre celelalte redirecționări pentru paginile de autor și fluxurile RSS. Puteți adăuga acest bloc de cod în fișierul functions.php al temei.

    add_action ('init', 'add_author_rules'); funcția add_author_rules () add_rewrite_rule ("scriitor / ([^ /] +) /?", "index.php? author_name = $ meciuri", "sus"); add_rewrite_rule ("scriitor / ([^ /] +) / page /? ([0-9] 1,) "," sus "); add_rewrite_rule ("scriitor / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /", "index.php? author_name = $ matches [1] top"); add_rewrite_rule ("scriitor / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ matches [1] & feed = $ matches [2]" , "sus");  

    Această funcție poate fi accesată chiar fără a utiliza variabila $ wp_rewrite. Unii dezvoltatori preferă această metodă deoarece este mai simplu decât hard-coding cu proprietăți de clasă. Cu toate acestea, am observat de asemenea că această metodă nu este întotdeauna de încredere pentru unele instalații WordPress. Există, de fapt, oa doua opțiune de a adăuga aceste reguli pe cârlig după spălarea fișierului .htaccess (vezi mai jos).

    Baza de autor folosind generic_rewrite_rules

    Scriind pentru această metodă vom avea din nou nevoie de clasa globală $ wp_rewrite. Am creat apoi o nouă variabilă numită $ new_rules care conține o matrice asociativă de date. Codul exemplului de mai jos doar rescrie pentru secțiunea de bază a autorului.

    funcția generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("scriitor / ([^ /] +) /?" => "index.php? autor_name =" .wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> reguli;  

    Dar dacă vrem să includem mai multe pagini și fluxuri RSS, putem să ne ocupăm de matrice. Aveți opțiunea de a crea o funcție PHP pentru a împinge datele matrice asociative, care pot fi prea complexe. De asemenea, am putea împărți blocurile de date prin virgule, care se comportă ca entități separate în matrice. Verificați codul meu actualizat din nou în fișierul tematic functions.php.

    funcția generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("scriitor / ([^ /] +) /?" => "index.php? autor_name =" .wp_rewrite-> preg_index (1) /? ([0-9] 1,) /? "=>" Index.php? Autor_name = ".wp_rewrite-> preg_index (1) "scriitor / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?" => "index.php? autor_name =" .wp_rewrite-> preg_index (1) "& feed =". $ wp_rewrite-> preg_index (2), "scriitor / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?" => "index.php? author_name = > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> reguli;  

    Amintiți-vă că niciuna dintre aceste metode nu va funcționa decât după ce ați eliminat regulile originale de rescriere. Va trebui să faceți acest lucru ori de câte ori faceți modificări acestor funcții, dar după aceea noile reguli se vor lipi pe termen nelimitat.

    Ștergerea regulilor de rescriere

    Ori de câte ori faceți o actualizare a codului de rescriere a adresei URL, modificările nu se aplică imediat. Trebuie să ștergeți regulile de rescriere .htaccess, astfel încât noul dvs. cod să fie adăugat. Cu toate acestea, efectuarea acestei operații pe fiecare pagină init este extrem de risipă pe măsură ce scrie în baza de date și reînnoiește fișierul .htaccess.

    O metodă mai bună este să accesați pagina permalinks din panoul de administrare și să salvați din nou modificările. Acest lucru numește întotdeauna un flush_rewrite_rules, astfel încât să nu trebuie să vă faceți griji cu privire la utilizatorii de pe frontend care se confruntă cu probleme de încărcare. Este nevoie doar de o singură dată pentru a salva ulterior pagina și actualiza toate regulile din sistem. Dar dacă acest lucru nu funcționează, puteți încerca să sunați $ Wp_rewrite-> flush_rules ();

    Utilizarea regulilor non-WP

    În interiorul $ wp_rewrite clasa avem acces la zeci de proprietati. Una dintre opțiunile mai semnificative este $ Wp_rewrite-> non_wp_rules care colectează o serie de redirecționări care nu ating fișierul index.php.

    Acest lucru este folosit de cele mai multe ori în dezvoltarea plugin-ului WordPress. Puteți impinge un anumit tip de URL personalizat (cum ar fi / Calendar / iunie-2012 /) în backend-ul site-ului (/wp-content/plugins/calendarplug/myscript.php). Dar, desigur, există alte utilizări pentru această serie asociativă de reguli personalizate de rescriere, altele decât pluginurile. Am oferit un exemplu excelent în contextul de mai jos.

    Mascați fișierele tematice

    Aceasta este o sugestie obișnuită pe care o văd frecvent pe forumurile de discuții WordPress. În mod ideal, am dori să facem referire la unele fișiere din interiorul lui / Wp-content / teme / mytheme / dosar cu o adresă URL mai elegantă. Observați că acest lucru va necesita un set diferit de rescrieri WordPress pentru a schimba structura directorului.

    Sistemul de rescriere intern al WordPress întotdeauna împinge conținutul spre un singur fișier de rutare. În cazul implicit, vom folosi index.php împreună cu orice date suplimentare de șir de interogări. Dar pentru a ne ascunde directorul standard de șabloane (/ Wp-content / teme / mytheme / *), va trebui să afișăm mai multe fișiere diferite.

    add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); funcția themes_dir_add_rewrites () $ theme_name = următoarea (explode ('/ themes /', get_stylesheet_directory ())); global $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-content / themes /'. $ theme_name. / '/ images / wordpress-urls-rescrie' '/ js / $ 1', 'imagini / wordpress-urls-rewrite /(**' '=>' wp-content / themes / / $ 1 ',); $ wp_rewrite-> non_wp_rules + = $ new_non_wp_rules;  

    Am scris o nouă funcție themes_dir_add_rewrites () pentru a trage toate conținuturile majore din aceste adrese URL mai lungi și pentru a le redirecționa în backend. Observați că folosim această altă proprietate misterioasă a clasei $ wp_rewrite numită non_wp_rules. Potrivit documentelor, acestea sunt reguli care nu direcționează spre fișierul index.php al WP și vor fi gestionate la sfârșitul serverului.

    Ce este atât de grozav despre aceste reguli non-WP este că puteți gestiona în continuare metoda URL mai veche destul de ușor. Nu vă oprește să vă conectați la:

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

    Dar arata mult mai frumos daca puteti face referire:

    /images/wordpress-urls-rewrite/logo.jpg in schimb.

    Instrumente și pluginuri utile

    Există doar câteva instrumente pe care le puteți utiliza dacă sunteți blocați cu codarea propriilor URL-uri drăguțe. Procesul este foarte greu de înțeles, așa că nu vă descurajați dacă vă luptați pentru câteva săptămâni. Mă simt că conținutul va fi mai ușor pe măsură ce petreceți mai mult timp practicând.

    Dar pentru a începe să verificați câteva dintre aceste instrumente și pluginuri de reîncărcare la îndemână. Probabil că nu veți avea nevoie de toate, dar este minunat să găsiți o bază de dezvoltatori atât de mare, care să lucreze în jurul rescrierilor WP.

    Monkeyman Resuritate Analyzer

    Când prima jumping în regulile de rescriere acest plugin este un must-have. În realitate, nu se schimbă niciuna dintre regulile pentru site-ul dvs. - aceasta vă permite doar să testați codul și să vedeți ce redirecționări se îndreaptă către paginile respective. Acesta va funcționa chiar și pentru testarea variabilelor de interogare particularizate pentru orice tip de post personalizat.

    CerereApache RewriteRules Viewer

    Acest lucru este similar cu pluginul de mai sus, cu excepția faptului că nu vă permite să vă testați propriile reguli. În schimb, acest plugin va afișa toate normele standard WP ale site-ului dvs. web și în care se redirecționează. Aceasta va include toate proprietățile majore ale $ wp_rewrite cum ar fi setările permalink și paginile / categoriile / bazele etichetelor.

    WP htaccess Control

    Aici aveți un set diferit de reguli pentru efectuarea redirecționărilor de pagină noi. Plugin-ul are propriul panou de administrare unde puteți edita variabile cum ar fi baza de autor, baze de pagini și chiar adăugați propriile reguli personalizate .htaccess.

    Această metodă este diferită în comparație cu construirea propriului dvs. folosind wp_rewrite. Cu toate acestea, poate fi mai ușor pentru tehnicieni care cunosc cu adevărat serverele web și se simt mai confortabil scriind direct în .htaccess.

    Rescrieți testerul de reguli

    Acest lucru nu este de fapt un plugin WordPress, dar este cu siguranță un instrument util pentru a păstra în dosar. Puteți să copiați peste regulile de rescriere și să le testați pentru site-ul dvs. fără a modifica fișierul .htaccess. Aceasta este metoda perfectă pentru eliminarea erorilor din sintaxa dvs. înainte de lansarea live pe Web.

    DW Rewrite

    DW Rewrite este un plugin foarte simplu, care creează 3 adrese URL unice, imediat după instalare. În mod implicit, acesta va schimba link-urile de administrare, conectare și înregistrare / admin, /Logare, și /Inregistreaza-te respectiv.

    Acest lucru poate fi grozav dacă aveți nevoie de o remediere rapidă pentru un blog care conține mai mulți autori. Acesta va ascunde în mod specific link-ul încurcat de înregistrare WordPress jenat (/wp-login.php?action=register).

    Concluzie

    Sper că acest tutorial vă poate oferi câteva exemple pentru a vă gândi la rescrierea WordPress. CMS este foarte popular și dezvoltatorii produc în continuare noi caracteristici în fiecare zi. Personalizarea propriilor adrese URL este o imensă bucată de funcționalitate bazată pe utilizator. Oferă site-ului dvs. propria prezență și branding unică comparativ cu opțiunile implicite.

    Dacă aveți probleme cu regulile de rescriere, nu ar trebui niciodată dificil să anulați pagubele. Prin ștergerea pur și simplu a codului funcției și a spălării regulilor .htaccess, s-ar părea că nimic nu sa schimbat. Asigurați-vă că ați verificat câteva alte articole similare pe care le puteți găsi pe această temă. Și dacă aveți întrebări sau comentarii, le puteți partaja cu noi în zona de discuții post.