WordPress:删除标签列表的最后一个逗号

djp7away  于 2023-06-21  发布在  WordPress
关注(0)|答案(4)|浏览(98)

我已经创建了一个自定义的foreach输出,它可以帮助我为每篇文章提供一个标签id。我用逗号分隔每个标签。但是,最后一个标签也输出一个逗号,如下所示:
kittens,dogs,parrots,(<-- last comma)
我应该如何修改foreach输出,以便删除最后一个逗号,使其显示如下:
小猫小狗鹦鹉
代码如下:

<?php
$posttags = get_the_tags();
if ($posttags) {
    foreach($posttags as $tag) {
        echo '<a href="';
        echo bloginfo(url);
        echo '/?tag=' . $tag->slug . '" class="tag-link-' . $tag->term_id . '">' . $tag->name . '</a>, ';
    }
}
?>
sbdsn5lh

sbdsn5lh1#

implode是你的朋友,如果你不想成为Shlemiel the painter

$posttags = get_the_tags();
if ($posttags) {
   $tagstrings = array();
   foreach($posttags as $tag) {
      $tagstrings[] = '<a href="' . get_tag_link($tag->term_id) . '" class="tag-link-' . $tag->term_id . '">' . $tag->name . '</a>';
   }
   echo implode(', ', $tagstrings);
}

// For an extra touch, use this function instead of `implode` to a better formatted string
// It will return "A, B and C" instead of "A, B, C"
function array_to_string($array, $glue = ', ', $final_glue = ' and ') {
    if (1 == count($array)) {
        return $array[0];
    }
    $last_item = array_pop($array);
    return implode($glue, $array) . $final_glue . $last_item;
}
kulphzqa

kulphzqa2#

你可以用rtrim来实现。

<?php
$posttags = get_the_tags();
if ($posttags) {
    foreach($posttags as $tag) {
        $output.='<a href="';
        $output.= bloginfo(url);
        $output.= '/?tag=' . $tag->slug . '" class="tag-link-' . $tag->term_id . '">' . $tag->name . '</a>, ';
    }
    echo rtrim($output, ', ');
}
?>
n9vozmp4

n9vozmp43#

尝试这样的事情?

<?php
$posttags = get_the_tags();
if ($posttags) {
    $loop = 1; // *
    foreach($posttags as $tag) {
        echo '<a href="';
        echo bloginfo(url);
        if ($loop<count($posttags)) $endline = ', '; else $endline = ''; // *
        $loop++ // *
        echo '/?tag=' . $tag->slug . '" class="tag-link-' . $tag->term_id . '">' . $tag->name . '</a>' . $endline;
    }
}
?>

编辑

<?php
$posttags = get_the_tags();
if ($posttags) {
    $tagstr = '';
    foreach($posttags as $tag) {
        $tagstr .= '<a href="';
        $tagstr .= bloginfo(url);
        $tagstr .= '/?tag=' . $tag->slug . '" class="tag-link-' . $tag->term_id . '">' . $tag->name . '</a>';
    }
    $tagstr = substr($tagstr , 0, -2);
    echo $tagstr ;
}
?>
gr8qqesn

gr8qqesn4#

在WordPress 6.2.2版中删除逗号变得比以往任何时候都容易。我尝试了上面列出的所有解决方案,但没有一个解决我的问题。所以我必须分享最简单的解决方案。
将单篇文章模板编辑为以下内容

之前

<?php if ( is_single() ) {
            echo get_the_tag_list( sprintf('<footer class="entry-meta"><span class="tag-links"><span class="label">%s:</span> ', esc_html__('Tags', 'newscard') ), ', ', '</span><!-- .tag-links --></footer><!-- .entry-meta -->' );
        }
         wp_link_pages( array(
            'before'            => '<div class="page-links">' . esc_html__( 'Pages: ', 'newscard' ),
            'separator'         => '',
            'link_before'       => '<span>',
            'link_after'        => '</span>',
            'after'             => '</div>'
        ) ); ?>

之后

<?php if ( is_single() ) {
            echo get_the_tag_list( sprintf('<footer class="entry-meta"><span class="tag-links"><span class="label">%s:</span> ', esc_html__('Tags', 'newscard') ), ' ', '</span><!-- .tag-links --></footer><!-- .entry-meta -->' );
        }
         wp_link_pages( array(
            'before'            => '<div class="page-links">' . esc_html__( 'Pages: ', 'newscard' ),
            'separator'         => '',
            'link_before'       => '<span>',
            'link_after'        => '</span>',
            'after'             => '</div>'
        ) ); ?>

一旦你发现了变化,就立即评论。我希望这对你也有效。

相关问题