我有以下代码来显示单个帖子的类别名称。我的类别以复数形式命名(即文章、信件、翻译、评论等),但在此函数中,我希望返回名称的单数版本,即文章、信件、翻译、评论等)。
$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”?
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 ); ?>```