将内联样式添加到Get_the_Category_List

时间:2016-03-02 作者:Madeirense

我需要设计get_the_category_list() 一个标签,但似乎找不到方法。

这是我的代码:

echo \'<ul class="list-inline meta-list">\';
    // Get the categories
    $terms = get_the_terms( get_the_ID(), \'category\');

    if( !empty($terms) ) {

        $term = array_pop($terms);
        $category_color = get_field(\'category_color\', $term );
    }

    $category_list = get_the_category_list( \' \' );
    if ( $category_list ) {
        echo \'<li class="meta-categories">\' . __( \'In \', \'my_theme\' ) . $category_list . \' </li>\';
    }

echo \'</ul>\';
现在我需要添加style="color:$category_color;"get_the_category_list() 因此,每个类别在single.php 样板

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

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, 请随时提出修改建议,以便我们可以将其纳入下一个主要版本

相关推荐

Single.php页面中无限的下一个/上一个帖子

我有一个关于这个代码的问题。当最后一个条目出现在“then”中时;“下一步”;我总是显示同一页。此外,我想添加下一篇文章的缩略图和标题。有可能吗?<?php if( get_adjacent_post(false, \'\', true) ) { previous_post_link(\'%link\' , \'%title\', \'&larr; \'); } else { $first