web-dev-qa-db-fra.com

Vérifiez si post appartient à une catégorie

Dans ma boucle de page d'accueil, j'ai quelque chose qui montrera dans quelle catégorie se trouve le message. Il va dire quelque chose comme: "Posté il y a 4 heures dans Sports par ...". Cependant, lorsqu'il n'y a pas de catégorie définie, la catégorie sera (évidemment) omise et il suffira de dire "Posté il y a 4 heures dans par ...". Ma question est la suivante: comment puis-je vérifier si un message appartient à une catégorie dans WordPress?.

Je sais que la fonction in_category() existe, mais je voudrais éviter de devoir taper toutes les catégories, au cas où elles changeraient, ou peu importe.

Merci!

2
epaps

Vous pouvez utiliser is_object_in_term() . Malgré son nom, il peut également vérifier la correspondance taxonomique si les termes sont omis.

is_object_in_term( get_the_ID(), 'category' );
4
Rarst

Au lieu d'utiliser get_category() ou ce que vous voulez, directement avec get_the_category(), vous obtiendrez simplement un tableau des catégories. Vous pouvez ensuite parcourir ces éléments et vérifier s'ils sont vides () ou non.

Peut-être quelque chose comme:

$categories = get_the_category( $post->ID );
if( is_array(categories) && count($categories) > 0 ) {
  foreach( $categories as $category ) {
    $categories_string .= $category . ", ";
  }
  $categories_string = rtrim(", ", $categories_string);
}

if( !empty( $categories_string ) ) {
  echo "Posted 4 hours ago in {$categories_string} by ...";
} else {
  echo "Posted 4 hours ago by ...";
} 

* non testé

1
editor

utilisez has_category() wp 3.1+ requis si

1
Kenny Rodríguez