このループにすべての子カテゴリを表示させようとしていますが、コードに苦労しています。これが私のこれまでのところです。
<?php $args=array('orderby' => 'name', 'order' => 'ASC');
$categories=get_categories($args);
foreach ($categories as $cat) { ?>
<dt><a href="#" class="customer-acquisitiontop" id="<?php echo $cat->slug; ?>" data-filter=".<?php echo $cat->slug; ?>"><h2><?= $cat->cat_name; ?></h2></a></dt>
<dd><div class="services">
<?= $categories=get_categories('parent'); ?> /*This should be the children of the parent category */
</div>
</dd>
<?php } ?>
任意の助けは素晴らしいだろう
文字列 "parent"を get_categories
に渡すだけではいけません。あなたは親のIDを渡さなければなりません。
$categories=get_categories(
array( 'parent' => $cat->cat_ID )
);
2つの 似ているが等しくない "get child"パラメータ があることに注意してください。
child_of(integer)IDで識別されるカテゴリの子孫(つまり子供と孫)であるすべてのカテゴリを表示します。このパラメータにはデフォルトはありません。このパラメータを使用すると、hide_emptyパラメータはfalseに設定されます。
parent(integer)IDで識別されるカテゴリの直接の子孫であるカテゴリ(つまり子のみ)を表示します。これは 'child_of'パラメータのようには動作しません。このパラメータにはデフォルトはありません。 [2.8.4に]
今度は$categories
をループする必要があります。あなたはただ配列をエコーすることはできません。
foreach ($categories as $c) {
var_dump($c);
// what you really want instead of var_dump is something to
// to create markup-- list items maybe, For example...
echo '<li>'.$c->cat_name.'</li>';
}
下記のarchive.phpファイルのコードを使用してください。このコードはあなたを助けます:
<?php
$term = get_queried_object();
$children = get_terms( $term->taxonomy, array(
'parent' => $term->term_id,
'hide_empty' => false
) );
if ( $children ) {
foreach( $children as $subcat )
{
echo '<li><a href="' . esc_url(get_term_link($subcat, $subcat->taxonomy)) . '">' . $subcat->name . '</a></li>';
}
}
?>