WordPress masque ou affiche la catégorie de la boucle dans certains cas

Publié par Jean-Michel le

Je souhaite exclure une certaine catégorie par défaut dans la liste des publications affichées sur la page d’accueil. J’ai découvert comment je peux le faire proprement avec le crochet pre_get_posts. Cela fonctionne bien et les messages de catégorie ne s’affichent pas.
Maintenant, je veux afficher ces messages de catégorie UNIQUEMENT si j’interroge spécifiquement pour cette catégorie. Ainsi, soit tous les messages qui ne sont pas dans cette catégorie sont affichés (par défaut), soit seuls les messages de ce chat et rien d’autre. Je pensais que la solution est simple, mais mon code ne fonctionne pas:

//Don't show posts with cat id 6
$excluded = array('6');

//Retrieve category parameter from current query
$categ = get_query_var('cat');

//If the current query doesn't ask for cat 6 specifically,
//exclude this category
if ($categ != '6') {
    set_query_var('category__not_in', $excluded);
}

Mais lorsque j’interroge pour la catégorie spécifique, rien n’est toujours affiché, donc apparemment mon instruction if est fausse? Je pensais que lorsque j’interrogeais la catégorie, get_query_var(‘cat’) renverrait l’identifiant du chat ?

Solution n°1 trouvée

Trouvé la réponse via https://wordpress.stackexchange.com/questions/26889/get-query-var-and-permalinks

Apparemment, lors de l’utilisation de jolis permaliens, WordPress fait des choses internes telles que l’ID de catégorie n’est pas défini dans la requête, mais plutôt le nom de la catégorie. J’ai donc simplement changé la résolution de catégorie pour

$categ = get_cat_ID(get_query_var('category_name'));

et ça marche bien. Encore une idée de WordPress pour embêter les développeurs lol

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *