web-dev-qa-db-fra.com

Catégorie en tant que classe pour le type de message personnalisé

Je viens juste de réaliser que les types d'articles personnalisés ne semblent pas afficher la catégorie en tant que classe dans la boucle, via post_class et je me demande si quelqu'un peut suggérer un moyen de contourner le problème. Est-ce quelque chose qui devrait être déclaré lorsque j'établis mon type de message ou s'agit-il d'une extension de post_class?

Par exemple, sur une publication de type post, la classe génère quelque chose du type: class="post-50434 post type-post status-publish format-standard hentry category-my-lovely-category tag-some-ace-tag", mais pour ma publication personnalisée, la catégorie n'apparaît pas.

-- MODIFIER --

Voici un extrait de mon code qui pourrait aider à clarifier ce que j'essaie de faire. Premièrement, je n'essaye pas réellement de placer la classe sur le corps, mais sur l'article dans ma boucle:

<?php $cat = get_the_category();
$parentCatName = get_cat_name($cat[0]->parent); ?>

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?> data-category="<?php echo $parentCatName; ?>" data-title="<?php the_title(); ?>">
[...]
</article>

Le problème que je rencontre est de récupérer les informations de catégorie de type de message personnalisé de la même manière que possible pour le type de message par défaut.

-- MODIFIER --

Désolé, peut-être qu'un peu de base sur ce que j'essaie de faire va aider - je vais essayer de rester bref:

  • J'utilise la structure de maçonnerie isotope

  • Je souhaite filtrer les résultats par un attribut 'data-category' ajouté à chaque publication pendant la boucle

  • Mes catégories pour plusieurs types de publication (publication, produit, cours) sont regroupées dans des catégories communes

  • Dans ma boucle, je veux donc remplir ce champ 'data-category' avec la catégorie parente

Mon problème se pose car je ne peux obtenir que la catégorie, puis la catégorie parent, pour le type de publication personnalisé par défaut, à l'aide de get_the_category.

J'espère que cela a du sens.

4
Kevin Nugent

Ceci est le comportement attendu (ou du moins conçu).

Voici une partie du Codex sur ce sujet:

Les classes CSS post_class apparaissent en fonction du post pageview Balises conditionnelles comme suit.

Catégorie
Les modèles de fichiers de catégories et les pages vues affichant les publications présentent les sélecteurs de classe:post post-id ID de catégorie ID de catégorie

Bien sûr, vous pouvez associer une fonction de filtre personnalisée au filtre post_class .

// EDIT
Selon votre question mise à jour, voici le code mis à jour:

<?php
$cat = wp_get_post_terms(get_the_ID(), 'category');
$parentCatName = get_cat_name($cat[0]->parent);
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?> data-category="<?php echo $parentCatName; ?>" data-title="<?php the_title(); ?>">
[...]
</article>

Si vous souhaitez également ajouter des classes de publication, procédez comme suit:

post_class('category-'.$parentCatName);
2
tfrommen