web-dev-qa-db-ja.com

サブカテゴリIDのみを取得

サブカテゴリIDのみ取得する必要があります。私はすでにサブカテゴリーIDを取得していますが、メインカテゴリーIDも付属しています

ベローズはコードです

<?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; 
?>

コードの後私のレンダリングしたコードは以下のようです

<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>

値allの後は15、16、17、21のようなサブカテゴリIDですが、 8 がメインカテゴリIDです。私はこれをしたくない 8 来ている。

だから主に私はこの<option value="child category ID ">Child Category Name </option>のようになりたいです

私はまだやっています。私が得ればそれはここに掲載されます任意の解決策を得ることができる

2
Accore LTD

カテゴリの子を持つselectフォームフィールドだけが欲しいので、単純に wp_list_categories() を付けてください。

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

あなたのユースケースに応じて、あなたも使用することができます

  • get_the_category() とそのget_the_categoriesフィルタ

    apply_filters( 'get_the_categories', $categories );
    
  • get_the_terms() とそのフィルタ(関数は内部的にget_the_category()によって呼び出されます:

    apply_filters( 'get_the_terms', $terms, $post->ID, $taxonomy );
    
  • get_categories() 、引数の入力配列(例えばmy-special-list)に特別なキーを渡し、それからそれから関数内のフィルタのコールバックをチェックインし、そこで出力を変更します。関数はget_terms()afterを呼び出し、フィルタコールバックが呼び出されます。

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

編集 メインの問い合わせ対象オブジェクトはget_queried_object()を使っていつでも取得できます。そしてそのIDを抽出する関数があります: get_queried_object_id()

1
kaiser

以下のように、親を持たないカテゴリ(IE、トップレベルカテゴリ)を排除するために、追加のifステートメントで囲む必要があると思います。

<?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

wp_dropdown_categories を使用し、現在のページのカテゴリに child_of パラメータを使用するだけです。

<?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