web-dev-qa-db-fra.com

obtenir uniquement l'ID de la sous-catégorie

je n'ai besoin que d'un identifiant de sous-catégorie. Je reçois déjà un identifiant de sous-catégorie mais cela vient aussi avec un identifiant de catégorie principale

ci-dessous est le code

<?php while ( have_posts() ) : the_post(); ?>

<option value=".<?php
     foreach((get_the_category()) as $category) {
     echo $category->cat_ID . ' '. $category->cat_name ;
     }
     ?>">
              <?php
     foreach((get_the_category()) as $category) {
     echo $category->cat_name . ' ';
     }
     ?>

</option>
<?php endwhile; 
?>

après le code mon code rendu est comme ci-dessous

<select id="filter-select">
          <option value="*" selected="selected">all</option>
                    <option value=".15 8 ">Magdalena Venta </option>
                    <option value=".15 8 ">Bo. de la Magdalena</option>
                    <option value=".16 8 ">Juan Venta</option>
                    <option value=".17 8 ">Club de G</option>
                    <option value=".21 8 ">Fraccionamiento Viñedos Venta</option>
</select>

après la valeur, tout est l'id de la sous-catégorie, comme 15, 16, 17,21 mais 8 est l'ID de la catégorie principale. Je ne veux pas que 8 à venir.

donc principalement je veux obtenir comme ceci <option value="child category ID ">Child Category Name </option>

j'essaie encore. si je peux obtenir n'importe quelle solution, il affichera ici

2
Accore LTD

Comme vous voulez seulement un champ de formulaire select qui a une catégorie enfants, allez simplement avec wp_list_categories()

wp_list_categories( array(
    'child_of' => 'your parent cat ID',
) );

En fonction de votre cas d'utilisation, vous pouvez également utiliser

  • get_the_category() et son filtre get_the_categories

    apply_filters( 'get_the_categories', $categories );
    
  • get_the_terms() et son filtre (la fonction est appelée en interne par get_the_category():

    apply_filters( 'get_the_terms', $terms, $post->ID, $taxonomy );
    
  • get_categories() , transmettez une clé spéciale au tableau d'entrées des arguments (par exemple, my-special-list) que vous archivez ensuite dans le filtre à l'intérieur de la fonction et modifiez la sortie. La fonction appelle get_terms()after les callbacks des filtres sont appelés.

    apply_filters( 'get_categories_taxonomy', $taxonomy, $args );
    
  • get_term_children( $term_ID, 'category' )

Edit L'objet principal interrogé peut toujours être récupéré à l'aide de get_queried_object(). Et il y a une fonction pour extraire son ID: get_queried_object_id() .

1
kaiser

Je pense que vous devez l'insérer dans une instruction if supplémentaire pour éliminer les catégories qui n'ont pas de parents (IE, catégories de niveau supérieur), comme suit:

<?php while ( have_posts() ) : the_post(); ?>

<?php
     foreach((get_the_category()) as $category) {
       if($category->parent) { // check if this category has a parent
          echo '<option value="' . $category->cat_ID . ' '. $category->cat_name . '">' . $category->cat_name . '</option>'; 
       }
     } 
    endwhile; 
?>
1
Michelle

Utilisez simplement wp_dropdown_categories et utilisez child_of paramètre de la catégorie de la page actuelle.

<?php $obj_id = get_queried_object_id(); // category ID ?>
<?php wp_dropdown_categories(array(
    'child_of' => $obj_id,
    'hide_empty' => false // use this to show ALL sub-categories, even empty ones; otherwise omit this
)); ?>
0
mjakic