web-dev-qa-db-fra.com

get_query_var () et liens permanents

J'ai une structure permalien qui ressemble à ceci,

% catégorie% /% postname%

J'ai un modèle category.php codé et essayant d'extraire le message d'une certaine catégorie, mon URL peut par exemple ressembler à ceci,

/ catégorie/catégorie1

Je souhaite que tous les articles de la catégorie 1 soient renvoyés. Cependant, lorsque le code suivant est utilisé, la valeur NULL est renvoyée.

get_query_var('cat')

Je suppose que ce code recherche une URL ressemblant à ceci,

? cat = category1

Alors, comment puis-je le faire fonctionner avec des permaliens?

1
sico87

WordPress réécrit les règles de manière invisible, convertit en interne de jolis permaliens au format non joli, et définit les variables appropriées et charge la page demandée. Vous n'avez rien à faire dans votre modèle pour charger des publications d'une catégorie sur une page de catégorie.

La variable de requête cat sera spécifiquement définie sur leIDde la catégorie demandée, et non sur le nom.

Cela dit, ceci:

$my_category = get_query_var('cat');
echo $my_category;

devrait imprimer l'ID de la catégorie sélectionnée sur une page de catégorie. Si ce n'est pas le cas, nous devrions voir votre code pour vous aider davantage.

Consultez également le $wp_query global pour voir tous les vars de requête définis sur une page particulière:

global $wp_query
print_r($wp_query);
5
Milo

Cela m'a aidé à obtenir ma réponse, le problème que j'ai trouvé était que l'objet de

global $wp_query

ne contenait pas d'identifiant de catégorie si les permaliens étaient activés. Cependant, il contenait un nom de catégorie, donc pour récupérer l'identifiant de catégorie, le code suivant fonctionnait pour moi.

$category = get_query_var('category_name');
$categoryid = array(get_cat_ID( $category ));

c'est particulièrement utile avec pre_get_posts

0
nidal