Ang WordPress Rewrite API

WordPress ay may isang talagang kapaki-pakinabang na API na tinatawag na “the muling isulat ang API“. Sa palagay ko na mayroon nang “url rewriting”, ito ang proseso na mas madaling mabasa ang mga URL. Halimbawa, ang isang url na nakasulat tulad nito http://mysite.com/?page=12&category=12&author=47 ay hindi maganda ang hitsura. Mahirap tandaan ito, at hindi gusto ng mga search engine ito. Iyon ang dahilan kung bakit halos bawat CMS ay may builtin function na “muling pagsulat” ng mga url upang magmukhang ganito ang hitsura nito: http://mysite.com/category/business/finance.


Ang muling pagsulat ng API at ang klase ng WP_Rewrite

Sa loob ng WordPress, ang prosesong ito ay kilala rin bilang istruktura ng permalinks. Kapag lumipat ka mula sa default na istraktura ng permalink sa isang pasadyang istraktura ay awtomatikong moaktibo ang rewrite API. Ito ay ganap na awtomatiko. Ngunit kung minsan kailangan mong lumikha ng iyong sariling pasadyang mga patakaran sa pagsulat muli.

Sa post na ito, gagawa kami ng mga simpleng pag-andar upang lumikha ng isang simpleng pasadyang pagsulat muli. Sasabihin nating nais na makakuha ng isang halaga ng referrer, uri ng katumbas ng isang $ _GET [‘referrer’].

Kung mayroon kaming pagtingin sa Codex, maaari nating makita sa muling pagsulat ng pahina ng API na ang API na ito ay may 6 na function na builtin. Ang pinakakaraniwang paggamit ng muling pagsulat ay ang paggamit ng mga pagpapaandar na ito, maraming mga tutorial tungkol doon, na ang dahilan kung bakit gagamitin ko ang mga filter sa halip na mga pag-andar. Dahil oo, ang muling pagsulat ng API ay maaari ring magamit sa mga filter! Ang mga filter ay nakalista sa WP_Rewrite klase Pahina ng codex.

Pagdaragdag ng isang bagong Query Var

Upang magsimula, kailangan nating lumikha ng isang pagpapaandar na magsasabi sa WordPress na nakatakda ang isang bagong patakaran sa pagsulat. Ito ang trabaho ng add_rewrite_rule () at add_rewrite_tag ()  function, ngunit maaari mo ring gawin ito gamit ang query_vars at muling pagsulat_rules_array mga filter. Upang gawin ito, kailangan nating lumikha ng dalawang pag-andar at dalawang mga filter. Ang unang pag-andar ay pupunta lamang magdagdag ng isang bagong variable sa filter na query_vars, at ang pangalawa ay magparehistro sa bagong variable na ito sa pandaigdigang pagsulat ng mga panuntunan:

/ *
|--------------------------------------------------------------------------
| Simulan ang Rewrite. Halimbawang: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// Magrehistro ng isang bagong var
function rc_add_query_vars ($ vars) {
$ vars [] = "referrer"; // pangalan ng var tulad ng nakikita sa URL
ibalik ang $ vars;
}

// Ikabit ang aming pag-andar sa query_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Idagdag ang bagong patakaran sa pagsulat muli sa mga umiiral
function rc_add_rewrite_rules ($ patakaran) {
$ new_rules = array ('referrer / ([^ /] +) /? $' => 'index.php? referrer = $ match [1]');
$ patakaran = $ new_rules + $ patakaran;
ibalik ang mga patakaran sa $;
}

// Ikabit ang function sa rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');

Kapag naidagdag mo ang code na ito sa alinman sa iyong file ng plugin o file ng iyong function na function.php, nakarating sa mga setting> Permalinks, at i-save ang mga permalinks na istraktura. Ang pagkilos na ito ay kinakailangan. Maaari mo na ngayong ma-access ang iyong site sa ganitong uri o url: http://mysite.com/referrer/your-name. Kung nais mong mai-redirect sa isang tiyak na pahina, baguhin ang index.php? Referrer = $ tugma [1] ni index.php? Pagename = my-page & referrer = $ match [1] kung saan ang “my-page” ay ang pahina na na-redirect upang mag-slug.

Pagkuha ng variable na halaga

Ngayon na nakatakda ang iyong muling pagsulat ng patakaran, baka gusto mong ma-access ang variable na halaga. Ngunit kung gumawa ka ng isang simpleng $ _GET [‘referrer’], hindi ka makakakuha ng anumang halaga. Upang makuha ang mga halaga ng URL ng mga vars, kailangan mong mag-hook ng isang function sa “template_redirect” filter. Ang pag-hook sa filter na “init” ay masyadong maaga. Pagkatapos ay maaari mong ma-access ang mga kinakailangang variable sa pamamagitan ng $ wp_query object. Narito ang isang mabilis na sample ng kung paano gawin ito:

// Kunin ang URL var
function rc_get_my_vars () {
pandaigdigang $ wp_query;

kung (magbibigay ($ wp_query-> query_vars ['referrer'])) {
$ referrer = get_query_var ('referrer');
}
}

// Ikabit ang pagpapaandar sa template_redirect
add_action ('template_redirect', 'rc_get_my_vars');

Maaari mong kasunod ang sigaw ng halaga ng $ referrer o gamitin ito tulad ng nagawa sa isang normal na variable ng GET.

Maaari mong syempre baguhin ang paggamit ng higit sa isang variable:

// sa rc_add_query_vars ()
$ vars [] = "referrer";
$ vars [] = "kampanya";

// sa rc_add_rewrite_rules ()
$ new_rules = array ('referrer / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = my-page & referrer = $ match [1] & kampanya = $ match [ 2] ');

Huwag kalimutan na kailangan mo ng module ng mod_rewrite ng PHP na gumamit ng muling pagsulat ng url.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map