我正在为Wordpress术语创建自定义链接,我已完成以下操作:
<?php $terms = get_the_terms( $post->ID, 'blog' );
if ( $terms && ! is_wp_error( $terms ) ) :
$blog_links = array();
$blog_slugs = array();
foreach ( $terms as $term ) {
$blog_links[] = $term->name;
}
foreach ( $terms as $termslug ) {
$blog_slugs[] = $termslug->slug;
}
$blog = join( ", ", $blog_links );
$blogs = join( ", ", $blog_slugs );
?>
<a href="<?php bloginfo('url'); ?>/blog/<?php echo $blogs; ?>"><?php echo $blog; ?></a>
<?php endif; ?>
这会创建网址:
http://www.domain.com/blog/news,%20guest-blogs
链接的文字看起来像这样(即它是一个链接 - 见截图):
哪个很近!我实际上想要将每个术语分成一个链接(中间有一个逗号)并制作网址http://www.domain.com/blog/news和http://www.domain.com/blog/guest-blogs。我想我错过了一个foreach
来分别输出每个链接。
有人可以帮我把最后一点纠正吗?
答案 0 :(得分:1)
可能很容易使用
<?php echo get_the_term_list( $post->ID, 'blog', '', ', ', '' ); ?>
你的代码有问题......也许这样的事情会......
<?php $terms = get_the_terms( $post->ID, 'blog' );
if ( $terms && ! is_wp_error( $terms ) ) :
$blogs = array();
foreach ( $terms as $term ) {
$blogs[] = '<a href="' . get_bloginfo('url') . '/blog/'. $term->slug .'">' . $term->name . '</a>';
}
$blog_links = join( ", ", $blogs);
echo $blog_links;
endif; ?>
答案 1 :(得分:0)
您的代码只提供一个输出a
元素,您需要修改此代码段,以便$terms
中的每个元素生成一个具有正确href和锚点的a
元素。这可能是一个解决方案
<?php
$terms = get_the_terms( $post->ID, 'blog' );
if ( $terms && ! is_wp_error( $terms ) ) :
$output = array();
foreach($terms as $term):
// Use sprintf to quickly modify the template
$output[] = sprintf("<a href='%s'>%s</a>", get_bloginfo('url') . '/blog/' . $term->slug, $term->name);
endforeach;
echo implode(', ' $output); // This is the result
endif;
?>