我使用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,\' ,\')
功能,但我不知道怎么做。有什么建议吗?
最合适的回答,由SO网友:EAMann 整理而成
这不是WordPress的问题,但由于您使用的是循环,很多人会认为这是WordPress特有的。也就是说,解决方案是使用PHP的原生数组到字符串转换实用程序。
您需要使用以下内容,而不是您现有的代码:
<?php
$posts = get_field( \'author_name\' );
if ( $posts ) {
echo \' <img src="aut.png" alt="authors" height="20" width="20"> \';
$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 );
}
简单地说,这将更新原始代码以执行以下几项操作:
它使用
HTML实体,而不是试图用额外的空格连接字符串(性能更好),它构建了一个post条目数组,并使用PHP的本机implode()
用逗号将条目连接在一起它使用sprintf()
为了使后条目生成更加干净,它对永久链接和后标题使用了适当的转义,以防止存储的XSS漏洞。同样,这些更改是普通的PHP,我们只是碰巧使用了WordPress循环和WordPress模板标记。