get_the_category_list()
没有任何过滤器来实现您的目标。您当前需要类似PHP的preg_replace()
更改定位标记。最大的问题是获取当前链接的术语对象,在我看来,这将使其变成一个相当混乱的过程。
但是,您可以编写自己的函数来实现相同的功能
function wpse_219554_term_list()
{
$post = get_post();
$separator = \' \';
$output = [];
$post_categories = get_the_category( $post->ID );
if ( $post_categories ) {
foreach( $post_categories as $post_category ) {
$category_color = get_field( \'category_color\', $post_category );
$output[] = \'<li class="meta-category">
<a style="color:\' . $category_color . \';" href="\' . esc_url( get_category_link( $post_category ) ) . \'" alt="\' . esc_attr( sprintf( __( \'View all posts in %s\', \'mytheme\' ), $post_category->name ) ) . \'">
\' . esc_html( $post_category->name ) . \'
</a>
</li>\';
}
if ( $output )
echo implode( $separator, $output );
}
}
编辑2016年3月8日
get_the_category_link()
非常混乱且重复性很强,因此我提交了一份trac记录单,以便对代码进行可能的清理和微优化。
我还建议了一种新的过滤器,the_category_list_links
, 可用于根据类别单独过滤类别链接。如果这被核心所接受,我们可以根据OP的需要使用过滤器来过滤链接,这样就可以了
add_filter( \'the_category_list_links\', function ( $the_link_list, $category, $cat_parents )
{
$category_color = get_field( \'category_color\', $category );
if ( !$category_color )
return $the_link_list;
$the_link_list = str_replace( \'<a\', \'<a style="color:\' . $category_color . \'"\', $the_link_list );
return $the_link_list;
}, 10, 3 );
您可以阅读当前
trac ticket #36171, 请随时提出修改建议,以便我们可以将其纳入下一个主要版本