Rozhraní API pro přepis WordPress

WordPress má opravdu užitečné API s názvem „ přepsat API“. Myslím, že již mají „přepisování URL“, to je proces, díky kterému jsou adresy URL čitelnější. Například adresa URL napsaná takto: http://mysite.com/?page=12&category=12&author=47 není tak dobře vypadající. Je těžké si to zapamatovat a vyhledávacím strojům se to moc nelíbí. Proto má téměř každý CMS vestavěnou funkci, která „přepisuje“ adresy URL tak, aby vypadaly takto: http://mysite.com/category/business/finance.


Přepsat API a třídu WP_Rewrite

Uvnitř WordPress je tento proces známý také jako permalinková struktura. Když přepnete z výchozí permalinkové struktury na vlastní strukturu, automaticky aktivujete přepisovací API. Toto je plně automatické. Někdy však musíte vytvořit vlastní pravidla přepisování.

V tomto příspěvku se chystáme vytvářet jednoduché funkce a vytvářet jednoduché vlastní pravidlo přepisování. Řekněme, že chceme získat hodnotu referrer, což odpovídá $ _GET [‘referrer].

Pokud se podíváme na Codex, můžeme vidět na stránce přepisu API, že toto API má 6 vestavěných funkcí. Nejčastějším použitím přepisování je použití těchto funkcí, o tom je spousta tutoriálů, proto místo funkcí budu používat filtry. Protože ano, API pro přepis lze použít také s filtry! Tyto filtry jsou uvedeny na seznamu WP_Rewrite class Stránka Codex.

Přidání nového dotazu Var

Chcete-li začít, musíme vytvořit funkci, která sdělí WordPress, že je nastaveno nové pravidlo přepisování. To je práce add_rewrite_rule ()add_rewrite_tag ()  funkce, ale můžete to také provést pomocí query_vars a rewrite_rules_array filtry. K tomu je třeba vytvořit dvě funkce a dva filtry. První funkce bude jednoduše přidat novou proměnnou do filtru query_vars a druhá bude registrovat tuto novou proměnnou do globálních přepisovacích pravidel:

/ *
|--------------------------------------------------------------------------
| Začněte přepisovat. Ukázka: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// Zaregistrujte novou var
funkce rc_add_query_vars ($ vars) {
$ vars [] = "referrer"; // název var, jak je vidět v URL
návrat $ vars;
}

// Zavěste naši funkci do query_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Přidat nové pravidlo pro přepisování k existujícím
funkce rc_add_rewrite_rules ($ rules) {
$ new_rules = array ('referrer / ([^ /] +) /? $' => 'index.php? referrer = $ match [1]');
$ rules = $ new_rules + $ rules;
návratová pravidla $;
}

// Zavěšení funkce do rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');

Jakmile přidáte tento kód do libovolného souboru pluginu nebo do souboru motivů. Php, přejděte do nastavení> Permalinky a uložte strukturu permalinks. Tato akce je nutná. Nyní byste měli mít přístup na svůj web s tímto druhem nebo adresou URL: http://mysite.com/referrer/vaše-jméno. Pokud chcete být přesměrováni na konkrétní stránku, změňte index.php? Referrer = $ match [1] podle index.php? Pagename = my-page & referrer = $ match [1], kde “my-page” je stránka, která má být přesměrován na slimáka.

Načítání hodnoty proměnné

Nyní, když je nastaveno pravidlo přepisování, možná budete chtít získat přístup k hodnotě proměnné. Ale pokud uděláte jednoduchý $ _GET [‚referrer ‘]], nebudete mít žádnou hodnotu. Chcete-li načíst hodnoty vars URL, musíte zavěsit funkci do filtru „template_redirect“. Připojení k filtru „init“ je příliš brzy. Poté můžete přistupovat k potřebným proměnným prostřednictvím objektu $ wp_query. Zde je rychlý příklad, jak to udělat:

// Načíst URL var
funkce rc_get_my_vars () {
global $ wp_query;

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

// Zavěšení funkce do template_redirect
add_action ('template_redirect', 'rc_get_my_vars');

Hodnotu $ referrer můžete dále opakovat nebo ji použít, jako by to bylo u normální proměnné GET.

Můžete samozřejmě upravit použít více než jednu proměnnou:

// in rc_add_query_vars ()
$ vars [] = "referrer";
$ vars [] = "campaign";

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

Nezapomeňte, že potřebujete PHP mod_rewrite modul povolit použití URL přepisování.

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