我一直在商店里使用产品标签作为产品的品牌。我在网上找到的以下代码一直工作正常(直到最近更新woocommerce和WP)才能在我的"品牌"页。它列出了每个特定类别信件下的所有品牌。
突然没有生成任何URL,其他所有内容都应该填充。我真的无法找到问题。我尝试将get_terms
修改为get_terms(array('taxonomy'=>'product_tag'))
,但它也无效。
这是我的代码:
$list = '';
$tags = get_terms( 'product_tag' );
$groups = array();
if( $tags && is_array( $tags ) ) {
foreach( $tags as $tag ) {
$first_letter = strtoupper( $tag->name[0] );
$groups[ $first_letter ][] = $tag;
}
if( !empty( $groups ) ) {
foreach( $groups as $letter => $tags ) {
$list .= "\n\t" . '<div class="brand_category_container">';
$list .= "\n\t" . '<h4 class="cateogry_letter">' . apply_filters( 'the_title', $letter ) . '</h2>';
$list .= "\n\t" . '<ul>';
foreach( $tags as $tag ) {
$url = get_tag_link( $tag->term_id );
$count = intval( $tag->count );
$name = apply_filters( 'the_title', $tag->name );
$list .= "\n\t\t" . '<li><a class="category_links" href="' . $url . '">' . $name . '</a></li>';
}
$list .= "\n\t" . '</ul></li>';
$list .= "\n\t" . '</div>';
}
}
} else $list .= "\n\t" . '<p>Sorry, but no tags were found</p>';
在我的产品页面上我列出了
的品牌$tag_count = sizeof( get_the_terms( $post->ID, 'product_tag' ) );
?>
<div class="single_productbrand">
<?php echo $product->get_tags( ', ', '<span class="brand_as">' . _n( '', '', $tag_count, 'woocommerce' ) . ' ', '</span>' ); ?>
</div>
它可以正常工作
如何取回网址?
答案 0 :(得分:1)
代码中与product tag terms links
相关的主要问题是这一行:
$url = get_tag_link( $tag->term_id );
需要替换为需要2个参数的
get_term_link()
WordPress函数,术语对象(或术语ID)和分类。
正如您现在所知,产品标签是自定义分类 'product_tag'
...
同样在您的代码中,即使它有效,您最好使用不同的变量名称,因为您在两个具有不同值的不同部分中使用$tags
变量名称。
所以你重新访问的功能代码将是:
$taxonomy = 'product_tag';
$tags = get_terms( $taxonomy );
if( $tags && is_array( $tags ) ) {
foreach( $tags as $tag ) {
$first_letter = strtoupper( $tag->name[0] );
$groups[ $first_letter ][] = $tag;
}
if( !empty( $groups ) ) {
$list = '';
foreach( $groups as $letter => $letter_tags ) {
$list .= "\n\t" . '<div class="brand_category_container">';
$list .= "\n\t" . '<h4 class="cateogry_letter">' . apply_filters( 'the_title', $letter ) . '</h2>';
$list .= "\n\t" . '<ul>';
foreach( $letter_tags as $tag ) {
$term_link = get_term_link( $tag->term_id, $taxonomy );
$count = intval( $tag->count );
$name = apply_filters( 'the_title', $tag->name );
$list .= "\n\t\t" . '<li><a class="category_links" href="' . $term_link . '">' . $name . '</a></li>';
}
$list .= "\n\t" . '</ul></li>';
$list .= "\n\t" . '</div>';
}
}
}
else $list .= "\n\t" . '<p>Sorry, but no tags were found</p>';
// Output
echo $list;
这次Urls指向正确的路径......
答案 1 :(得分:0)
感谢回答LoicTheAztec
,它帮助我解决了问题但是当我用intval转换id时。
注意:让我告诉你,当我将WordPress更新到4.9版本时,这发生了,否则get_tag_link对我来说非常好。 再次感谢