Mám strukturu permalink, která vypadá takto,
% category% /% postname%
Mám šablonu kategorie.php kódovanou nahoru a snaží se vytáhnout příspěvek určité kategorie, takže například adresa URL může vypadat takto,
/ kategorie/kategorie1
Chci vrátit všechny příspěvky, které jsou v kategorii 1, ale při použití následujícího kódu se vrátím null
get_query_var('cat')
Předpokládám, že tento kód hledá adresu URL, která vypadá takto:
? cat = category1
Jak to, aby to fungovalo s permalinky?
WordPress přepíše pravidla neviditelně překládat docela permalinks na non-pěkný formát interně, a nastavit příslušné proměnné a načíst požadovanou stránku, nemusíte dělat nic v šabloně načíst příspěvky z kategorie na stránce kategorie.
Parametr cat
query specificky bude nastaven na ID požadované kategorie, nikoli na jméno.
To říká:
$my_category = get_query_var('cat');
echo $my_category;
má vytisknout vybrané ID kategorie na stránce kategorie. Pokud tomu tak není, museli bychom vidět váš kód, který vám pomůže dále.
Podívejte se také na $wp_query
global, abyste viděli všechny vars dotazů nastavené na konkrétní stránce:
global $wp_query
print_r($wp_query);
To mi pomohlo získat odpověď, problém, který jsem zjistil, byl ten, odkud objekt pochází
global $wp_query
pokud bylo zapnuto permalinks, neobsahoval ID kategorie. Nicméně obsahoval název kategorie, takže pro získání ID kategorie pro mě pracoval následující kód.
$category = get_query_var('category_name');
$categoryid = array(get_cat_ID( $category ));
to je užitečné zejména u pre_get_posts