カスタム分類法のタームチルドレンを表示したいです。現在、 get_term_children を使用してこれを実行できますが、これを使用すると、子と孫が表示されます。これを避けて、直接の子のみを表示するようにします。
これは私が今持っているものです(しかしそれは子供と孫を出力します):
<?php
$term_id = get_queried_object_id();
$taxonomy_name = 'mytaxname';
$termchildren = get_term_children( $term_id, $taxonomy_name );
foreach ( $termchildren as $child ) {
$term = get_term_by( 'id', $child, $taxonomy_name );
echo ' <div class="product-archive">';
echo '<div class="post-title">
<h3 class="product-name"><a href="' .get_term_link( $term, $taxonomy_name ). '">' .$term->name. '</a></h3>
</div>
</div>'; }
?>
これは私が仕事に就こうとしているものですので、それは直接の子供たちだけを示しています:
<?php
$term_id = get_queried_object_id();
$taxonomy_name = 'mytaxname';
$args = array('parent' => $term_id,'parent' => $term_id );
$termchildren = get_terms( $taxonomy_name, $args);
foreach ( $termchildren as $child ) {
$term = get_term_by( 'id', $child, $taxonomy_name );
echo ' <div class="product-archive">';
echo '<div class="post-title">
<h3 class="product-name"><a href="' .get_term_link( $term, $taxonomy_name ). '">' .$term->name. '</a></h3>
</div>
</div>'; }
?>
これによりエラーが発生します。
キャッチ可能な致命的エラー:クラスWP_Errorのオブジェクトを...の文字列に変換できませんでした /
私は何をしましたか?
ありがとうございます。
代わりに get_terms()
関数を使用してください。
$term_children = get_terms(
'mytaxname',
array(
'parent' => get_queried_object_id(),
)
);
if ( ! is_wp_error( $terms ) ) {
foreach ( $term_children as $child ) {
echo '
<div class="product-archive">
<div class="post-title">
<h3 class="product-name"><a href="' . get_term_link( $child ) . '">' . $child->name . '</a></h3>
</div>
</div>
';
}
}
get_terms()
はWP_Errorオブジェクトを返す可能性があるので、そうでないことを確認する必要があります。これはtermオブジェクトの配列を返すので、get_term_by()
を使ってオブジェクトを取得する必要はもうありません。 $child
はtermオブジェクトなので、get_term_link()
は2番目のパラメータを必要としません。 get_terms()
には2番目のパラメータのためのより多くのオプションがあります。あなたは見てみるべきです。