URL pārrakstīšana programmā WordPress padomi un spraudņi
Jaunākie WordPress atjauninājumi ir ļāvuši izstrādātājiem ātri pielāgot savu personīgo tīmekļa vietni. Ir vienkārši atjaunināt savas tēmas jomas, nomainīt logrīkus sānjoslā un pat rakstīt savas pielāgotās PHP koda funkcijas. Izvērsums ir milzīgs - un viena popularitātes joma ir diezgan URL pārrakstīšana.
Ir dažas metodes, ko varat izmantot, lai atjauninātu noklusējuma WordPress pārrakstīšanas sistēmu. Šajā apmācībā es sniegšu dažus piemērus un parādīšu, cik vienkāršs process var būt. Jums būs nepieciešama izpratne par PHP, lai sekotu kodam, kas notiek kodā, bet tas ir tik vienkārši kopēt un ielīmēt savā veidnē, praktiski nav nekāda darba..
WP_Rewrite izpratne
Ja jūs vispār esat iepazinies ar mod_rewrite uz Apache serveriem, tad jūs saņemsiet WordPress pārrakstīšanas sintaksi. To sistēma joprojām ir uzbūvēta uz .htaccess failu, bet visi noteikumi tiek kodēti PHP. Tas padara procesu nedaudz vieglāku, jo mums ir lielāka kontrole pār savu URL.
Es iesaku nolaist $ wp_rewrite klases lapu, jo tai ir tonnas informācijas par šo tēmu. Ir pat nelieli piemēri, uz kuriem mēs varam atsaukties, lai padarītu visu vieglāk saprotamu. Lielāko daļu kodu var rakstīt tieši jūsu tēmas funkcijas.php failu. Sāksim ar noklusējuma pārrakstīšanu, kas jau ir iekļauta WordPress.
$ Wp_rewrite-> noteikumu saturs
Paziņojot par $ wp_rewrite
klase kā globāla, mums ir pieejami visi iekšējie dati. Kad dodaties, lai pievienotu savus noteikumus, tos pievieno masīvam ar nosaukumu $ wp_rewrite-> noteikumi
. Ir svarīgi atcerēties šo mainīgo, jo jums, iespējams, būs nepieciešams atsaukties uz datiem daudzas reizes izstrādes laikā.
noteikumi); ?>
Es pievienoju šo koda bloku savai tēmai page.php failu. Tas dos lielu datu kopumu, kas izskatās kā liels putns. Bet, ja jūs Skatīt avotu jūsu lapā ir tiešām viegli redzēt, kuri pārrakstīšanas noteikumi ir saskaņoti ar to, kurš faila nosaukums. Piemēram, apskatīsim noteikumus par kategoriju pārrakstīšanu:
[kategorija /(.+?)/?$] => index.php? category_name = $ atbilstība [1]
Bumba kreisajā pusē iekavās ir mūsu Apache RewriteRule, lai meklētu. Sākot ar sadaļu / kategorija / seko jebkura rakstzīmju virkne. Ja tas ir saskaņots, serveris zina, uz ko atsaukties index.php? category_name =
nomainot mainīgo beigās.
Pielāgoto Permalinks iestatīšana
Vienkārši $ wp_rewrite klasē ir tik daudz satura. Var atsaukties uz daudzām citām īpašībām, piemēram, $ wp_rewrite-> category_base
vai $ wp_rewrite-> author_base
šo lapu noklusējuma URL struktūru vilkšanai. Bet, izņemot WP noklusējuma iestatījumus, mēs varam arī izveidot savus noteikumus.
Autora bāzes atjaunošana
Ievadot lapu Permalinks iestatījumi, jums ir iespēja atiestatīt kategorijas un tagu bāzes. Tomēr iespēja atiestatīt autora bāzi ir neparasti.
Bet mēs varam izmantot add_rewrite_rule ()
no WordPress koda, lai integrētu dažus jaunus iestatījumus. Šajā gadījumā es esmu nomainījis / autors / ar /rakstnieks/ bet jūs varētu izmantot jebkuru bāzi, kuru vēlaties. Turklāt es esmu nokopējis dažas no pārējām novirzēm autoru lapām un RSS plūsmām. Šo koda bloku varat pievienot tēmas funkcijām.php.
add_action ('init', 'add_author_rules'); funkcija add_author_rules () add_rewrite_rule ("rakstnieks / ([^ /] +) /?", "index.php? autor_name = $ atbilst [1]", "top"); add_rewrite_rule ("rakstnieks / ([^ /] +) / page /? ([0-9] 1,) /?", "index.php? autors_name = $ atbilst [1] & paged = $ atbilstība [2] ", "tops"); add_rewrite_rule ("rakstnieks / ([^ /] +) / (plūsma | rdf | rss | rss2 | atoms) /?", "index.php? autor_name = $ atbilst [1] & feed = $ atbilstība [2]", " tops"); add_rewrite_rule ("rakstnieks / ([^ /] +) / plūsma / (plūsma | rdf | rss | rss2 | atoms) /?", "index.php? autor_name = $ atbilst [1] & feed = $ atbilstība [2]" , "tops");
Šo funkciju var piekļūt pat bez $ wp_rewrite mainīgā. Daži izstrādātāji patīk šī metode, jo tas ir vienkāršāks par cieto kodēšanu ar klases īpašībām. Tomēr es arī pamanīju, ka šī metode ne vienmēr ir uzticama dažām WordPress instalācijām. Faktiski ir otrs variants, lai pievienotu šos noteikumus uz āķa pēc .htaccess izskalošanas (skatīt zemāk).
Autora bāze, izmantojot gener_rewrite_rules
Rakstot šo metodi, mums atkal būs nepieciešama globālā $ wp_rewrite klase. Pēc tam esmu iestatījis jaunu mainīgo $ new_rules
kas satur asociētu datu kopumu. Mans zemāk redzamais piemēru kods tikai pārraksta autora pamatlapas sadaļu.
funkcija create_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("rakstnieks / ([^ /] +) /?" => "index.php? autors_name =". $ wp_rewrite-> preg_index (1)); $ wp_rewrite-> noteikumi = $ new_rules + $ wp_rewrite-> noteikumi;
Bet, ja mēs vēlamies iekļaut vairākas lappuses un RSS plūsmas, mēs varam paplašināt masīvu. Jums ir iespēja izveidot PHP funkciju, lai virzītu asociatīvos masīva datus, kas var būt pārāk sarežģīti. Mēs varētu arī sadalīt datu blokus ar komatiem, rīkojoties kā atsevišķas vienības masīvā. Pārbaudiet manu atjaunināto kodu vēlreiz, rakstot funkcijās .php tēmas failā.
funkcija create_author_rewrite_rules () global $ wp_rewrite; $ new_rules = array ("rakstnieks / ([^ /] +) /?" => "index.php? autors_name =". $ wp_rewrite-> preg_index (1), "rakstnieks / ([^ /] +) / lapa /? ([0-9] 1,) /? "=>" Index.php? Autors_name = ". $ Wp_rewrite-> preg_index (1)." & Paged = ". $ Wp_rewrite-> preg_index (2), "rakstnieks / ([^ /] +) / (plūsma | rdf | rss | rss2 | atoms) /?" => "index.php? autors_name =". $ wp_rewrite-> preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2), "rakstnieks / ([^ /] +) / plūsma / (plūsma | rdf | rss | rss2 | atoms) /?" => "index.php? autor_name =". $ wp_rewrite- > preg_index (1). "& feed =". $ wp_rewrite-> preg_index (2)); $ wp_rewrite-> noteikumi = $ new_rules + $ wp_rewrite-> noteikumi;
Vienkārši atcerieties, ka neviena no šīm metodēm nedarbosies līdz brīdim, kad būsit noskalojuši sākotnējos pārrakstīšanas noteikumus. Jums tas būs jādara jebkurā laikā, kad veicat izmaiņas šajās funkcijās, bet pēc tam jaunie noteikumi paliks bezgalīgi.
Pārrakstīšanas noteikumu izskalošana
Ikreiz, kad veicat URL pārrakstīšanas koda atjauninājumu, izmaiņas netiek veiktas nekavējoties. Jums ir jāpārtrauc .htaccess pārrakstīšanas noteikumi, lai jaunais kods tiktu pievienots. Tomēr, veicot šo darbu katrā lapā init, tas ir ārkārtīgi izšķērdīgs, jo tas raksta datu bāzē un atsvaidzina .htaccess failu.
Labāka metode ir piekļūt jūsu permalinks lapai administratora panelī un atkārtoti saglabāt izmaiņas. Tas vienmēr sauc par flush_rewrite_rules, tāpēc jums nekad nav jāuztraucas par lietotājiem frontendā, kas saskaras ar ielādes problēmām. Un tas aizņem tikai vienu reizi, lai atjaunotu lapu un atjauninātu visus sistēmas noteikumus. Bet, ja tas nedarbojas, varat mēģināt zvanīt $ wp_rewrite-> flush_rules ();
Izmantojot ne WP noteikumus
Iekšpusē $ wp_rewrite
klase mums ir pieejami desmitiem īpašumu. Viena no svarīgākajām iespējām ir $ wp_rewrite-> non_wp_rules
kas savāc virkni redirects, kas nav hit index.php failu.
Tas tiek izmantots visbiežāk WordPress spraudņa izstrādē. Varat nospiest noteiktu pielāgoto URL tipu (piemēram, / kalendārs / 2012. gada jūnijs /
) savā tīmekļa vietnē (/wp-content/plugins/calendarplug/myscript.php
). Bet, protams, ir arī citi pielāgoto pārrakstīšanas noteikumu apvienojumi, kas nav spraudņi. Es esmu sniedzis teicamu piemēru šajā kontekstā.
Tēmu failu maskēšana
Tas ir kopīgs ieteikums, ko es bieži redzu WordPress diskusiju dēļos. Ideālā gadījumā mēs gribētu atsaukties uz dažiem failiem / wp-content / tēmas / mīts /
mapi ar elegantāku URL. Ievērojiet, ka tas prasīs atšķirīgu WordPress pārrakstīšanu, lai mainītu direktoriju struktūru.
WordPress iekšējā pārrakstīšanas sistēma vienmēr nospiež saturu uz vienu maršrutēšanas failu. Noklusējuma gadījumā mēs izmantojam index.php kopā ar jebkādiem papildu vaicājumu virknes datiem. Bet, lai paslēptu mūsu standarta veidnes direktoriju (/ wp-content / tēmas / mīts / *
) mums būs jāparāda daudzi dažādi faili.
add_action ('generated_rewrite_rules', 'themes_dir_add_rewrites'); funkcija themes_dir_add_rewrites () $ theme_name = next (eksplodēt ('/ themes /', get_stylesheet_directory ())); globālā $ 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;
Esmu uzrakstījis jaunu funkciju themes_dir_add_rewrites ()
velciet visu galveno saturu no šiem garākiem URL un novirziet tos atpakaļ. Ņemiet vērā, ka mēs izmantojam šo citu noslēpumaino $ wp_rewrite klases nosaukumu non_wp_rules
. Saskaņā ar dokumentiem tie ir noteikumi, kas nav tieši saistīti ar WP index.php failu un tiks apstrādāti servera beigās.
Tas, kas ir tik liels par šiem ne-WP noteikumiem, ir tas, ka jūs joprojām varat viegli pārvaldīt vecāku URL metodi. Nekas nenovērš jūs no saiknes ar:
/wp-content/themes/mytheme/images/wordpress-urls-rewrite/logo.jpg
.
Bet, ja jūs varat atsaukties, tas izskatās daudz skaistāks.
/images/wordpress-urls-rewrite/logo.jpg
tā vietā.
Noderīgi rīki un spraudņi
Ir tikai daži rīki, kurus var izmantot, ja esat iestrēdzis ar savu skaisto URL kodēšanu. Process ir ļoti grūti saprotams, tāpēc nesaņemiet drosmi, ja jūs pāris nedēļas cīnās. Man šķiet, ka saturs būs vieglāks, jo vairāk laika pavadīsiet praktizēšanā.
Bet, lai sāktu pārbaudīt dažus no šiem ērtajiem pārrakstīšanas rīkiem un spraudņiem. Jūs, iespējams, nebūs vajadzīgi visi no tiem, bet tas ir lieliski atrast tik lielu izstrādātāju bāzi, kas strādā WP pārrakstīšanas laikā.
Monkeyman Rewrite Analyzer
Pirmajā pārlēkšanas kārtībā šis spraudnis ir obligāts. Tas faktiski nemaina nevienu no jūsu vietnes noteikumiem - tas tikai ļauj jums pārbaudīt kodu un redzēt, kuras pāradresācijas iet uz kādām lapām. Tā pat strādās, lai pārbaudītu pielāgotus vaicājumu mainīgos lielumus jebkuriem pielāgotiem pasta veidiem.
AskApache RewriteRules Viewer
Tas ir līdzīgs iepriekš minētajam spraudnim, izņemot, ka tas neļauj pārbaudīt savus noteikumus. Tā vietā šis spraudnis parādīs visus jūsu vietnes noklusētos WP noteikumus un to, uz kurieni tie novirzīti. Tas ietvers visas galvenās $ wp_rewrite
piemēram, jūsu permalink iestatījumus un lapu / kategoriju / tagu bāzes.
WP piekļuves kontrole
Šeit jums ir atšķirīgs noteikumu kopums jaunu lapu novirzīšanai. Spraudnim ir savs administratora panelis, kurā var rediģēt tādus mainīgos lielumus kā autora bāze, lapu bāzes un pat pievienot savus pielāgotos .htaccess noteikumus.
Šī metode ir atšķirīga, salīdzinot ar ēkas izveidošanu, izmantojot wp_rewrite. Tomēr tas var būt vieglāk tehniskajiem darbiniekiem, kuri tiešām zina tīmekļa serverus un jūtas ērtāk rakstot tieši .htaccess.
Pārrakstīt Reglamenta testētāju
Tas faktiski nav WordPress spraudnis, bet noteikti ir viens ērts līdzeklis, lai saglabātu failu. Jūs varat kopēt pārrakstīšanas noteikumus un pārbaudīt tos savai vietnei, nekad nemainot .htaccess failu. Šī ir ideāla metode, lai noņemtu kļūdas no sintakses, pirms sākat dzīvot tīmeklī.
DW ReWrite
DW Rewrite ir ļoti vienkāršs spraudnis, kas tūlīt pēc instalēšanas rada 3 unikālus diezgan URL. Pēc noklusējuma tas mainīs admin, pieteikšanās un reģistrācijas saites uz / admin
, /Pieslēgties
, un / reģistrēt
attiecīgi.
Tas var būt lieliski, ja jums ir nepieciešams ātrs labojums blogam, kurā ir vairāki autori. Tas īpaši slēpt apgrūtinoši izliekto WordPress reģistrācijas saiti (/wp-login.php?action=register
).
Secinājums
Es ceru, ka šī apmācība var sniegt dažus piemērus, lai jūs domātu par WordPress pārrakstīšanu. CMS ir ļoti populārs, un izstrādātāji katru dienu ražo jaunas funkcijas. Savu URL pielāgošana ir tik liela lietotāju funkcionalitātes daļa. Tas sniedz jūsu vietnei savu unikālo klātbūtni un zīmolu, salīdzinot ar noklusējuma opcijām.
Ja jums ir problēmas ar pārrakstīšanas noteikumiem, nekad nebūtu grūti atcelt bojājumus. Vienkārši izdzēšot funkcijas kodu un nospiežot .htaccess noteikumus, tas izskatās kā nekas nav mainījies. Noteikti izlasiet citus līdzīgus rakstus, kurus varat atrast šajā tēmā. Un, ja jums ir kādi jautājumi vai komentāri, jūs varat dalīties tajos ar mums pēc diskusiju jomā.