0

我正在寻找为我的 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/newshttp://www.domain.com/blog/guest-博客。我想我缺少一个foreach单独输出每个链接的方法。

有人可以帮我把最后一点弄对吗?

4

2 回答 2

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; ?>
于 2013-01-15T09:44:44.963 回答
0

您的代码仅提供一个输出a元素,您需要修改此代码段,以便其中的每个元素$terms生成一个a具有正确 href 和锚点的元素。这可能是一种解决方案

<?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; 
?>
于 2013-01-15T09:55:47.187 回答