如何在数组中用逗号分隔术语名称?
How to separate terms name with comma in an array?
我正在尝试获取用逗号分隔的分类术语名称。这是代码,但它将分类法和术语分开:如果有很多术语,它们用 : 而不是分开,如果我删除 : 符号,则分类术语名称之间没有任何内容。
<ul class='apt-product-terms'>
<?php
$_taxonomies = array(
'taxname1' => __( 'Taxname1', 'textstringdomain' ),
'taxname2' => __( 'Taxname2', 'textstringdomain' ),
'taxname3' => __( 'Taxname3', 'textstringdomain' ),
'taxname4' => __( 'Taxname4', 'textstringdomain' )
);
foreach ($_taxonomies as $taxonomy_slug => $taxonomy_name) {
$terms = get_the_terms( $post->ID, $taxonomy_slug);
if (is_array($terms) && count($terms) > 0) { ?>
<li class='apt-tax-item'>
<span class='apt-term-name'><?php echo $taxonomy_name ?></span>
<ul class='apt-tax-term-list'>
<?php foreach ( $terms as $term ) { ?>
<li class='apt-term-item'>:
<a class='apt-term-link' href="<?php echo get_term_link($term); ?>"> <?php echo $term->name ?></a>
</li>
<?php } ?>
</ul>
</li>
<?php
}
}
?>
</ul>
哪里有问题。我认为这可能与 echo $term->name
有关
多亏了 @Chris Haas example here https://3v4l.org/oZ7JA 我以这种方式修改了我的代码,现在它可以正常工作了。
<ul class='apt-product-terms'>
<?php
$_taxonomies = array(
'taxname1' => __( 'Taxname1', 'textstringdomain' ),
'taxname2' => __( 'Taxname2', 'textstringdomain' ),
'taxname3' => __( 'Taxname3', 'textstringdomain' ),
'taxname4' => __( 'Taxname4', 'textstringdomain' )
);
foreach ($_taxonomies as $taxonomy_slug => $taxonomy_name) {
$terms = get_the_terms( $post->ID, $taxonomy_slug);
if (is_array($terms) && count($terms) > 0) { ?>
<li class='apt-tax-item'>
<span class='apt-term-name'><?php echo $taxonomy_name ?></span>: 
<ul class='apt-tax-term-list'>
<?php $idx = 0;
foreach ( $terms as $term ) {
$idx++; ?>
<li class='apt-term-item'>:
<a class='apt-term-link' href="<?php echo get_term_link($term); ?>"> <?php echo $term->name;
if($idx < count($terms)){
echo ', ';
} ?></a>
</li>
<?php } ?>
</ul>
</li>
<?php
}
}
?>
</ul>
我正在尝试获取用逗号分隔的分类术语名称。这是代码,但它将分类法和术语分开:如果有很多术语,它们用 : 而不是分开,如果我删除 : 符号,则分类术语名称之间没有任何内容。
<ul class='apt-product-terms'>
<?php
$_taxonomies = array(
'taxname1' => __( 'Taxname1', 'textstringdomain' ),
'taxname2' => __( 'Taxname2', 'textstringdomain' ),
'taxname3' => __( 'Taxname3', 'textstringdomain' ),
'taxname4' => __( 'Taxname4', 'textstringdomain' )
);
foreach ($_taxonomies as $taxonomy_slug => $taxonomy_name) {
$terms = get_the_terms( $post->ID, $taxonomy_slug);
if (is_array($terms) && count($terms) > 0) { ?>
<li class='apt-tax-item'>
<span class='apt-term-name'><?php echo $taxonomy_name ?></span>
<ul class='apt-tax-term-list'>
<?php foreach ( $terms as $term ) { ?>
<li class='apt-term-item'>:
<a class='apt-term-link' href="<?php echo get_term_link($term); ?>"> <?php echo $term->name ?></a>
</li>
<?php } ?>
</ul>
</li>
<?php
}
}
?>
</ul>
哪里有问题。我认为这可能与 echo $term->name
多亏了 @Chris Haas example here https://3v4l.org/oZ7JA 我以这种方式修改了我的代码,现在它可以正常工作了。
<ul class='apt-product-terms'>
<?php
$_taxonomies = array(
'taxname1' => __( 'Taxname1', 'textstringdomain' ),
'taxname2' => __( 'Taxname2', 'textstringdomain' ),
'taxname3' => __( 'Taxname3', 'textstringdomain' ),
'taxname4' => __( 'Taxname4', 'textstringdomain' )
);
foreach ($_taxonomies as $taxonomy_slug => $taxonomy_name) {
$terms = get_the_terms( $post->ID, $taxonomy_slug);
if (is_array($terms) && count($terms) > 0) { ?>
<li class='apt-tax-item'>
<span class='apt-term-name'><?php echo $taxonomy_name ?></span>: 
<ul class='apt-tax-term-list'>
<?php $idx = 0;
foreach ( $terms as $term ) {
$idx++; ?>
<li class='apt-term-item'>:
<a class='apt-term-link' href="<?php echo get_term_link($term); ?>"> <?php echo $term->name;
if($idx < count($terms)){
echo ', ';
} ?></a>
</li>
<?php } ?>
</ul>
</li>
<?php
}
}
?>
</ul>