web-dev-qa-db-fra.com

Liste des catégories spécifiques du poste actuel avec la profondeur

Cela fait quelque temps déjà que je suis sur ce sujet et que j'ai eu énormément de problèmes pour trouver le moyen de faire ce que j'essaie de faire.

Un exemple serait comme suit:

J'ai une image en vedette avec un survol et je veux qu'elle montre un enfant de la catégorie unique de la catégorie parent ayant une profondeur de 2 pour l'emplacement.

Cela ressemblerait à ceci:

Lieux -> USA -> Washington D.C

J'essaie d'obtenir simplement le Washington DC ou la ville qui serait sélectionnée dans le poste pour la catégorie.

Je réutiliserais ceci dans la boucle pour différentes informations, chacune pouvant avoir sa propre profondeur et devant figurer dans une liste.

Pour le moment, j'utilise ce code, qui ne fonctionne pas comme prévu, car il attirera toutes les catégories enfants sous le parent spécifié.

<?php 
  foreach((get_the_category()) as $childcat) { 
    if (cat_is_ancestor_of('51', $childcat)) { 
       echo '<li> <a href="'.get_category_link($childcat->cat_ID).'">'; echo $childcat- >cat_name . '</a> </li>'; 
       }
    } 
?>

Toute aide serait super utile, je suis coincé sur ce point pour les 3 derniers jours.

A tenté:

<?php
   $categories = get_the_category();
 if ( $categories ) :
 $deepChild = getLowestCategory( $categories );
  ?>
 <a href="<?php echo get_category_link( $deepChild->term_id ); ?>" title="<?php echo sprintf( __( "View all posts in %s" ), $deepChild->name ); ?>"><?php echo $deepChild->name; ?></a>
 <?php 
 endif;
?>

avec la fonction de l'autre poste.

1
espnicholas

Cela prend toutes les catégories associées à votre message et vérifie s’ils sont parents d’autre chose. Si ce n'est pas le cas, c'est la catégorie la plus basse et elle est répercutée.

<?php
    $postCats = wp_get_post_categories(); 
    foreach($postCats as $childcat) { 

        //this is a top level category

        if ($childcat->category_parent==0) {
            continue;
        }

        for ($J=0;$J<sizeof($postCats);$J++) {

            //if another category lists it as its parent, it cannot be the lowest category 
            if (strcmp($childcat->name,$postCats->category_parent)==0)
                break;
        }

        //at this point, no other cateogry says it's its parent, therefore it must be the lowest one

        echo '<li> <a href="'.get_category_link($childcat->cat_ID).'">'; 
        echo $childcat->cat_name . '</a> </li>'; 
    } 

?>
0
fdsa