如何删除结果末尾的逗号?

时间:2015-08-23 作者:nisr

我使用ACF高级自定义字段将自定义字段“authors”添加到“articles”帖子类型中。“作者”字段是一个关系字段,它将文章的帖子类型与作者的帖子类型关联起来。我想以以下形式显示此自定义字段的值:author one,author two因此,我从ACF文档中找到了以下代码:

<?php 
$posts = get_field(\'relationship_field_name\');
if( $posts ): ?>
    <ul>
    <?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) ?>
        <?php setup_postdata($post); ?>
        <li>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
            <span>Custom field from $post: <?php the_field(\'author\'); ?></span>
        </li>
    <?php endforeach; ?>
    </ul>
    <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
<?php endif; ?>
但是,此代码将结果显示为列表。因此,我尝试将代码修改为:

<?php 
$posts = get_field(\'author_name\');
if( $posts ): 
    echo \'\' . \' <img src="aut.png" alt="authors" height="20" width="20">\' . \' \' ;
?>
    <?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) ?>
        <?php setup_postdata($post); ?>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>,         
    <?php endforeach; ?>
    <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
<?php endif; ?>
实际上,这段代码以我想要的形式给了我结果(author one,author two,),但是,我需要删除结果末尾的逗号\',(author one,author two)。我知道我需要echo rtrim($post,\' ,\') 功能,但我不知道怎么做。有什么建议吗?

1 个回复
最合适的回答,由SO网友:EAMann 整理而成

这不是WordPress的问题,但由于您使用的是循环,很多人会认为这是WordPress特有的。也就是说,解决方案是使用PHP的原生数组到字符串转换实用程序。

您需要使用以下内容,而不是您现有的代码:

<?php 
$posts = get_field( \'author_name\' );
if ( $posts ) {
    echo \'&nbsp;<img src="aut.png" alt="authors" height="20" width="20">&nbsp;\';

    $post_list = array();
    foreach ( $posts as $post ) { // variable must be called $post (IMPORTANT)
        setup_postdata( $post );
        $post_list[] = sprintf( \'<a href="%s">%s</a>\', esc_url( get_the_permalink() ), esc_html( get_the_title() ) );
    }
    wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly

    echo implode( \', \', $post_list );

}
简单地说,这将更新原始代码以执行以下几项操作:

它使用&nbsp; HTML实体,而不是试图用额外的空格连接字符串(性能更好),它构建了一个post条目数组,并使用PHP的本机implode() 用逗号将条目连接在一起sprintf() 为了使后条目生成更加干净,它对永久链接和后标题使用了适当的转义,以防止存储的XSS漏洞。同样,这些更改是普通的PHP,我们只是碰巧使用了WordPress循环和WordPress模板标记。

结束

相关推荐