从Get_the_类别中去掉最后一个逗号

时间:2013-02-26 作者:andy

foreach((get_the_category()) as $category) {
    echo $category->cat_name . \', \';

}
所以我这样回应它,因为我不希望类别显示为超链接,我只想要猫的名字。

问题是我无法去掉最后一个分隔符,所以它最终会变成:类别,类别,类别,

我试着“剥离”它(php严重混淆了我的小设计思维)

foreach((get_the_category()) as $category) {
    echo $category->cat_name . \', \';
    echo rtrim($category, ", ");
}
但这并没有修剪它。

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

有两种方法可以解决这个问题。这两种类型都需要一个干净的类别名称数组,所以让我们从以下内容开始:

$cat_names = wp_list_pluck( get_the_category(), \'cat_name\');
$cat_names 现在是一个仅包含以下名称的数组:

Array
(
    [0] => aciform
    [1] => Cat A
    [2] => Cat B
    [3] => Cat C
    [4] => sub
)
现在,您可以使用以下简单方法:

echo join( \', \', $cat_names );
结果:aciform、Cat A、Cat B、Cat C、sub

但我的建议是使用语法正确的列表wp_sprintf_l():

echo wp_sprintf_l( \'%l\', $cat_names );
结果:aciform、Cat A、Cat B、Cat C和sub

wp_sprintf_l() 将为最后两项使用本地化分隔符,因此在德国站点中,这将输出:aciform、Cat a、Cat B、Cat C und sub。

您甚至不必关心正确的翻译,正确的分隔符是常规语言文件的一部分。

SO网友:RiaanZA

还有另一种方法可以使用CSS和伪选择器来添加逗号。您只需将每个类别包装在HTML标记中,例如:

foreach((get_the_category()) as $category) {
    echo \'<span class="category">\' . $category->cat_name . \'<span>\';
}
然后使用CSS:

.category:not(:last-child)::after {
    content: ",";
}
编辑:此解决方案仅适用于支持这些伪选择器(即9及以上)的浏览器

结束