如何为列表的最后一项定义分隔符?

时间:2013-11-22 22:27:09

标签: php wordpress

我使用以下代码(特别是以<p class="category">开头的行)来打印自定义投资组合存档中每个帖子的相应类别。

我如何修改代码,以便在最后一个代码中,除了逗号之外,还使用了&符号?通过这种方式,我可以打印“身份,打印和网页设计”,而不是“身份,打印,网页设计”。

代码:

    <?php  if ( have_posts() ) : $count = 0;
    while ( have_posts() ) : the_post(); $count++;
    $classes = 'portfolio-item item-' . $count;
    if ( $count % 3 == 0 ) {
        $classes .= ' ie-col3';
    }
    if ( !has_post_thumbnail() || post_password_required() ) {
        $classes .= ' no-thumb';
    } ?>
    <div class="<?php echo $classes; ?>">
        <?php if ( has_post_thumbnail() && !post_password_required() ) { ?>
        <a href="<?php the_permalink() ?>" rel="bookmark" class="thumb"><?php the_post_thumbnail( $thumbnail ); ?></a>
        <?php } ?>
        <a href="<?php the_permalink() ?>" rel="bookmark" class="title-overlay"><?php the_title() ?></a>

        <p class="category"><?php echo strip_tags(get_the_term_list( $post->ID, 'portfolio_category', '' , ', ')); ?> Design</p>

    </div>

    <?php endwhile; ?>

    <?php portfoliopress_content_nav(); ?>

    <?php else: ?>

        <h2 class="title"><?php _e( 'Sorry, no posts matched your criteria.', 'portfoliopress' ) ?></h2>

<?php endif; ?>

2 个答案:

答案 0 :(得分:0)

我使用此功能以类似的方式显示类别。诀窍是创建一个空数组并将您的类别添加到该数组。

要插入逗号,请使用implode(', ', $array)创建:红色,蓝色,绿色

如果要添加&符号,可以使用array_pop($array)删除最后一个元素。只需检查阵列的长度是否至少为3。

// Display categories tagged by the post.
if (get_the_category()) {

  // Add our categories to a new array
  $category_list = array();

  // Sift through every category, optionally doing some maintenence.
  foreach(get_the_category() as $cat) {
    if ( $cat->name == 'uncategorized' ) continue; // Skip uncategorized category

    // Create an <a> element for our category
    $category_list[] = sprintf( '<a href="%s" title="View all posts in %s">%s</a>',
        esc_attr( get_category_link( $cat->term_id ) ),
        esc_attr( $cat->name ),
        $cat->name
    );
  }

  // If we have multiple categories, display a list
  if (count($category_list) > 2) {
      // Take the last category off, then add it on after an ampersand.
      $last_category = array_pop($category_list);

      echo sprintf( 'Categories: %s &amp; %s'
          implode(', ', $category_list),
          $last_category
      );
  } else {
      if (count($category_list) > 1)
        echo 'Categories: ', implode(', ', $category_list);
      elseif (count($category_list) == 1)
        echo 'Category: ', $category_list[0];
  }
}

答案 1 :(得分:0)

两次查看帖子列表。第一次只得到总计数,没有处理数据。第二次,看看伯爵。当你到达最后一个项目的旁边时,不要使用','使用'&amp;'。