WordPress – vlastní GET parametry a hezké URL

Variabilita wordpressu umožňuje používání vlastních parametrů a ty dokonce zaobalit do pěkných url.

Pokud potřebujete ve wordpressu použít vlastní parametry za url, není nic lehčího než použít klasický GET formulář a parametry nacpat za url:

<form method="get" action="">
<input type="text" name="promenna" value="neco">
<button type="submit">Odeslat</button>
</form>

Výsledná url po odeslání formuláře bude vypadat takto:

http://example.com/page/?promenna=neco

Tyto GET parametry můžeme používat i bez formuláře jako samostatné URL.

V šabloně tyto parametry dostaneme klasicky přes proměnnou GET:

<?php echo $_GET["promenna"]; ?>

Super, už víme jak pracovat s GET parametry ve WordPressu – nit složitého. Výsledná url ovšem nevypadá moc hezky a mnohem lepší by byl následující tvar url:

http://example.com/page/promenna/neco/

Na modifikování URL a vytváření hezkých URL existuje ve WordPressu Rewrite API. Abychom mohli s parametrem pracovat v rámci Rewrite API, je nejdříve nutné přiřadit náš parametr mezi proměnné WP_Query. K tomu použijeme filtr query_vars. Kód zapíšeme do functions.php našeho tématu.

function theme_register_query_vars( $vars ) {
  $vars[] = 'promenna';
  return $vars;
}
add_filter( 'query_vars', 'theme_register_query_vars' );

Nyní se k naší proměnné dostaneme i přes funkci get_query_var().

WordPress už o naší proměnné ví a teď je nutné pouze upravit samotné URL.

Jelikož chceme zachovat stávající rewrite pravidla, využijeme funkci add_rewrite_endpoint(). Funkce bere pouze název našeho parametru a masku pro jednotlivé typy URL.

function theme_rewrite_end_point() {
  add_rewrite_endpoint( "promenna", EP_ALL );
}
add_action('init', 'theme_rewrite_end_point', 10, 0);

Nyní bude adresa http://example.com/page/promenna/neco/ fungovat stejně jako adresa http://example.com/page/?promenna=neco a to bez toho, aniž by nám WordPress hodil 404.

 

Edit: Je ještě nutné uložit trvalé odkazy v nastavení!

Líbí se ti tento článek? Sdílej ho s přáteli!
Aby mohl vecnykritik.cz fungovat, je nutno zaplatit aspoň hosting. Můžeš si tedy vypnout adblock a podpořit tento projekt?

Žádný komentář

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *


*