Přepisování URL v WordPress tipy a pluginy
Nejnovější aktualizace aplikace WordPress umožnily vývojářům velmi rychle přizpůsobit své osobní webové stránky. Je snadné aktualizovat oblasti vašeho motivu, nahrazovat widgety v postranním panelu a dokonce psát vlastní funkce kódu PHP. Rozloha je obrovská - a jedna oblast popularity je přepisování hezkých URL permalinks.
Existuje několik metod, které můžete použít k aktualizaci výchozího systému WordPress přepsání. V tomto tutoriálu se podělím o několik příkladů a ukážu, jak jednoduchý proces může být. Budete potřebovat pochopení PHP, abyste mohli sledovat, co se v kódu děje, ale je snadné kopírovat a vkládat do vlastní šablony, prakticky se na ní nevztahuje žádná práce.
Pochopení WP_Rewrite
Pokud jste se obeznámeni s mod_rewrite na serverech Apache, pak si vyzvednete syntaxi přepisu WordPress. Jejich systém je stále postaven na vrcholu .htaccess souboru, ale všechna pravidla jsou kódována v PHP. To vlastně dělá proces trochu jednodušším, protože máme větší kontrolu nad psaním vlastních URL.
Doporučuji skimming na stránce třídy wp_rewrite, protože má na této stránce spoustu informací. Existují i malé příklady, na které můžeme odkazovat, abychom vše lépe pochopili. Většinu kódu lze napsat přímo do motivu functions.php soubor. Začněme tím, že se podíváme na výchozí přepisy, které jsou již součástí aplikace WordPress.
Obsah pravidel $ wp_rewrite->
Prohlášením $ wp_rewrite
třídy jako globální máme přístup ke všem interním datům. Když jdete připojit své vlastní pravidla, jsou přidány do pole s názvem $ wp_rewrite-> pravidla
. Je důležité si pamatovat tuto proměnnou, protože budete pravděpodobně muset během vývoje mnohokrát odkazovat na data.
pravidla); ?>
Přidal jsem tento blok kódu do motivu page.php soubor. To bude výstup velké pole dat, která vypadá jako velký nepořádek. Ale jestli vy Zobrazit zdroj na vaší stránce je ve skutečnosti snadné zjistit, která pravidla pro přepisování jsou shodná s názvem souboru. Podívejme se například na pravidla pro přepisy kategorie:
[category /(.+?)/?$] => index.php? název_kategorie = $ zápasy [1]
Bit na levé straně v závorkách je náš Apache RewriteRule hledat. Počínaje sekcí /kategorie/ následovaný řetězcem znaků. Pokud je to uzavřeno, server zná odkaz index.php? název_kategorie =
při nahrazení proměnné na konci.
Nastavení vlastních Permalinks
Ve třídě $ wp_rewrite je tolik obsahu, že je to příliš mnoho. Lze odkazovat na mnoho dalších vlastností, jako například $ wp_rewrite-> category_base
nebo $ wp_rewrite-> author_base
pro tažení výchozích struktur URL pro tyto stránky. Kromě vytáhnutí výchozího nastavení WP můžeme také vytvořit vlastní pravidla.
Rekonstrukce Autor Base
Když vstoupíte na stránku nastavení Permalinks, máte možnost obnovit základy kategorií a značek. Nicméně možnost resetovat autorskou základnu je podivně chybí.
Ale můžeme použít add_rewrite_rule ()
z kodexu WordPressu pro integraci některých nových nastavení. V tomto případě jsem vyměnil /autor/ s /spisovatel/ ale můžete použít jakoukoliv základnu, kterou chcete. Navíc jsem zkopíroval některé z dalších přesměrování pro stránky autora a kanály RSS. Tento blok kódu můžete přidat do souboru theme.php.
add_action ('init', 'add_author_rules'); funkce add_author_rules () add_rewrite_rule ("zapisovatel / ([^ /] +) /?", "index.php? author_name = $ zápasy [1]", "top"); add_rewrite_rule ("zapisovatel / ([^ /] +) / page /? ([0-9] 1,) /?", "index.php? jméno_přihlášení = $ zápasy [1] & paged = $ zápasy [2] ", "horní"); add_rewrite_rule ("zapisovatel / ([^ /] +) / (zdroj | rdf | rss | rss2 | atom) /?", "index.php? jméno_přístroje = $ odpovídá [1] & feed = $ zápasy [2]", " horní"); add_rewrite_rule ("writer / ([^ /] +) / feed / (feed | rdf | rss | rss2 | atom) /?", "index.php? author_name = $ zápasy [1] & feed = $ zápasy [2]" , "horní");
K této funkci lze přistupovat i bez použití proměnné $ wp_rewrite. Někteří vývojáři mají rádi tuto metodu, protože je to jednodušší než hardwarové kódování s vlastnostmi třídy. Nicméně jsem si všiml, že tato metoda není vždy spolehlivá pro některé instalace WordPressu. Ve skutečnosti je druhá možnost přidat tato pravidla na háček po vyprázdnění vašeho .htaccess (viz níže).
Autor Base pomocí funkce generated_rewrite_rules
Pro tuto metodu budeme opět potřebovat globální třídu $ wp_rewrite. Pak nastavím novou proměnnou s názvem $ new_rules
který obsahuje asociativní pole dat. Níže uvedený příklad kódu přepíše pouze základní část stránky autora.
function generated_author_rewrite_rules () globální $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> rules = $ new_rules + $ wp_rewrite-> pravidla;
Ale pokud chceme zahrnout více stránek a RSS kanály, můžeme toto pole rozšířit. Máte možnost vytvořit funkci PHP, abyste mohli tlačit data asociativního pole, která mohou být příliš složitá. Můžeme také rozdělit datové bloky pomocí čárek, které se chovají jako samostatné entity v poli. Podívejte se na můj aktualizovaný kód znovu napsaný v souboru theme.php theme.
function generated_author_rewrite_rules () globální $ wp_rewrite; $ new_rules = array ("writer / ([^ /] +) /?" => "index.php? author_name =". $ wp_rewrite-> preg_index (1), "writer / ([^ /] +) / page /? ([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-> pravidla;
Nezapomeňte, že ani jedna z těchto metod nebude fungovat, dokud nezapomenete původní pravidla přepsání. Budete to muset učinit kdykoliv, když provedete změny těchto funkcí, ale poté se nová pravidla budou držet na neurčito.
Vypláchnutí pravidel pro přepsání
Kdykoli provedete aktualizaci kódu pro přepsání adresy URL, změny se neprovádí okamžitě. Pravidla pro přepisování .htaccess je třeba vyprázdnit tak, aby byl přidán nový kód. Provádění na každé stránce init je však velmi nehospodárné, protože zapisuje do databáze a obnovuje soubor .htaccess.
Lepší metodou je přístup na stránku permalinks v panelu admin a změny uložit znovu. To vždy volá flush_rewrite_rules, takže se nikdy nebudete muset starat o uživatele na frontendu, kteří mají problémy s načítáním. Obnovení stránky a aktualizace všech pravidel ve vašem systému trvá pouze jednou. Pokud to ale nefunguje, můžete vyzkoušet volání $ wp_rewrite-> flush_rules ();
Použití jiných pravidel než WP
Uvnitř $ wp_rewrite
třídy máme přístup k desítkám nemovitostí. Jednou z nejvýznamnějších možností je $ wp_rewrite-> non_wp_rules
který sbírá pole přesměrování, která nenarazila na soubor index.php.
To je ve skutečnosti nejčastěji používáno ve vývoji pluginů WordPress. Můžete stisknout určitý typ vlastního URL (například / kalendář / červen-2012 /
) do backendu vašich webových stránek (/wp-content/plugins/calendarplug/myscript.php
). Samozřejmostí je však další využití tohoto asociativního pole vlastních přepisovacích pravidel jiných než pluginy. Poskytl jsem vynikající příklad v kontextu níže.
Maskování souborů motivů
Toto je společný návrh, který často vidím na diskusních fórech WordPressu. V ideálním případě bychom chtěli zmínit některé soubory uvnitř / wp-content / themes / mytheme /
složka s elegantnějším URL. Všimněte si, že to bude vyžadovat jinou sadu WordPress přepíše změnit strukturu adresáře.
Systém interního přepisu WordPressu vždy posouvá obsah směrem k jedinému souboru směrování. Ve výchozím případě používáme index.php spolu s dalšími údaji řetězce dotazů. Pro skrytí standardního adresáře šablon (/ wp-content / themes / mytheme / *
) budeme muset zobrazit mnoho různých souborů.
add_action ('generated_rewrite_rules', 'themes_dir_add_rewrites'); function themes_dir_add_rewrites () $ theme_name = next (explode ('/ themes /', get_stylesheet_directory ())); global $ 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;
Napsal jsem novou funkci themes_dir_add_rewrites ()
vytáhnout všechny hlavní obsah z těchto delší adresy URL a přesměrovat je do backendu. Všimněte si, že používáme tuto jinou záhadnou vlastnost třídy $ wp_rewrite pojmenovanou non_wp_rules
. Podle dokumentů jsou to pravidla, která nejsou přímo na soubor index.php společnosti WP a budou zpracována na konci serveru..
Co je na těchto pravidlech jiných než WP tak skvělé, je to, že můžete stále spravovat starší metodu URL. Nic vás nebrání v tom, abyste se připojili k:
/wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg
.
Vypadá to ale mnohem hezčí, pokud můžete odkazovat:
/images/wordpress-urls-rewrite/logo.jpg
místo toho.
Užitečné nástroje a moduly
Existuje jen několik nástrojů, které můžete využít, pokud jste uvízl s kódováním vlastní hezké adresy URL. Tento proces je velmi těžké pochopit, takže se nenechte odradit, pokud se snažíte pár týdnů. Cítím, že obsah bude snazší, když budete trávit více času cvičením.
Chcete-li však začít, podívejte se na některé z těchto užitečných nástrojů pro přepis a pluginy. Pravděpodobně nebudete potřebovat všechny z nich, ale je skvělé najít takovou velkou vývojářskou základnu, která pracuje kolem přepisů WP.
Monkeyman Rewrite Analyzer
Při prvním skoku do pravidel přepisování je tento plugin nutností. To vlastně nezmění žádné z pravidel pro vaše webové stránky - to pouze vám umožní vyzkoušet kód a zjistit, které přesměrování jít na které stránky. Bude dokonce fungovat pro testování vlastních proměnných dotazů pro všechny typy vlastních příspěvků.
ViewApache RewriteRules Viewer
To je podobné zásuvnému modulu, kromě toho, že vám neumožňuje otestovat vlastní pravidla. Místo toho tento plugin zobrazí všechna výchozí pravidla WP pro vaše webové stránky a kam budou přesměrovány. To bude zahrnovat všechny hlavní vlastnosti $ wp_rewrite
například nastavení permalinků a bází stránek / kategorií / značek.
WP htaccess Control
Zde máte jinou sadu pravidel pro přesměrování nových stránek. Plugin má svůj vlastní administrační panel, ve kterém můžete upravovat proměnné, jako je například základna autora, zásady stránek, a dokonce můžete přidávat vlastní pravidla .htaccess..
Tato metoda je odlišná ve srovnání s budováním vlastních pomocí wp_rewrite. To však může být jednodušší pro techniky, kteří opravdu znají webové servery a cítí se pohodlněji psaní přímo do .htaccess.
Tester přepisovacích pravidel
To vlastně není WordPress plugin, ale je to určitě jeden užitečný nástroj, aby na soubor. Můžete kopírovat přes pravidla přepsání a otestovat je pro vaše webové stránky, aniž byste museli upravovat svůj soubor .htaccess. Toto je ideální metoda pro odstranění chyb ze své syntaxe před spuštěním živě na webu.
DW ReWrite
DW Rewrite je velmi jednoduchý plugin, který okamžitě po instalaci vytvoří 3 unikátní hezké adresy URL. Ve výchozím nastavení se změní administrátorské, přihlašovací a registrační odkazy na / admin
, /přihlásit se
, a /Registrovat
resp.
To může být skvělé, pokud potřebujete rychlou opravu pro blog, který obsahuje více autorů. To bude konkrétně skrýt trapně spletitý WordPress registrační odkaz (/wp-login.php?action=register
).
Závěr
Doufám, že tento návod může poskytnout několik příkladů, které vám pomohou přemýšlet o WordPress přepíše. CMS je velmi populární a vývojáři stále produkují nové funkce každý den. Přizpůsobení vlastních adres URL je tak obrovský kus uživatelské funkce. To dává vaší webové stránce vlastní jedinečnou přítomnost a branding ve srovnání s výchozími možnostmi.
Pokud máte potíže s pravidly přepisu, nikdy by nemělo být těžké vrátit se zpět. Jednoduchým vymazáním kódu funkce a vyprázdněním pravidel .htaccess by se zdálo, že se nic nezměnilo. Nezapomeňte se podívat na další podobné články, které najdete na toto téma. A pokud máte nějaké dotazy nebo připomínky, můžete je sdílet s námi v diskusní oblasti.