如何显示单数形式的类别名称?

时间:2020-04-18 作者:Jon Fergus

我有以下代码来显示单个帖子的类别名称。我的类别以复数形式命名(即文章、信件、翻译、评论等),但在此函数中,我希望返回名称的单数版本,即文章、信件、翻译、评论等)。

$categories = get_the_terms( $post->ID, \'category\' );
if( !empty( $categories ) && !is_wp_error( $categories ) ) {    
    foreach( $categories as $category ) {
        $catdisplay = sprintf(
            \'<a target="_blank" href="%1$s">%2$s</a>%3$s\',
            esc_url( get_term_link( $category ) ),
            esc_html( $category->name ),
            \'<span class="cat-sep">, </span>\'
        ); 
        echo sprintf( esc_html__( \'%s\', \'textdomain\' ), $catdisplay );
    }
}
我想用以下逻辑构建一些东西:如果name=“articles”return“article”,或者如果name returned=“commentaries”return“commentation”,但我不确定如何实现这一点,或者是否有更好的方法。我也愿意采用更好的方法来构造上述代码。

编辑:是否可以使用strpos()str_replace() 或类似功能?i、 e.如果%2$s=“Articles”替换为“Article”?

1 个回复
SO网友:Josh H

对于原始帖子的代码设置,这并不是一个确切的答案,但由于我是根据标题来回答相同的问题的,因此我将使用ACF提供我的不太优雅的解决方案(尽管对于常规自定义字段也可以这样做):

TO DISPLAY A SINGULAR VERSION OF YOUR CATEGORY NAME (将产品cat用于woo的示例):

为类别存档设置自定义字段

将其命名为单数

使用以下内容在模板中实现自定义字段(未测试,但代码是使用ACF主题代码插件生成的):

// Define taxonomy prefix eg category
// Use term for all taxonomies
$taxonomy_prefix = \'product_cat\';

// Define term ID
// Replace NULL with ID of term to be queried eg \'123\'
$term_id = NULL;

// Example: Get the term ID in a term archive template
// $term_id = get_queried_object_id();

// Define prefixed term ID
$term_id_prefixed = $taxonomy_prefix .\'_\'. $term_id;
?>

<?php the_field( \'singular_name\', $term_id_prefixed ); ?>```