Startpagina » WordPress » Herschrijven van URL's in WordPress Tips en plug-ins

    Herschrijven van URL's in WordPress Tips en plug-ins

    Met de nieuwste updates van WordPress konden ontwikkelaars hun persoonlijke website zeer snel aanpassen. Het is eenvoudig om delen van uw thema bij te werken, widgets in de zijbalk te vervangen en zelfs uw eigen aangepaste PHP-codefuncties te schrijven. De uitbreiding is enorm - en een gebied van populariteit herschrijft mooie URL-permalinks.

    Er zijn een paar methoden die u kunt gebruiken om het standaard WordPress herschrijfsysteem bij te werken. In deze tutorial zal ik enkele voorbeelden geven en laten zien hoe eenvoudig het proces kan zijn. Je hebt enige kennis van PHP nodig om te volgen wat er in de code aan de hand is, maar het is zo gemakkelijk om te kopiëren en in je eigen sjabloon te plakken, er is praktisch geen werk aan de winkel.

    WP_Rewrite begrijpen

    Als u bekend bent met mod_rewrite op Apache-servers, dan haalt u de rewrite-syntax van WordPress op. Hun systeem is nog steeds gebouwd op een .htaccess bestand, maar alle regels zijn gecodeerd in PHP. Dit maakt het proces eigenlijk een beetje eenvoudiger, omdat we meer controle hebben over het schrijven van onze eigen URL's.

    Ik raad aan de pagina $ wp_rewrite class te skimming, want er is veel informatie over het onderwerp. Er zijn zelfs kleine voorbeelden waar we naar kunnen verwijzen om alles gemakkelijker te begrijpen te maken. Het grootste deel van de code kan rechtstreeks in uw thema's worden geschreven functions.php het dossier. Laten we beginnen met te kijken naar de standaard herschrijvingen die al bij WordPress zijn opgenomen.

    Inhoud van $ wp_rewrite-> regels

    Door de $ wp_rewrite klasse als wereldwijd hebben we toegang tot alle interne gegevens. Wanneer u uw eigen regels toevoegt, worden deze toegevoegd aan een array met de naam $ Wp_rewrite-> regels. Het is belangrijk om deze variabele te onthouden, omdat u waarschijnlijk tijdens de ontwikkeling vele malen naar de gegevens moet verwijzen.

    reglement); ?>

    Ik heb dit codeblok toegevoegd aan mijn thema's page.php het dossier. Het zal een grote hoeveelheid gegevens uitvoeren die eruit ziet als een grote puinhoop. Maar als jij Bron bekijken op uw pagina is het eigenlijk eenvoudig om te zien welke herschrijfregels overeenkomen met welke bestandsnaam. Laten we bijvoorbeeld kijken naar de regels voor het herschrijven van categorieën:

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

    Het bit aan de linkerkant tussen haakjes is onze Apache RewriteRule waarnaar moet worden gezocht. Beginnend met de sectie /categorie/ gevolgd door een reeks tekens. Als dit wordt vergeleken, weet de server waarnaar moet worden verwezen index.php? CATEGORY_NAME = terwijl de variabele aan het einde wordt vervangen.

    Aangepaste Permalinks instellen

    Er is zoveel inhoud om alleen in de $ wp_rewrite-klasse over te gaan. Er kan naar veel andere eigenschappen worden verwezen, zoals $ Wp_rewrite-> category_base of $ Wp_rewrite-> author_base voor het trekken van de standaard URL-structuren voor deze pagina's. Maar afgezien van het trekken van de standaardinstellingen van WP, kunnen we ook onze eigen regels opstellen.

    De auteursbasis opnieuw opbouwen

    Wanneer u de instellingenpagina Permalinks-instellingen opent, kunt u de basistekens voor categorieën en tags opnieuw instellen. De optie om je auteursbasis opnieuw in te stellen ontbreekt echter vreemd.

    Maar we kunnen gebruiken de add_rewrite_rule () van WordPress 'codex om enkele nieuwe instellingen te integreren. In dit geval heb ik vervangen /schrijver/ met /auteur/ maar je zou elke basis kunnen gebruiken die je leuk vindt. Daarnaast heb ik een aantal van de andere omleidingen gekopieerd voor auteurspagina's en RSS-feeds. U kunt dit codeblok toevoegen aan het function.php-bestand van uw thema.

    add_action ('init', 'add_author_rules'); functie add_author_rules () add_rewrite_rule ("writer / ([^ /] +) /?", "index.php? author_name = $ komt overeen met [1]", "bovenaan"); add_rewrite_rule ("writer / ([^ /] +) / page /? ([0-9] 1,) /?", "index.php? author_name = $ matches [1] & paged = $ matches [2] "," top "); add_rewrite_rule ("writer / ([^ /] +) / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ overeenkomsten [1] & feed = $ overeenkomsten [2]", " top"); add_rewrite_rule ("writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ overeenkomsten [1] & feed = $ overeenkomsten [2]" , "top");  

    Deze functie is toegankelijk, zelfs zonder de variabele $ wp_rewrite te gebruiken. Sommige ontwikkelaars houden van deze methode omdat het eenvoudiger is dan hardcodering met klasse-eigenschappen. Maar ik heb ook gemerkt dat deze methode niet altijd betrouwbaar is voor sommige WordPress-installaties. Er is eigenlijk een tweede optie om deze regels aan de haak te nemen na het doorspoelen van je .htaccess (zie hieronder).

    Auteursbasis met generate_rewrite_rules

    Als u voor deze methode schrijft, hebben we opnieuw de globale $ wp_rewrite-klasse nodig. Ik heb vervolgens een nieuwe variabele ingesteld met de naam $ new_rules die een associatieve array van gegevens bevat. Mijn onderstaande voorbeeldcode herschrijft gewoon voor de basispagina van de auteurspagina.

    function 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-> rules;  

    Maar als we meerdere pagina's en RSS-feeds willen opnemen, kunnen we de array verbeteren. Je hebt de mogelijkheid om een ​​PHP-functie te maken om associatieve array-gegevens te pushen die een beetje te complex zijn. We zouden de gegevensblokken ook kunnen splitsen via komma's en zich als afzonderlijke entiteiten in de array gedragen. Bekijk mijn bijgewerkte code opnieuw geschreven in functions.php themabestand.

    function generate_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1), "writer / ([^ /] +) / pagina /? ([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-> rules;  

    Onthoud dat geen van deze methoden werkt voordat u de oorspronkelijke herschrijfregels hebt doorgespoeld. U moet dit doen telkens wanneer u wijzigingen in deze functies aanbrengt, maar daarna zullen uw nieuwe regels voor onbepaalde tijd blijven bestaan.

    De herschrijfregels doorspoelen

    Telkens wanneer u een update naar de URL-herschrijfcode uitvoert, worden de wijzigingen niet onmiddellijk toegepast. Je moet de herschrijfregels .htaccess doorspoelen zodat je nieuwe code wordt toegevoegd. Het uitvoeren van deze op elke pagina init is echter uiterst verspilling als het naar de database schrijft en het .htaccess-bestand hard-refresht.

    Een betere methode is om toegang te krijgen tot uw permalinks-pagina in het beheerdersdashboard en de wijzigingen opnieuw op te slaan. Dit roept altijd een flush_rewrite_rules aan, dus je hoeft je nooit zorgen te maken over gebruikers op de frontend die last hebben van het laden. En het kost maar één keer om de pagina opnieuw op te slaan en alle regels in uw systeem bij te werken. Maar als dit niet werkt, kunt u proberen te bellen $ Wp_rewrite-> flush_rules ();

    Niet-WP-regels gebruiken

    Binnen in de $ wp_rewrite klas hebben we toegang tot tientallen eigenschappen. Een van de meer belangrijke opties is $ Wp_rewrite-> non_wp_rules die een reeks omleidingen verzamelt die het index.php-bestand niet raken.

    Dit wordt eigenlijk het meest gebruikt in de ontwikkeling van WordPress plug-ins. U kunt een specifiek aangepast URL-type pushen (zoals / Kalender / juni-2012 /) in de backend van uw website (/wp-content/plugins/calendarplug/myscript.php). Maar natuurlijk zijn er andere toepassingen voor deze associatieve reeks van aangepaste herschrijfregels anders dan plug-ins. Ik heb een uitstekend voorbeeld gegeven in de onderstaande context.

    Uw themabestanden maskeren

    Dit is een veelvoorkomende suggestie die ik regelmatig tegenkom op WordPress-discussieforums. Idealiter willen we verwijzen naar enkele bestanden in de / Wp-content / themes / Mytheme / map met een elegantere URL. Merk op dat dit een andere set van WordPress herschrijft vereist om de directorystructuur te veranderen.

    Het interne rewrite-systeem van WordPress pusht altijd de inhoud naar een enkel routeringsbestand. In het standaardgeval gebruiken we index.php samen met eventuele extra querystringgegevens. Maar voor het verbergen van onze standaard sjabloondirectory (/ Wp-content / themes / Mytheme / *) we zullen veel verschillende bestanden moeten weergeven.

    add_action ('generate_rewrite_rules', 'themes_dir_add_rewrites'); function themes_dir_add_rewrites () $ theme_name = next (explode ('/ themes /', get_stylesheet_directory ())); globale $ wp_rewrite; $ new_non_wp_rules = array ('css /(.*)' => 'wp-content / themes /'. $ theme_name. '/ css / $ 1', 'js /(.*)' => 'wp-content / thema's / '. $ 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;  

    Ik heb een nieuwe functie geschreven themes_dir_add_rewrites () om alle belangrijke inhoud uit deze langere URL's te halen en om te leiden naar de backend. Merk op dat we deze andere mysterieuze eigenschap van de genoemde $ wp_rewrite-klasse gebruiken non_wp_rules. Volgens de documenten zijn dit regels die niet verwijzen naar het index.php-bestand van WP en die aan de server worden afgehandeld.

    Wat zo geweldig is aan deze niet-WP-regels, is dat je de oudere URL-methode nog steeds gemakkelijk kunt beheren. Er is niets dat u ervan weerhoudt om te linken naar:

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

    Maar het ziet er een stuk leuker uit als je kunt verwijzen naar:

    /images/wordpress-urls-rewrite/logo.jpg in plaats daarvan.

    Handige hulpmiddelen en plug-ins

    Er zijn slechts een paar hulpmiddelen die u kunt gebruiken als u vastzit met het coderen van uw eigen mooie URL's. Het proces is erg moeilijk te begrijpen, dus raak niet ontmoedigd als je een paar weken worstelt. Ik heb het gevoel dat de inhoud gemakkelijker wordt naarmate je meer tijd besteedt aan oefenen.

    Maar om aan de slag te gaan, bekijk enkele van deze handige herschrijfhulpmiddelen & -plug-ins. Je zult ze waarschijnlijk niet allemaal nodig hebben, maar het is geweldig om zo'n groot ontwikkelaarsbestand te vinden dat werkt rond WP-herschreven.

    Monkeyman Rewrite Analyzer

    Wanneer je voor het eerst naar regels voor herschrijven gaat, is deze plug-in een must-have. Het verandert eigenlijk niets aan de regels voor uw website - het laat u alleen toe om code uit te testen en te zien welke omleidingen naar welke pagina's gaan. Het werkt zelfs voor het testen van aangepaste queryvariabelen voor elk aangepast berichttype.

    AskApache RewriteRules Viewer

    Dit lijkt op de plug-in hierboven, behalve dat je niet je eigen regels kunt testen. In plaats daarvan geeft deze plug-in alle standaard WP-regels van uw website weer en waarheen zij doorverwijzen. Dit omvat alle belangrijke eigenschappen van $ wp_rewrite zoals uw permalink instellingen en pagina / categorie / tags bases.

    WP htaccess-besturing

    Hier heb je een andere set regels voor het maken van nieuwe pagina-doorverwijzingen. De plug-in heeft een eigen admin-paneel waar u variabelen kunt bewerken, zoals uw auteursbasis, pagina-bases en zelfs uw eigen aangepaste htaccess-regels kunt toevoegen..

    Deze methode is anders dan die van wp_rewrite. Het kan echter gemakkelijker zijn voor techneuten die echt webservers kennen en zich prettiger voelen om direct in .htaccess te schrijven.

    Herschrijfregel Tester

    Dit is eigenlijk geen WordPress-plug-in, maar is zeker een handige tool om op te slaan. U kunt de herschrijfregels kopiëren en deze voor uw website testen zonder ooit uw .htaccess-bestand te bewerken. Dit is de perfecte methode om bugs uit je syntaxis te verwijderen voordat je het live op het web start.

    DW ReWrite

    DW Rewrite is een zeer eenvoudige plug-in die na de installatie 3 unieke, mooie URL's maakt. Standaard worden de admin-, login- en registratielinks gewijzigd in /beheerder, /Log in, en /registreren respectievelijk.

    Dit kan geweldig zijn als je een snelle oplossing nodig hebt voor een blog met meerdere auteurs. Het zal specifiek de gênant ingewikkelde WordPress registratielink verbergen (/wp-login.php?action=register).

    Conclusie

    Ik hoop dat deze tutorial enkele voorbeelden biedt om je aan het denken over WordPress-herschrijvingen te helpen denken. De CMS is erg populair en ontwikkelaars produceren nog steeds elke dag nieuwe functies. Het aanpassen van uw eigen URL's is zo'n enorm stuk gebruikersgebaseerde functionaliteit. Het geeft uw website zijn eigen unieke aanwezigheid en branding in vergelijking met de standaardopties.

    Als u problemen ondervindt met herschrijfregels, zou het nooit moeilijk moeten zijn om de schade ongedaan te maken. Door simpelweg de functiecode te verwijderen en je .htaccess-regels door te spoelen, zou het lijken alsof er niets is veranderd. Zorg ervoor dat u enkele andere soortgelijke artikelen leest die u over het onderwerp kunt vinden. En als u vragen of opmerkingen heeft, kunt u deze met ons delen op het gebied van nabesprekingen.